数据链路层

目录

数据链路层

对比“数据链路层”与网络层

以太网帧格式

认识mac地址

对比理解 MAC 地址和 IP 地址

认识 MTU

MTU 对 IP 协议的影响

MTU 对 UDP 协议的影响

MTU 对于 TCP 协议的影响

ARP 协议

ARP 数据报的格式


数据链路层

用于两个设备(同一种数据链路节点)之间进行传递

对比“数据链路层”与网络层

应用层->传输层->网络层->数据链路层

网络层这里使用的是ip地址,数据链路层则是mac地址

与ip地址不同,mac地址是唯一的,每个不同的网卡上都有一个唯一的mac地址

我们在网络层中讲过,有公网ip地址与私有ip地址,公网ip地址则可以让一台主机通过路由器进行传输从而访问到全网的任意一台有公网ip的主机。

也就是说,ip地址的范围涵盖局域网,城域网,与广域网

但是mac地址不同,mac地址只能在局域网中进行传输

以太网帧格式
 

源地址与目的地址就是网卡的硬件地址(mac地址),长度48位(也就是6字节),网卡出厂时确定

帧协议类型字段有三种值,分别对应 IP、 ARP、 RARP
帧末尾是 CRC 校验码
 

认识mac地址

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

对比理解 MAC 地址和 IP 地址
 

上面我们也讲过了,ip地址与mac地址的范围不同,范围更大的ip地址标识的是路途的起点与终点,也就是整个传输过程中的起点主机与目的主机

mac地址的范围只有局域网,是每一个小区间的起点与终点

举个例子:

我们要从浙江某个城市到北京某个城市,那么源ip地址与目的就是浙江的城市与北京的城市

我们通过路由器进行传输,但是这过程中肯定要经过一个个城市,比如从浙江宁波到浙江杭州,那么在浙江这个小区间的范围,源mac地址就是宁波,目的mac地址就是杭州。

认识 MTU
 

MTU 相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制

1.以太网帧中的数据长度规定最小 46 字节,最大 1500 字节,ARP 数据包的长度不够 46 字节,要在后面补填充位
2.最大值 1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU

3.如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的 MTU了,则需要对数据包进行分包(我们在网络层ip协议就提过了有一个标识id,就是用来在分包后标识一个个数据包分片是属于哪一个数据包的)

4.不同的数据链路层标准的 MTU 是不同的

MTU 对 IP 协议的影响
 

由于数据链路层 MTU 的限制, 对于较大的 IP 数据包要进行分包
1.将较大的 IP 包分成多个小包, 并给每个小包打上标签

2.每个小包 IP 协议头的 16 位标识(id) 都是相同的

3.每个小包的 IP 协议头的 3 位标志字段中, 第 2 位置为 0, 表示允许分片, 第 3 位来表示结束标记(当前是否是最后一个小包, 是的话置为 1, 否则置为 0)

4.到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层

5.一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是 IP 层不会负责重新传输数据(但是传输层重视可靠性的tcp协议会超时重传)

还是拿送快递的例子,上网买东西从商家那买了很多很多商品,商家给你发快递。这些快递由于数量太多不会被放在同一个快递箱里,可能会被很多不同的快递员进行运输,而我们的接收端就相当于在你家旁边的菜鸟驿站,快递送到后都会送到菜鸟驿站,送货上门的话快递人员就会将属于你的快递全部打包送过来(判断时使用的就是id),但是如果你的快递丢了,确认快递是否全部到达的你就会确认失败。你会要求商家给你补发(商家就相当于tcp协议规定好的需要你确认到货)

MTU 对 UDP 协议的影响
 

1.一旦 UDP 携带的数据超过 1472(1500 - 20(IP 首部) - 8(UDP 首部)), 那么就会在网络层分成多个 IP 数据报

2.这多个 IP 数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果 UDP 数据报在网络层被分片, 整个数据被丢失的概率就大大增加了(udp不保证可靠性,不会给你补发)

MTU 对于 TCP 协议的影响
 

1.TCP 的一个数据报也不能无限大, 还是受制于 MTU. TCP 的单个数据报的最大消息长度, 称为 MSS(Max Segment Size);

2.TCP 在建立连接的过程中, 通信双方会进行 MSS 协商

3.最理想的情况下, MSS 的值正好是在 IP 不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的 MTU)

4.双方在发送 SYN 的时候会在 TCP 头部写入自己能支持的 MSS 值

5.然后双方得知对方的 MSS 值之后, 选择较小的作为最终 MSS

6.MSS 的值就是在 TCP 首部的 40 字节变长选项中(kind=2)

MSS和MTU的关系就是,MSS规定了tcp协议中存放数据的最大消息长度,而MTU则是在MSS基础上再加上了tcp数据报头与ip数据报头,要求MSS+tcp报头长度+ip报头长度在(46,1500)这个范围之内,因为MTU对应的数据本就是整个上层一直封装到网络层的全部数据,而MSS则只是应用层发出的数据,甚至不包括报头

结论:MSS+tcp报头长度+ip报头长度在范围(46,1500)

ARP 协议
 

ARP 不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议

ARP 协议建立了主机 IP 地址 和 MAC 地址 的映射关系
1.在网络通讯时,源主机的应用程序知道目的主机的 IP 地址和端口号,却不知道目的主机的硬件地址

2.数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃

3.因此在通讯前必须获得目的主机的硬件地址

因此获取硬件地址流程就是:

1.源主机不知道目的ip地址对应的硬件地址是谁,于是先在网段内广播arp请求,询问所有主机(目的IP的mac地址是哪个)。

2.如果目的IP地址与某主机不符,那么该主机就会丢弃该请求arp数据包。

3.目的ip地址的主机收到了询问的arp请求,就发送arp应答数据包给源主机,这样原主机就知道了目的ip主机的mac地址

4.每台主机内部都会维护一张arp缓存表,里面存储了部分主机的ip地址与mac地址的对应关系。不过该表中的表项有过期时间(一般20分钟),过期了就要重新广播获取mac地址

ARP 数据报的格式
 

其实我们从前面大概就可以才出来一部分arp数据包的格式了,arp数据报必须标识这是一个请求还是应答,必须包含源ip,目的ip,源mac,以及目的mac

1.注意到源 MAC 地址、 目的 MAC 地址在以太网首部和 ARP 请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的

2.硬件类型指链路层网络类型,1 为以太网

3.协议类型指要转换的地址类型,0x0800 为 IP 地址

4.硬件地址长度对于以太网地址为 6 字节

5.协议地址长度对于和 IP 地址为 4 字节

6.op 字段为 1 表示 ARP 请求,op 字段为 2 表示 ARP 应答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值