计算机网络 - ISO/OSI模型各层PDU

首先先回顾下ISO/OSI模型的结构:

 那什么是PDU呢?

PDU:指协议数据单元(Protocol Data Unit),它是在不同网络层次之间数据传递的单位。

具体来说,物理层的PDU是比特流(bit),数据链路层的PDU是数据帧(frame),网络层的PDU是数据报(packet),传输层的PDU是数据段(segment),而其他更高层次的PDU则是数据(data)。

数据封装过程(应用层 -> 物理层)

  1. 用户信息转换为数据,以便在网络上传输(应用层)
  2. 数据转换为数据段,并在发送方和接收方主机之间建立一条可靠的连接(传输层)
  3. 数据段转换为数据报,并在报头中放入数据的逻辑地址,这样每一个数据报都可以通过互联网进行传输(网络层)
  4. 数据报转换为,以便在本地网络中传输。在本网段上,使用MAC地址唯一标识每一台主机。(数据链路层)
  5. 帧转换为比特流,并通过编码和调制进行数据转换。(物理层)

 应用层PDU:

传输层PDU:

TCP报文段的首部格式:

首部最小长度20B(20字节)固定首部。

(备注:UDP数据报首部长度为8B。)

TCP有效数据载荷的长度是1460字节

首部固定部分各字段:

  1. 源端口和目的端口:各占2B。
  2. 序号:占4B。
  3. 确认号(ack):占4B。指期望收到对方下一个报文段第一个数据字节序号。例:B 正确收到 A 发送来的一个报文段,其序号字段值时是 501 ,数据长度是200B(序号501~700),这表明 B 正确收到了 A 发送的到序号 700 位置的数据期望收到 701 号数据所以 B 在发送给 A 的确认报文段中把确认号置为 701
  4. 数据偏移:占4B。指出TCP报文段的首部长度。
  5. 保留:占6B。
  6. 紧急URG(URGent):当URG = 1时,表明紧急指针字段有效。它告诉习题该报文段中有紧急数据,应当尽快传送。
  7. 确认ACK(ACKnowledgment):仅当ACK = 1时,确认号字段才有效
  8. 同步SYN(SYNchronization):在建立连接时用来同步序号。当SYN = 1,且ACK = 0时,表明是一个连接请求报文段。对方若同意连接,则应在响应报文段中使 SYN = 1和ACK = 1。
  9. 终止FIN(FINish):用来释放一个连接。当FIN = 1时, 表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。
  10. 复位RST(RwSeT):当RST = 1时,表明TCP连接中出现严重差错(如主机崩溃 或其他原因),必须释放连接,然后再重新建立运输连接。

剩余不重要,不需要过多了解。

网络层PDU(ip数据报)

ip数据报首部:

长度:20B ~ 60B

1、版本
从图中可以看到,版本字段占4位。记录着通信双方使用的IP协议版本,比如IPv4、IPv6,目前广泛使用的是IPv4。

2、首部长度
占4位,表示的单位为4字节,比如1111(十进制的15)就代表首部长度为60字节(15*4=60).以4字节的整数倍划分,不足则填充。最常用的首部长度为0101(20字节)。

3、区分服务
占8位,用以获得更好的服务。

4、总长度
即首部长度和数据长度之和。占16位。因此,最大长度可知为16位都是1,就是65535字节

在IP层下层数据链路层存在自己的帧格式,帧格式的数据字段最大传送单元(MTU)是1500字节。尽可能长的数据报能够提高传输效率,实际中数据报长度很少大于1500字节。所以,IP标准规定:所有主机和路由器的IP数据报长度不能小于576字节。

如果数据报长度超过MTU,则将进行分片后再传送,与后面的片偏移相关。然后总长度就成了分片后每个分片的首部和数据的长度之和。

5、标识
占16位。在实际IP中,维持了一个计数器,每产生一个数据报,计数其加1,存放到该字段。IP是无连接服务,不存在按序接收问题,该标识不是序号,而是在进行分片之后对相同的数据报进行标识,属于同一个数据报的标识相同,以便到达目的后被重新封装为原来的数据报。

6、标志
占3位。目前使用2两位有意义的。

最低位:MF(More Fragment)还有分片,MF=0时说明是最后一个分片。

中间位:DF(Don‘t Fragment)不能分片,DF=0时才能分片。

7、片偏移
占13位。用于记录较长分组中0,指出一个分片在原数据报中的相对位置。片偏移以8字节为单位,长度是8字节的整数倍。

假设一个数据报总长度为3820字节。首部20字节和数据3800字节。现在要求长度不超过1420字节,那么它的每个分片为多少呢?

我们简单分析一下,数据部分尽可能长的可以分为1400,1400,1000三个分片,这样再加上首部满足小于1420字节。

分片一:0-1399字节,因此片偏移=0/8=0

分片二:1400-2799字节,片偏移=1400/8=175

分片三:2800-3800字节,片偏移=2800/8=350

很容易就计算出每个分片的片偏移。

8、生存时间
TTL(Time To Live)占8位。最大值255。每个数据报都有TTL,防止被错误路由在网络中不断循环,消耗网络资源。在实际中,TTL表示的是跳数而不是时间,指明数据报在网络中最多可经过多少个路由器。

9、协议
占8位。指明数据报携带的数据是使用什么协议,方便目的主机的IP层将数据交给对应的程序处理,这里列举几个。

协议       ICMP    IGMP    TCP    UDP    OSPF
字段值       1          2           6        17         89


10、首部检验和
占16位。只校验数据报首部,不包括数据部分。这样可以减少计算量,同时不采用复杂的CRC检验码,而是使用简单的反码算术运算。

反码算术运算:将数据报首部划分为多个16位的序列,16位序列相加之和取反码,写入检验和。接收方再将首部16位序列(包含检验和的16位)相加之和取反码,结果为0则说明数据报正确,否则丢弃。       

        
原文链接:https://blog.csdn.net/Charzous/article/details/115956836

数据链路层PDU(帧):

什么是MTU?每一种链路层协议都规定了所能传送的帧的数据部分长度上限——最大传送单元MTU(Maximum Transfer Unit)。

PPP帧

MAC帧

MAC帧长度:64~1518B

MAC帧的有效数据字段长度:46~1500B。当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面加入一个整数字节的填充字段,以保证以太网的MAC帧长不小于64字节。

现在如果问:

物理层(比特流)

参考资料:

OSI七层模型 - 简书

IP协议的数据帧长度是多少-腾讯云开发者社区-腾讯云

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值