计算机网络学习02-“有效荷载”是什么,封装的流程

封装(encapsulation)

上一节中说到,应用层的消息(应用程序数据)发送到物理层,要经过封装的过程,这一节将详细介绍这个封装过程。
在介绍这个过程之前,我们需要了解报文头部。

1 报文头

UDP

用户数据报格式

  1. 源端口号:发送方端口号
  2. 目的端口号:接收方端口号
  3. 长度: UDP用户数据报的长度,最小值是8 (仅有首部)
  4. 校验和:检测UDP用户数据报在传输中是否有错,有错就丢弃
    校验和会在后面单独写一篇来讲述。

TCP

TCP段格式

  1. 源端口号: 发送方端口号
  2. 目的端口号:接收方端口号
  3. 序列号: 本报文段的数据的第一个字节的序号,为了确保连通性,对要发送的每一个字节都进行编号。序号告诉目的端,在这个序列中哪一个字节是该段的第一个字节。在连接建立时,每一方都使用随机数生成器产生一个初始序号(initialsequencenumber,ISN)通常每一个方向的ISN都不同。
  4. 确认序号: 期望收到对方下一个报文段的第一个数据字节的序号,这个 32位的字段定义了段的接收方期望从对方接收的字节号。如果段的接收方成功地接收了对方发来的字节号x,它就将确认号定义为x+1,确认和数据可捎带一起发送。
  5. 首部长度(数据偏移): TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远,即首部长度。单位: 32位,即以 4 字节为计算单位。头部的长度可以在20字节到60字节之间。
  6. 保留: 占6 位,保留为今后使用,目前应置为 0
    控制,这些位用在TCP的流量控制,连接建立和中值,连接失败和数据传送方式等方面。
  7. 紧急 URG:此位置1,表明紧急指针字段有效,它告诉系统此报文段中有紧急数据,应尽快传送
  8. 确认 ACK:仅当ACK=1 时确认号字段才有效,TCP 规定,在连接建立后所有传达的报文段都必须把 ACK 置1
  9. 推送 PSH:当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。在这种情况下,TCP 就可以使用推送 (push) 操作,这时,发送方TCP 把 PSH 置1,并立即创建一个报文段发送出去,接收方收到 PSH = 1的报文段,就尽快地(即“推送”向前)交付给接收应用进程,而不再等到整个缓存都填满后再向上交付
  10. 复位 RST: 用于复位相应的 TCP 连接
  11. 同步 SYN: 仅在三次据手建立 TCP 连接时有效。当SYN=1而ACK=0 时,表明这是一个连接请求报文段,对方若同意建立连接,则应在相应的报文段中使用 SYN 1和 ACK = 1。因此,SYN 置就表示这是一个连接请求或连接
  12. 终止 FIN: 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放运输连接
    窗口大小
  13. 窗口: 指发送本报文段的一方的接收窗口 (而不是自己的发送窗口),由接收方确定,16位意味着窗口欧最大长度是65535字节。
  14. 校验和: 校验和字段检验的范围包括首部和数据两部分,在计算校验和时需要加上 12 字节的伪头部,和UDP的一样,不同在于UDP的校验和是可选的,TCP是强制的。
  15. 紧急指针:在 URG = 1时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据),即指出了紧急数据的末尾在报文中的位置,注意:即使窗口为零时也可发送紧急数据
  16. 选项: 长度可变,最长可达 40 字节,当没有使用选项时,TCP 首部长度是 20 字节

IP

IP数据报

  1. 版本:IP 协议的版本。通信双方使用过的 IP 协议的版本必须一致,目前最广泛使用的 IP 协议版本号为 4(即IPv4)
  2. 首部长度:单位是 32 位(4 字节)
  3. 服务类型:一般不适用,取值为 0
  4. 总长度:指首部加上数据的总长度,单位为字节
  5. 标识(identification):IP 软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段
  6. 标志(flag):目前只有两位有意义。
    标志字段中的最低位记为 MF。MF = 1 即表示后面“还有分片”的数据报。MF = 0 表示这已是若干数据报片中的最后一个。标志字段中间的一位记为 DF,意思是“不能分片”,只有当 DF = 0 时才允许分片
  7. 片偏移:指出较长的分组在分片后,某片在源分组中的相对位置,也就是说,相对于用户数据段的起点,该片从何处开始。片偏移以 8 字节为偏移单位。
  8. 生存时间:TTL,表明是数据报在网络中的寿命,即为“跳数限制”,由发出数据报的源点设置这个字段。路由器在转发数据之前就把 TTL 值减一,当 TTL 值减为零时,就丢弃这个数据报。
  9. 协议:指出此数据报携带的数据时使用何种协议,以便使目的主机的 IP 层知道应将数据部分上交给哪个处理过程,常用的 ICMP(1),IGMP(2),TCP(6),UDP(17),IPv6(41)
  10. 首部校验和:只校验数据报的首部,不包括数据部分。
  11. 源地址:发送方 IP 地址
  12. 目的地址:接收方 IP 地址
  13. 选项:选项可以用来进行网络测试和调试,非IP头部必须。
  14. 负载:上层的内容。

以太网

以太网帧

  1. 前导符。该域包含7个字节(56位)其中0和1交替出现,以此通知接收系统有到来并使其同步它的时钟。该模式只提供一个通知和时钟脉冲。56 位的模式允许站点丢失开始处的一此位。该前导符实际在物理层添加,并非帧的(正式的)一部分。
  2. 起始帧分界符(SFD)。该域(1个字节:10101011)表示的开始。SFD 通知站点这是最后一次同步的机会。最后两位是(11)2,通知接收方下一个域是目的地址。该域实际上是一个标志,它定义了顿的开始。我们需要记住一个以太网帧是一个可变长度的帧。它需要一个标记来定义这个帧的开始。SFD域也是在物理层添加的。
  3. 目的地址(DA)。该域是6个字节(48位)包含目的站点或接收分组站点的链路层地址我们稍后讨论寻址。当接收方看到自己的链路层地址,或是看到接收方所属组的广播地址或是看到广播地址时,它解封来自顿的数据,并将数据传递给由类型域定义的上层协议。
  4. 源地址(SA)。该域也是6个字节并含分组发送方的链路层地址。
  5. 类型。该域定义了帧中封装的分组所属的上层协议。该协议可以是IP、ARP、OSPF 等等,换言之,它和数据报中的协议域、报文段或用户数据报中的端口号起到相同的作用。它用于多路复用和多路分解, 其中类型:0x800表示 IP、0x806表示 ARP、0x835表示 RARP。
  6. 数据。该域运载来自上层协议封装的数据。它最小长度是46 字节,最大长度是 1500 字节我们稍后讨论取最小值和最大值的原因。如果来自上层的数据多于 1500字节,它就应该被分段并且被封装为多个帧。如果它小于 46 字节,就需要使用额外的0来填充。被填充的数据帧原封不动地交付给上层协议(不会去除填充)这意味着添加或者删除填充是上层的任务。上层协议需要知道它的数据长度。例如,一个数据报有一个域来定义数据的长度。
  7. CRC。最后一个域含差错检测信息,在此情况下为 CRC-32。CRC 由地址、类型和数据域计算而来。如果接收方计算 CRC并发现它非0(在传输过程中损坏),它丢弃该。
ARP

ARP报文

  1. 硬件类型:1 表示 MAC 地址
  2. 协议类型:0x800 表示 IP 地址
  3. 硬件地址长度:6
  4. 协议地址长度:4
  5. 操作:1 表示 ARP 请求,2 表示 ARP 应答,3 表示 RARP 请求,4 表示 RARP 应答

2 封装过程

封装过程
从应用层的消息往下要添加的头部信息
应用层 : 这里添加了应用协议头
传输层 :这里添加了TCP/UDP 头部 20~60 字节 包含 端口号 src & dst
网络层 : 这里添加了IP 头部 20~60字节 包含 IP地址 src & dst
数据链路层 :这里添加了以太网帧头部 包含 MAC地址 src & dst

02 详细介绍了协议的报文头和封装过程,下一节将总结三次握手,四次挥手过程。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值