加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux网络编程之TCP/IP基础(二) 利用ARP和ICMP协议解释ping命令

发布时间:2016-01-24 01:48:50 所属栏目:Linux 来源:网络整理
导读:一、MTU 以太网和IEEE 802.3对数据帧的长度都有限制,其最大值分别是1500和1492字节,将这个限制称作最大 传输单元(MTU,Maximum Transmission Unit) 如果IP
副标题[/!--empirenews.page--]

一、MTU

以太网和IEEE 802.3对数据帧的长度都有限制,其最大值分别是1500和1492字节,将这个限制称作最大 传输单元(MTU,Maximum Transmission Unit)

如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大, 那么IP层就要进行分片(Fragmentation),把数据报分成若干片,这样每一片都小于MTU。

当网络上的两台主机互相 进行通信时,两台主机之间要经过多个网络,每个网络的链路层可能有不同的MTU,其中两台通信主机路径中的最小MTU被称 作路径MTU,Internet上标准MTU为576B。

二、以太网帧格式

linux网络编程之TCP/IP基础(二) 利用ARP和ICMP协议解释ping命令

其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。用ifconfig命令 看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。协议字段有三种值,分别对应IP、ARP、RARP。帧末尾是CRC校 验码。

以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填 充位。ifconfig命令的输出中也有“MTU:1500”。注意,MTU这个概念指数据帧中有效载荷的最大长度,不包括帧首部的长 度。

三、ARP(address resolution protocol)

在网络通讯时,源主机的应用程序知道目的主机的IP地址和 端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地 址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。源主机发出ARP请求, 询问“IP地址是10.0.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填 FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据 包给源主机,将自己的硬件地址填写在应答包中。如下图所示

linux网络编程之TCP/IP基础(二) 利用ARP和ICMP协议解释ping命令

每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还 要发ARP请求来获得目的主机的硬件地址。

linux网络编程之TCP/IP基础(二) 利用ARP和ICMP协议解释ping命令

注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链 路层是其它类型的网络则有可能是必要的。硬件类型指链路层网络类型,1为以太网,协议类型指要转换的地址类型, 0x0800为IP地址,后面两个地址长度对于以太网地址和IP地址分别为6和4(字节),op字段为1表示ARP请求,op字段为2表 示ARP应答。

地址解析协议的处理流程如下图:

linux网络编程之TCP/IP基础(二) 利用ARP和ICMP协议解释ping命令

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!