1. 以太网
以太网是一种局域网技术,除此之外还有令牌环网、无限LAN
以太网既包含数据链路层的内容,也包含物理层的内容,我们只讨论数据链路层的部分
在IP协议章节中我们谈到,报文经过多重路由器路由,到达目标主机,也就是报文会跨越不同的子网,但前提是,报文至少得先能在局域网中传输,得先能交给路由器才行
同一局域网中的主机能直接通信吗?答案是可以的,在网络基础章节我们仔细说过了,这里就简单回顾一下
同一局域网内的主机能够直接通信,但同一时刻只能有一台主机发送数据,如果同时有多台主机发送数据,则会发生碰撞,一旦发生碰撞,主机就要进行碰撞避免,休眠一段时间再重发报文;整个局域网相当于一个碰撞域,每台主机都要进行碰撞检测和碰撞避免
2. 以太网帧格式
-
如何将报头与有效载荷分离?
头部固定14字节,尾部固定4字节,直接分离即可
-
如何分用?
类型中会知名上层协议,0800代表IP协议
局域网通信流程:
如果A要发送报文给E,经过数据链路层封装后,向局域网发送;局域网内的所有主机都收到了该报文,取出报头中的目的地址与自身匹对,发现不是自己,于是将报文丢弃,只有E收到了进行匹对后,发现是自己,解包向上层交付
如果发送的报文长度过长,占用局域网的时间也就越长,其他主机也更有可能在这时发送报文,发生碰撞的概率也就越高,这也是为什么数据链路层要限制IP数据报的最大长度,有MTU的原因,从而需要IP进行分片,TCP进行滑动窗口内数据多次分发
如果同一局域网内的主机数越多,发生碰撞的概率也就越高,这也是为什么你家网络如果连的人过多,会变得卡顿
但有时无法避免同一局域网人数过多的情况,也有相应的缓解方案 ---- 交换机
3. 交换机工作原理
交换机是一种工作在数据链路层的设备,以下图举例,它会有两个接口i0和i1
如果A要给E发送报文,交换机通过i0接口收到了报文,判断A来自i0侧,便记录下来,将报文发给所有主机,最开始,与平时没有任何区别
局域网内的主机经过多轮通信,交换机知道了所有主机的位置后,此时A要给D发送报文,交换机收到后,判断D在i0侧,于是不会将报文通过i1接口转发出去,C给E发送报文,也不会被转发给i0侧,于是A->D,C->E就在同一时刻完成了通信
交换机的本质是划分碰撞域,由此可以进一步推广,如果再多加几台交换机,就能减少碰撞
4. MTU
MTU,以太网的最大传输单元,通常是1500字节
- MTU对IP的影响:导致IP可能需要对报文进行分片
- MTU对UDP的影响:分片之后,丢包概率增加,而UDP不保证可靠性,增加通信失败的可能性
- MTU对TCP的影响:
- 受MTU的影响,TCP数据报不能太长,单个数据报的最大长度称为MSS(Max Segment Size)
- 实际上,再TCP三次握手期间,双方会进行MSS协商,告知对方自身支持的MSS,最终会选择较小的值最为最终的MSS
- MSS值放在TCP报头中的选项中
MTU与MSS的关系:
仔细看以太帧报头时,会发现以太帧数据报有个最小字节数,46字节,如果IP层交给以太帧时数据不满46字节,会自动添加无效数据,直到满46字节
由于IP报头中16位报文长度的存在,IP是知道自身报文的长度的,因此,添加再多无效数据也不影响
5. arp
协议
arp
协议是位于网络层与数据链路层之间的一种协议,它属于数据链路层
路由器通过路由表,知道了下一站的IP地址,但并不知道对方的MAC地址,也就不能进行MAC帧封装,将报文发送到目标主机
arp
就是将IP地址映射成MAC地址的协议
arp
的具体过程
要想知道对方的MAC地址,就要让对方告诉我他的MAC地址,我要给对方发送arp
请求,对方要给我arp
应答,同时,我也可能收到arp
请求,也就是说,任何一台主机都需要能识别出是arp
请求还是arp
应答的能力
不知道对方的MAC地址,于是构建ARP应答,源IP、目的IP、源MAC地址、目的MAC地址(不知道,填全F),向下封装,由于是arp
向下交付的,MAC帧在封装时类型填0806,发送ARP请求
局域网中的所有主机都收到该请求,MAC帧解包向ARP交付,首先查看是请求还是应答,再查看IP地址,发现IP地址不是自身IP地址,于是丢弃
只有E收到后,发现IP地址是自身IP地址,于是构建ARP应答,发送
A收到后,向ARP交付,首先查看是应答,再查看IP地址,是自己,于是就拿到的对方的MAC地址,往后进行局域网通信
主机会将IP地址与MAC地址的映射关系暂时缓存起来,Windows下使用arp -a
可以查看
在这里插入图片描述
但由于IP地址会变动,对方网卡可能会更换,MAC也可能会变动,因此该映射关系会定时清理
arp
协议格式
- 硬件类型:链路层网络类型,通常是以太网1
- 协议类型:要转换的地址类型,通常是IP地址0x800
- 硬件地址长度:MAC地址的长度,6字节
- 协议地址长度:IP地址长度,4字节
- op:1为
arp
请求,2为arp
应答
6. arp
欺骗
假设两台主机A和B已经得知双方的IP地址与MAC地址的映射关系
这时,来了个中间主机,由于IP报头、MAC帧报头在网络传输中是明文的,M收到A发给B的报文时不直接丢弃,这样就得知双方的IP地址和MAC地址
于是向A大量发送arp
应答,源IP填B,源MAC地址填M,虽然A的arp
缓存已经标明B主机IP地址与MAC地址的映射关系,但由于大量收到arp
应答,会更新arp
缓存;同理,B的arp
缓存也会更新
于是,M就成为了中间人,A向B发送的数据都会发向M,甚至M可能会伪造数据再发给B
arp
欺骗是成为中间人的一种手段
地址的映射关系,但由于大量收到arp
应答,会更新arp
缓存;同理,B的arp
缓存也会更新
于是,M就成为了中间人,A向B发送的数据都会发向M,甚至M可能会伪造数据再发给B
arp
欺骗是成为中间人的一种手段