面试必考之IP协议与ARP协议执行过程详解

1.IP地址与MAC地址

MAC地址由于已经固化在网卡的ROM中,又叫硬件地址或物理地址。MAC地址是数据链路层使用的地址。IP地址是网络层及以上层使用的地址。

42f84b0243d2426095a5ff83f3cb6466.png

上图是发送方接收方各层报文结构的变化情况

可见,经过不同转发设备,MAC帧首部的

源MAC地址

和目标MAC地址总是更新。但IP地址保持不变

,即IP目标地址始终为主机2的IP地址,源地址始终为主机1的。

11399a19bb134886931dc62999e2f9db.png

上图是报文转发过程中MAC帧变化情况

2.地址解析协议ARP

通过IP地址找到相应的MAC地址。

cd92e97d13be43a7a0f5c797048ddd1a.jpg

 

由于一些情况,使主机MAC地址发生变化,比如更改了网络适配器(主机MAC地址即其网络适配器的地址),撤走了一些主机等,为了应对这些情况,因此我们在每个的ARP高速缓存中存放一个IP地址到MAC地址的映射表,动态更新其数据。

当想向一台主机发送数据时,可以看看自己ARP表中是否有目标地址IP地址,有的话则找见对应的MAC地址,将其写入MAC帧中,要是没有呢?

或者更极端的,一开始该表是空的,

(1)那么该表所在的设备自动运行ARP进程,广播(向该网络其余所有主机和服务器发送)一个ARP请求分组。消息的内容是:写明自己(发送方)的IP地址与MAC地址(即发送方IP地址到MAC地址映射),寻找目标IP地址对应的MAC地址。

(2)接收方如果ARP分组中有目标IP地址,就收下该消息,并且将发送方IP地址到MAC地址映射写入自己ARP表中,同时回送响应消息,消息中附带自己的MAC地址。该为单播(一对一发送)。如果没有则不理会。

(3)发送方收到回应后,写入ARP表中。

362535c29ff5441bb62203cefe51141f.jpg

 

下次在查找时,如果在ARP表查到,无须广播了。

ARP表每个项目都有生存时间,如果超时会自动删掉,减少出错几率,比如一台主机MAC地址变动了,但别人缓存表的MAC地址还是原来的,出现尴尬。

3.IP数据报形式:IPV4

由首部和数据部分构成。

(1)首部宽度为32位;

首部可变部分:1-40字节不等;

首部固定部分:20字节。

(2)数据部分

3942e0f83be346d48923a02eb4b23e07.png

(3)固定部分各字段:

版本:占四位。IP版本通信双方的要一致。

首部长度:4位。

区分服务DS(differentiated services):8位。

总长度:首部和数据之和长度,共16位。

MTU:(maximum transfer unit)最大传送单元。即数据链路层每种协议规定的数据字段最大长度。数据报总长度不能超过该值。

IP协议规定:互联网中所有主机和路由器必须接收长度不超过576字节的数据报,假设上层交下来数据长度512字节,最大IP头部长度60字节,再加上4字节的富余。

a5ad3cbca142461ebde1d75b8caa824c.jpg

 

标识identification:需要分片时,该字段的值被复制到每一个子片头部,相同值的标识使分片后的数据报组成原来数据报。

标志flag:占三位,目前只有最低位和中间位有意义,

中间位:DF(don't fragment),为1时代表不能分片

最低位:MF(more fragment),为1时代表还有分片。

片偏移:占13位,分片后的子片在原片相对位置,即相对于原片起点,该片从何处开始。

片偏移以8个字节为偏移单位,即即相对于原片起点,该片从开始位置/8的值作为片偏移值。

最差情况是只有最后一个分片长度不足8字节(少了)。

举例:

9952c5dc3e834438b6e1eae57d66a753.png

一个数据报总长3820字节;

固定首部长度20字节;

每个分片数据部分长度不超过1400字节。

分为3个数据片,数据部分长度分别为为1400字节,1400字节和1000字节。

注意片偏移量从0开始,因为片偏移是原分组的相对位置,开始并没有偏移,所以为0;

4bc3fc5a41ec484e949e472c8a7002e1.jpg

 

生存时间TTL(time to live):8位,防止报文循环或者长时间转发浪费资源。最初以秒为单位,后来将其改为跳数,转发过程中每经过一个设备,就将其值减去1,直到为0,丢弃;最大值是8位都为1,即2^8-1(二进制从最低位为2^0开始,8位都为1的下一位(加1)是第九位为1,即用2^8-1得到前一个数值)

首部检验和:占16位,每经过一个路由器,都要重新计算校验和,检查首部字段的值是否发生变化。

采用下列方法计算:

(1).将IP数据报按16位划分,开始16位检验和字段为0,然后将所有16位反码运算相加后,最后将得到的和取反码,写入校验和字段中;

(2).接收方将收到的数据报首部所有字段再按16位划分,反码运算相加一次,得到的值取反码,得到接收方的检验和计算结果。

(3).若首部不变,结果计算为0,保留即可,否则丢弃。

81990da8716147598873ca4f74e03987.png

网际报文控制协议

 

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值