首页 > 其他分享 >你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(中)

你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(中)

时间:2023-10-31 09:46:30浏览次数:27  
标签:网页 IP 键入 奇妙 网卡 MAC TCP 地址 数据包

引言

在之前的讨论中,我们已经对HTTP和DNS协议进行了详细的探讨,这些协议主要用于应用层的通信。然而,今天我们将把重点转移到网络层和传输层的协议上,也就是TCP/IP协议。所以,我们将深入研究这些协议的工作原理和作用。

可靠传输-TCP

HTTP是一种基于TCP协议传输的协议。在TCP传输数据之前,需要进行三次握手来建立连接。如果HTTP请求消息的长度超过了MSS(Maximum Segment Size)的限制,那么TCP就需要将HTTP数据拆分成多个块来发送,而不是一次性发送所有数据。

image

在网络中,MTU(Maximum Transmission Unit)指的是一个网络包的最大长度,例如以太网中一般为1500字节。而MSS则是在去除IP和TCP头部之后,一个网络包所能容纳的TCP数据的最大长度。

当数据长度超过MSS时,数据会被拆分成多个块,每个块的长度为MSS。每个被拆分的数据块都会被放入单独的网络包中,并在每个被拆分的数据块中添加TCP头信息,然后由IP模块来发送这些数据。

image

TCP 报文生成

TCP协议中涉及两个端口,一个是浏览器监听的端口(通常是随机生成的),另一个是Web服务器监听的端口(HTTP默认端口号为80,HTTPS默认端口号为443)。

一旦建立了连接,TCP报文的数据部分就包含了HTTP头部和数据。组装好TCP报文后,就会交给下一层的网络层来处理。

因此,网络包的报文可以用下图表示:

image

远程定位-IP

在 TCP 模块执行连接、收发、断开等操作的各个阶段,都需要委托 IP 模块将数据封装成网络包,并发送给通信对象。在 IP 协议中,需要包含源地址 IP 和目标地址 IP 两个关键信息:

  • 源地址 IP 是指客户端输出的 IP 地址,它表示数据包的发送方。
  • 目标地址 IP 是通过 DNS 域名解析获取的 Web 服务器的 IP 地址。

在进行 TCP 传输时,由于 HTTP 是经过 TCP 传输的,因此在 IP 包头的协议号字段中需要填写为 06(十六进制),表示协议为 TCP。

当客户端存在多个网卡时,即有多个 IP 地址可供选择时,需要根据具体情况来确定选用哪个 IP 地址作为源地址。这个选择过程相当于在多个网卡中判断应该使用哪个网卡来发送数据包。

为了确定源地址 IP,需要根据路由表规则进行判断。路由表规则可以指定特定的条件,如目标 IP 地址、接口优先级等,从而决定使用哪个网卡的 IP 地址作为源地址。根据路由表规则的判断结果,就可以确定应该使用哪个网卡的 IP 地址作为源地址 IP。

IP 报文生成

image

两点传输-MAC

在生成 IP 头部之后,接下来网络包还需要在 IP 头部的前面添加 MAC 头部。

MAC 头部是以太网使用的头部格式,它包含了发送方和接收方的 MAC 地址等重要信息。MAC 头部的格式包括目标 MAC 地址、源 MAC 地址、类型字段等。

在发送网络包之前,需要在 IP 头部之前添加 MAC 头部,以确保数据可以正确地在以太网中传输。MAC 头部的目标 MAC 地址指示了网络包应该传输到哪个设备,源 MAC 地址指示了数据的来源。

image

在 MAC 包头中,发送方和接收方的 MAC 地址是必须包含的信息,用于实现两点之间的传输。通常在 TCP/IP 通信中,MAC 包头的协议类型只使用以下两种:

  • 0800:表示 IP 协议
  • 0806:表示 ARP 协议

发送方的 MAC 地址获取相对简单,因为 MAC 地址是在网卡制造时写入到 ROM 中的,只需要将这个值读取出来,并写入到 MAC 包头中即可。

然而,接收方的 MAC 地址相对复杂一些。为了让以太网帮助我们将数据包发送给正确的目标,我们需要提供对方的 MAC 地址。因此,我们需要先确定应该将数据包发送给谁,这可以通过查看路由表来获得。在路由表中找到匹配的条目后,我们可以将数据包发送给网关(Gateway)列中对应的 IP 地址。

当我们不知道对方的 MAC 地址时,可以通过使用 ARP(地址解析协议)来获取。ARP 协议会以广播的形式在以太网中发送一个请求,询问所有设备:“谁是拥有这个 IP 地址的设备?请告诉我你的 MAC 地址。”然后,将会有一个设备回答:“这个 IP 地址是我的,我的 MAC 地址是XXXX。”

image

如果对方设备和我们在同一个子网中,通过上述操作就可以获取到对方的 MAC 地址。然后,我们将这个 MAC 地址写入 MAC 包头部,这样 MAC 包头部就完成了。

需要注意的是,ARP 协议只在同一个子网中有效。如果目标设备不在同一子网中,就需要借助路由器来转发数据。在这种情况下,我们需要找到网关的 MAC 地址,将其作为接收方的 MAC 地址,以便将数据包正确地发送给网关,从而实现跨子网的通信。

MAC 报文生成

image

出口-网卡

IP 生成的网络包是存放在内存中的二进制数据,无法直接发送给对方。为了将数据在网络上传输,我们需要将其转换为电信号。这个过程由网卡负责执行,而网卡驱动程序则用于控制网卡。

当网卡驱动程序从IP模块获取到网络包后,它会将其复制到网卡内的缓存区中。然后,在数据包的开头添加报头和起始帧分界符,并在末尾添加用于检测错误的帧校验序列。这样,数据包就准备好可以通过网线发送了。

image

在数据包的处理过程中,起始帧分界符起着重要的作用,它是一个特定的标记,用来表示包的起始位置。当网卡驱动程序将数据包复制到网卡的缓存区后,添加起始帧分界符,这样接收方就可以准确地确定数据包的开始位置。

另外,末尾的帧校验序列(FCS)也是非常重要的。在数据包传输过程中,可能会发生噪声、干扰或其他错误,导致数据包损坏。为了确保数据的完整性,网卡在数据包的末尾添加了FCS。接收方在接收数据包时,会利用FCS对数据包进行校验,以检测是否有损坏或错误发生。如果校验结果与FCS不匹配,接收方将知道数据包在传输过程中发生了错误。

最后,当数据包准备好之后,网卡会将其转换为电信号,并通过网线发送出去。这样,数据包就能够被目标设备接收和处理。这个过程中,网卡起到了关键的作用,确保了数据的有效传输。

总结

通过本文的探讨,我们深入研究了TCP/IP协议在网络层和传输层的工作原理和作用。我们了解到,在TCP协议中,数据需要进行三次握手来建立连接,并且在传输过程中需要将数据拆分成多个块来发送。而在IP协议中,需要确定源地址和目标地址,并根据路由表规则来选择合适的网卡的IP地址作为源地址。在MAC协议中,需要添加MAC头部来指定发送方和接收方的MAC地址,以实现两点之间的传输。最后,在网卡的作用下,将数据转换为电信号并发送出去,确保数据的有效传输。

标签:网页,IP,键入,奇妙,网卡,MAC,TCP,地址,数据包
From: https://www.cnblogs.com/guoxiaoyu/p/17779601.html

相关文章

  • 练习:ip保存网页内容
    有一个存放ip的txt文本,通过读取文本内的所有ip,然后判断该ip的80端口上面有没有部署网站,如果有,就把这个网站首页的内容写入文本首次理解1、读取文本内所有ip2、读取出来的ip拼接下80端口,再通过200状态码判断,存在就写入内容到txt中importrequests#从文本中获取ip地址with......
  • 电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
    一、介绍电影推荐管理系统。本系统使用Python作为主要开发语言,前端采用HTML、CSS、BootStrap等技术语言框架搭建展示界面,后端采用Django作为功能逻辑处理,并使用Ajax实现前端与和后端的通信。其主要实现功能如下:系统平台分为管理员和用户两个角色用户可以登录、注册、查看电影、发表......
  • 电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
    一、介绍电影推荐管理系统。本系统使用Python作为主要开发语言,前端采用HTML、CSS、BootStrap等技术语言框架搭建展示界面,后端采用Django作为功能逻辑处理,并使用Ajax实现前端与和后端的通信。其主要实现功能如下:系统平台分为管理员和用户两个角色用户可以登录、注册、查看电影......
  • 你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(上)
    当键入网址后,到网页显示,其间发生了什么在面试过程中,很可能会遇到一个常见的问题,即"当输入一个网址后,到网页显示之间发生了什么"。这个问题的确非常常见,我也喜欢问这个问题,因为它可以帮助我了解面试者对网络部分的应用知识的掌握情况,同时也能够基本囊括网络通信的整个过程。接下......
  • 解决使用mitmprox抓包可以访问网页,但是使用python request 调用该网站接口报错问题
    可能有几种原因导致这种情况。以下是一些常见的问题和可能的解决方法:证书验证问题:当你使用mitmproxy抓包时,它通常会生成自签名的SSL证书,以便进行中间人攻击检查。但在Python中使用requests库时,默认情况下,它会验证SSL证书的有效性。你需要禁用SSL验证,以便使用mitmproxy生成的证书......
  • 【Dw 网页编辑开发工具】Dreamweaver CC2018 Mac中文汉化版
    Dreamweavercc2018mac中文汉化版是Adobe公司开发的一款专门用于macOS10.11或更高系统的网页编辑开发工具,也是当前最流行、最为广泛使用的网站开发软件,大家对这款软件应该都有听说过吧,毕竟该软件在行业中的知名度非常高,并且它的编辑功能也是众所周知。软件地址:看置顶贴软件特色:1......
  • 网页图片提取网站推荐!
    如果想要下载网页里出现的图片,最简单的方法就是在图片按下右键选择「另存图片」。但若下载的图片数量较多,一个一个保存很浪费时间,就用图片下载工具辅助吧!1ImageExtractor免费的网页图片下载工具,可从任何公开页面提取图片,使用虚拟浏览器来模拟浏览效果。有别一般下载器,[ImageE......
  • 网页信噪比优化
    一.去除干扰代码优化 1.减少js直接在页面输出,js必须进行封装 2.减少css直接在页面前段使用 3.减少div嵌套 4.减少flash二.如何去除干扰文字内容1.重复的内容进行封装调用 2.精简内容 3. ......
  • 影刀RPA-天猫采集-网页监听
    1.google抓包,F12,用价格搜索 2.编写如下影刀代码,既可抓取到详情页数据 ......
  • 2023-10-26 无法访问此网站网址为 http://xxx.yy.com/ 的网页可能暂时无法连接,或者它
    新购一域名,并添加了解析,保存后若干分钟访问该域名,报错显示:原因,我给域名添加的解析地址不正确,所以导致无法找到该服务器,故而报错。看到圈中的【记录值】了吗,这里应该填你的服务器公网ip,如果填错了就无法访问。解决方案,前往你的服务器管理后台,找到域名解析的地方,重新修改解析地......