数据链路层(Mac帧,报头字段,局域网通信原理),MTU,MSS,ip报文的分包与组装(ip报头字段介绍,组装过程,判断是否被分片/收到全部分片)

目录

数据链路层

介绍

MTU

介绍

在哪一层分片

IP报文的分包与组装

16位标识

3位标志

13位片偏移

示例

组装过程

确定是否被分片

确定是否收到全部分片

 注意点

数据链路层与网络层的关系

Mac帧

Mac地址

报头格式

目的/源地址

类型

局域网通信原理

图解

碰撞问题 

MSS

引入

介绍


数据链路层

介绍

也属于网卡驱动层

  • 负责与实际硬件(网卡)通信,执行数据的发送和接收操作
  • 两者并不相同,网卡驱动层属于计算机操作系统的一部分,不在OSI模型中

因为网卡不支持一次接收过大的数据

  • 所以它倒逼上层一次不能交付过大的报文

所以上层在通信时,如果收到了大数据,需要将大数据分割成小的报文

  • eg:tcp层的滑动窗口需要分段,而不是把整个窗口的数据发送过去

MTU

介绍

MTU(Maximum Transmission Unit,最大传输单元) ,是指网络接口一次可以传输的最大字节数

  • 网络接口 -- 指计算机或网络设备与网络进行通信的硬件或软件接口
  • 最常见的物理网络接口就是网卡

不同的数据链路协议(如以太网、Wi-Fi、PPP)可能具有不同的 MTU 值

  • 对于以太网,通常的 MTU 是1500字节

如果上层协议生成的报文(如 TCP 报文)比 MTU 大,则需要将其分片以适应网络接口的 MTU 限制

  • 因为链路层一旦交付给下层,网卡就会直接发送数据了,所以相当于在链路层就要有MTU规定,同样它也会影响上层
  • 注意,这里说的"上层协议生成的报文"也就是Mac帧里的有效载荷部分,所以实际上MTU规定的是Mac帧里的有效载荷的大小(网络层交付的报文大小)
  • (这些都会在下面详细介绍)

在哪一层分片

虽然下层这么规定了,但是传输层(也就是tcp层)发送的数据就是特别大怎么办?

  • 所以,ip层(网络层)需要对报文分片

为什么不是在数据链路层呢?

  • 还记得吗,网络数据都是广播发送的,传到链路层后判断是否是发给自己的,不是就丢弃
  • 报文一路上都要经过多个设备,如果每经过一个设备就要进行组装和分片(要保证数据的完整性),太麻烦了
  • 所以放在ip层,等数据包收全后再进行组装,然后交付给上层最好

本身分片就需要针对不同网络的MTU进行

  • 网络层可以根据网络的需求对数据包进行分片
  • 但链路层只处理直接相连的网络节点之间传输数据帧,不会涉及MTU的变化
  • 所以放在网络层分片最合理

IP报文的分包与组装

也就是报头的第二行,是有关分片和组装的字段

报头中其他字段的介绍 -- 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值