数据链路层

个人主页:Lei宝啊 

愿所有美好如期而遇


目录

以太网

以太网帧格式

Mac地址

对比IP地址和Mac地址

MTU

MTU对IP协议的影响

交换机

ARP协议


以太网

以太网是目前应用最广泛的局域网技术,和以太网并列的还有令牌环网以及无线LAN等。

以太网帧格式

第一行就是以太网帧格式,目的mac地址,源mac地址,类型指的是哪种协议将数据交给了他,他将来分用时,又要将数据交付给谁。这个类型字段有三种值,0800对应IP数据报,0806对应ARP协议,8035对应RARP协议。

Mac地址

Mac地址用来识别数据链路层中相连的节点,长度为 48 , 6 个字节. 一般用 16 进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19),在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的。

对比IP地址和Mac地址

IP地址描述的是起点和终点,目的地址在传输过程中是不会改变的,源IP地址因为NAT技术,在传输过程中会替换为WAN口IP。

Mac地址在传输过程中,目的地址和源Mac地址一直会发生变化。

MTU

MTU叫做数据链路层的最大传输单元,不同的网络类型有不同的MTU,最大值1500称为以太网的最大传输单元。

简单来说,就是数据链路层要求以太网帧的数据长度最小是46字节,最大不超过1500字节,如果一个数据包交到数据链路层时超过了1500字节,就需要对数据进行分片。

MTU对IP协议的影响

我们上篇文章说到IP协议时,有三个字段没有解释,这里我们就可以解释那三个字段了。

当网络层向数据链路层交付的数据包大于他的MTU时,网络层就会进行分片,怎么分片?

IP报头的16位标识,用来标识主机发送的报文,如果这个报文被分片,那么每一片的这个字段都是相同的。

3位标志,第一位保留,第二位为1表示禁止分片,这时候如果报文长度超过MTU,那么这个报文就会被直接丢弃。第三位表示更多分片,如果分片了,那么最后一片报文设置为0,其他分片的报文设置为1.

13位片偏移,其实就是分片相对于原始IP报文开始处的偏移,实际偏移的字节数是这个字段乘以8,因此,除了第一个报文,其他报文的长度必须是8的整数倍,否则除8就可能除不清,报文也就不连续了。

我们从接收方角度来看看,报文是如何被组装的:

这里也就体现出了,为什么在Tcp传输层,滑动窗口中的数据不是一次全发到下层,而是分批次发送,就是为了减少下层的分片,尽量不使分片,因为分片是有危害的,一个就是增加了丢包概率,一个就是丢片后需要全部重传。

MTU UDP 协议的影响
一旦 UDP 携带的数据超过 1472(1500 - 20(IP 首部 ) - 8(UDP 首部 )), 那么就会在网络层分成多个 IP 数据报 .
这多个 IP 数据报有任意一个丢失 , 都会引起接收端网络层重组失败 . 那么这就意味着, 如果 UDP 数据报在网络层被分片 , 整个数据被丢失的概率就大大增加了 .
MTU 对于 TCP 协议的影响
TCP 的一个数据报也不能无限大 , 还是受制于 MTU. TCP 的单个数据报的最大 消息长度, 称为 MSS(Max Segment Size);
TCP 在建立连接的过程中 , 通信双方会进行 MSS 协商 .然后采取min(send_MSS, recv_MSS)。
最理想的情况下 , MSS 的值正好是在 IP 不会被分片处理的最大长度 ( 这个长度仍然是受制于数据链路层的 MTU).
双方在发送 SYN 的时候会在 TCP 头部写入自己能支持的 MSS . 然后双方得知对方的 MSS 值之后 , 选择较小的作为最终 MSS.
MSS 的值就是在 TCP 首部的 40 字节变长选项中 (kind=2)
查看硬件地址和 MTU
使用 ifconfig 命令 , 即可查看 ip 地址 , mac 地址 , MTU;

交换机

我们说在局域网主机间通信时,可能会发生数据碰撞,从而有碰撞避免策略,同时,一台主机发送消息,局域网内所有主机都会收到这个报文,只是丢不丢弃的问题,那么交换机就用来划分碰撞域。

当交换机中没有记录主机的位置时,同一侧的主机互相发送消息,另一侧的主机仍然会收到这个报文,然后丢弃,接下来,这两个主机的位置就被交换机记录下来,位于交换机的同一侧,下次他们再互相发送消息,这个报文不会到交换机的另一侧,直接就被拦截了,即使他们发生了数据碰撞,也不会影响到另一侧。

ARP协议

现在,整个网络通信,我们只剩下最后一个问题,那就是,在局域网下,以太网填充目的mac地址时填什么?他怎么知道对方的mac地址?

这就需要ARP协议将IP地址转换为Mac地址,怎么转换呢?

也就是说,主机A要向主机B发送消息,就在局域网中进行广播,向每一台主机发送ARP请求,当主机B收到这个ARP请求,与自己的IP地址核对,发现是发给自己的,就会发回ARP应答,也是这个格式,双方也就知道彼此的Mac地址了。

但是每一次发送消息都要发送ARP请求吗?不是,只是第一次发送时,之后就会将目标的IP地址和Mac地址建立映射关系进行保存。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lei宝啊

觉得博主写的有用就鼓励一下吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值