TCP/IP详解(三)---IP、ARP协议

基本概念

毫无疑问,IP协议是TCP/IP协议簇中最重要的协议之一,全称Internet Protocol(网际协议),工作于OSI七层模型中的网络层,用于多个包交换(分组交换)网络(上篇文章提到网络层的信息单元‘数据包’)的连接,简单的说,通过IP协议,将所有的局域网都连接起来了。

IP协议的特点

1.不可靠:
即不能保证IP数据报能成功地到达目的地,一般发送失败,即对数据报进行丢弃,任何可靠性要求只能由上层(传输层)来提供,比如TCP协议提供的可靠的端到端服务。
2.无连接:
即每个数据报的处理是相互独立的,不维护任何关于后续数据报的状态信息,隶属于同一信息的不同数据报可以经由不同路径、在不同时间到达目的主机。

IP数据报

IP数据报的格式如下图所示:
TCP/IP详解(三)---IP、ARP协议_第1张图片

各层信息单元长度:
数据链路层—->MTU:
上篇文章中提到以太网协议规定了数据链路层MTU为1500字节。这个MTU指的是链路层的数据区。并不包括链路层的首部和尾部的18个字节。
网络层—->IP数据报长度:
网络层IP数据报的长度受MTU限制,为1500字节, 其中IP数据报的首部为20字节,所以IP数据报的数据区长度最大为1480字节。
传输层—->TCP段或UDP数据报(之所以称为UDP数据报,是因为UDP不允许分段):
受IP数据报最大数据区长度限制,TCP报文段或UDP传来的UDP数据报最大长度为1480字节。
UDP 报实际数据区大小为 1500(MTU) - IP头(20) - UDP头(8) = 1472(Bytes)
TCP 段实际数据区大小为 1500(MTU) - IP头(20) - TCP头(20) = 1460(Bytes)

以上是针对数据链路层为以太网协议的计算方法,如果是PPP(PPPoE)等其他协议,结果就不同,但计算方法是一样的。

IP路由选择

如果目的主机与源主机直接相 连(如点对点链路)或都在一个共享网络上(以太网或令牌环网),那么IP数据报就直接送到目的主机上。否则,主机把数据报发往一默认的路由器上,由路由器来转发该数据报。

一个完整的IP数据包的转发流程:
1)IP数据包到达网络层之后,首先根据目的IP地址得到目的网络号,然后决定是直接交付还是转发数据包。如果网络号不属于同一子网,需要转发数据包,则跳到3);
2)将数据包转发给目的主机;
3)首先根据目的IP地址在路由表中查找下一跳IP地址;
4)然后在路由器的ARP高速缓存表中查找下一跳IP地址对应的MAC地址,如果找到下一跳路由器的MAC地址,则将查到的MAC地址填入数据帧的首部6 字节(即更新链路层的数据帧);如果ARP高速缓存表中不存在此IP地址,则通过向当前局域网内广播一个ARP分组来请求下一跳路由器的MAC地址。 ARP请求分组广播出去后,只有下一跳路由器会对此请求分组做出响应,所有其它的主机和路由器都将忽略此ARP广播分组。
5)根据得到的下一跳路由器MAC地址来更新数据链路层的数据帧,即帧头的目的MAC地址字段;
6)转发数据包;

注意:2)步骤中数据包的直接交付时,如果当前路由器的ARP高速缓存表中找不到相应的IP—->MAC匹配项,则也需要向当前局域网广播ARP请求分组来获取目的主机的MAC地址。

子网寻址

我们知道一个完整的IP地址应该包含网络号和主机号,如果再对主机号进行划分,也就是最终网络号+子网号+主机号。如一个B类地址140.252.104.1,我们知道B类地址的网络号是前16位140.252,如果我们对这个地址配置了掩码255.255.255.0,那么就会对主机号104.1做进一步划分,这样子网号最终是104(二进制),主机号是1(二进制)。

ARP协议

ARP(地址解析协议),工作在数据链路层和网络层之间,实现IP—->MAC的转换。主机和路由器都有自己的ARP高速缓存表,当数据包转发时在ARP高速缓存表中找不到对应的IP—->MAC,主机或路由器则会向当前局域网发送ARP广播请求,收到ARP广播应答后就会更新自己的ARP高速缓存表(存在时效),并用新的ARP缓存数据更新数据链路层的数据帧。

查看本地主机的ARP缓存信息arp -a
TCP/IP详解(三)---IP、ARP协议_第2张图片

你可能感兴趣的:(TCP/IP详解,IP协议-ARP)