TCP_IP数据链路层

数据链路层主要协议是以太网,其数据帧包括目的地址、源地址、类型和CRC校验。IP地址标识传输起点和终点,MAC地址用于相邻节点间通信。不同类型的以太网帧携带不同数据,如0800表示IP数据报。MTU表示数据帧承载范围,超过则需IP层分包。ARP报文用于建立IP到MAC的映射关系。
摘要由CSDN通过智能技术生成

文章目录

  • 数据链路层
    • 以太网数据帧

数据链路层

主要的协议:以太网

以太网数据帧

image-20220417160631275

目的地址+源地址

通过6个字节来表示源地址和目的地址,这个比IPv4更长,这里的地址称为mac地址

mac地址做到了每个网卡都是唯一的(网卡出场的时候就写死了),所以我们可以通过mac地址确定唯一的主机

IP地址和mac地址的功能

IP用来表示一个传输过程中的起点和终点,(不考虑NAT的情况,一个IP数据报中的源IP和目的IP是固定的)

mac用来表示传输过程中,任意两个相邻点之间的地址(一个以太网帧,在每次转发过程中,源mac和目的mac都会改变

类型

类型不同表示后面的数据搭载不同的值

如果是0800 就是一个完整的IP数据报

如果是0806,那就是一个ARP请求

如果是8035,那就是一个RARP请求

CRC

帧尾就是一个基于CRC算法的校验和

循环冗余算法和(把数据的每个字节依次进行累加(溢出就溢出了))

图中的46-1500 为MTU

MTU 表示一个以太网数据帧能承载的数据范围 范围取决于硬件设备

其他硬件设备,对应的数据链路层协议,可能不一样,MTU也不一样

如果数据报超过了MTU怎么办?

IP层的分包操作 :ip层的分包,其实不是给ip的报头64k准备的,更多的是为了适应数据链路层的MTU

MTU对IP协议的影响

由于数据链路层MTU的限制,对于较大的IP数据包要进行分包。

  • 将较大的IP包分成多个小包,并给每个小包打上标签;
  • 每个小包IP协议头的 16位标识(id) 都是相同的;
  • 每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位来表示结束标记(当前是否是最后一个小包,是的话置为1,否则置为0);
  • 到达对端时再将这些小包,会按顺序重组,拼装到一起返回给传输层;
  • 一旦这些小包中任意一个小包丢失,接收端的重组就会失败。但是IP层不会负责重新传输数据;

MTU对UDP协议的影响

让我们回顾一下UDP协议:

  • 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)),那么就会在网络层分成多个IP数据报。
  • 这多个IP数据报有任意一个丢失,都会引起接收端网络层重组失败。那么这就意味着,如果UDP数据报在网络层被分片,整个数据被丢失的概率就大大增加了。

MTU对于TCP协议的影响

让我们再回顾一下TCP协议:

  • TCP的一个数据报也不能无限大,还是受制于MTU。TCP的单个数据报的最大消息长度,称为MSS(Max Segment Size);
  • TCP在建立连接的过程中,通信双方会进行MSS协商。
  • 最理想的情况下,MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU)。
  • 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。
  • 然后双方得知对方的MSS值之后,选择较小的作为最终MSS。
  • MSS的值就是在TCP首部的40字节变长选项中(kind=2);

MSS:TCP中在IP不分包的前提下,最多搭载多少载荷

MTU也取决于TCP和IP的报头

image-20220417165230663

分包的开销还是有,MSS对于TCP起到一个提示效果.如果当前传输TCP的数据不超过MSS的时候,是属于最高效的状态

ARP报文

ARP报文并不是用来传输数据的,只是起到一个辅助的效果

路由器这样的设备在转发数据的时候,首先拿到的是一个IP地址(目的IP),通过IP地址来决定接下来这个数据咋走(从哪个端口出去,发到哪个设备上),因此就得决定,接下来封装的以太网数据帧的 目的mac 是啥需要 根据ARP协议就建立起IP->mac这样的映射关系.

IP->mac映射关系的建立:当设备启动的时候,就会向局域网中,广播ARP报文,每个设备收到之后,都会给出一个应答,应答的信息中包含了自己的IP和mac,发起广播的一方,就可以根据这些回应建立起映射表

例如,老师需要统计学生的信息,老师会在班群里喊一声,让学生将个人信息私聊交给老师,

同学们听到老师的消息之后,就会将自己的信息发送给老师,老师就会根据收到的信息,制作一个映射表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值