从输入URL到页面加载完成的过程-数据包组装过程

从输入URL到页面加载完成的过程-数据包组装过程

网络各层数据包的组装过程是比较复杂的,由于每一层都有各自的职责,所以在各层组装时的首部都会携带一些特定的标识。下面先给出一个组装图,再一一到来:

数据包组装过程

1、组装TCP报文段,TCP的全部功能都体现在它首部中各自段的作用:

解释其中几个比较重要的部分:

  • 源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个。
  • 序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置

  • 确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送发:我希望你(指发送方)下次发送的数据的第一个字节数据的编号是这个确认号。

  • 窗口大小:窗口指的是发送本报文段的一方的接收窗口,而不是自己的发送窗口。窗口值作为接收方让发送方设置其发送窗口的依据。

  • 校验和:提供额外的可靠性,检验报文段是否正确。具体如何校验,参考其他资料。

2、IP数据报组装需要首部和数据部分,数据部分即是TCP报文段。

IP 数据报的格式示意图:

IP数据报首部

解释其中几个比较重要的部分:

  • 版本:占 4 位,指 IP 协议的版本,目前的 IP 协议版本号为 4 (即 IPv4)

  • 总长度:占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU

  • 首部校验和:只检验数据报的首部,但不包括数据部分。

  • 源地址、目的地址:表示此报文段发送方的IP地址和接收方的IP地址,此时假如电脑使用wifi上网(即组成局域网),那么发送方的ip为内网IP(如192.168.1.10),可想而知,在接收方发送数据回来时,是找不到这个IP地址的,因此在出口的NAT设备上,会把此IP数据报的源IP地址换为出口IP(也就是公网IP,如119.147.215.58),那么NAT设备是如何转换的呢?
    NAT路由器的工作原理

NAT地址转换表举例

  • 在客户端的局域网内,数据包的发送是以MAC帧首部的源MAC地址和目的MAC地址来寻找机器的,而到了NAT路由器,它会解开数据包,根据转换表,把IP数据报的首部中的源IP地址替换为新的IP地址(公网IP)

3、MAC帧格式,数据链路层需要解决的问题:

  • 封装成帧(如下图)、透明传输(数据部分加入转义符,头尾加入标识符)、差错检测(CRC)

用帧首部和帧尾部进行封装成帧

以太网帧格式

  • 其中比较重要的是目的地址和源地址,这个地址就是硬件地址(网卡地址或mac地址),通过arp和rarp协议,可以把ip转换成mac地址,此时就会把源机器的mac地址和目标机器(服务器)的ip地址放于首部中。在网络中的路由器间进行传输时,路由器会不断的把mac帧首部的目的地址和源地址进行更换,以便找到下一个路由器。

mac帧传输使用硬件地址

注意:

1)、虽然在IP数据报的首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择。

2)、可以看出,传输过程中,IP数据报中的IP地址是不会变的,而MAC帧首部的源地址和目的地址要发生变化。在局域网的链路层,只能看见MAC帧。

3)、IP层抽象的互联网却屏蔽了下层这些很复杂的细节。

到此,基本完成了网络各层的封装,每层的作用基本可以体现在首部和尾部的字段中,不过我们不必较真,知道其中几个比较重要的字段就可以,因为我们关注的是数据包怎么传输(本文已可以看到解答)?

文章目录
  1. 1. 从输入URL到页面加载完成的过程-数据包组装过程
  • 1、组装TCP报文段,TCP的全部功能都体现在它首部中各自段的作用:
    1. 1. 解释其中几个比较重要的部分:
  • 2、IP数据报组装需要首部和数据部分,数据部分即是TCP报文段。
  • ,