一.最大传输单元(MTU,Maximum Transmission Unit)
(1)以太网和IEEE 802.3 对数据帧的长度都有限制,其最大传输分别是1500和1492字节,这个限制称为最大传输单元。
(2)如果IP层有一个数据报要传,而且数据的长度要比链路层的数据要大,IP层就要进行分片(Fragmentation).
(3)当两台主机进行网络通信时,两台主机之间可能需要经过多个网络,每个网络的链路层可能有不同的MTU,两台通信主机路径中的最小MTU称为路径MTU。
说明: 长度为1501自己的的IP数据报被拆分成两个IP分片,第一个IP分片的长度为1500字节,第二个IP分片的长度为21字节。且第一个IP头部设置了MF标志,第二个IP头部没有这个 标志。
ICMP协议用于传递差错信息,时间,回显,网络信息等控制信息。
二. 以太网封装格式
两种帧格式都采用48bit (6字节)的目的地址和源地址, 时指网卡的硬件地址(也叫MAC地址),
linux可以通过ifconfig 命令,查看以太网的硬件地址. 如: Link encap:以太网 硬件地址 20:89:84:3d:14:03
协议字段有三种值,分别时IP, ARP, RARP. 帧未时CRC校验码.
ifconfig 命令也可以知道MTU的值,MTU的有效长度不包含帧首的长度.
三. ARP:地址解析协议
网络通信时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先被网卡接收到,再去处理上层协议. 如果接收到的数据包的硬件地址与本机的硬件地址不相符,这个数据包直接丢弃. 因此在通信前必须知道目的主机的硬件地址是多少.
ARP协议的作用: 源主机发出ARP请求,ARP请求数据帧中包含目的主机的IP地址,询问"IP地址是10.0.0.1的主机的硬件地址时多少",并将这个请求广播到本机网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播). 当目的主机接收到 ARP请求,发现其中的IP地址与本机IP地址相符,则发送一个 ARP应答数据包给源主机,将自己的硬件地址写在应答包里面.
ARP高速缓存
每台主机都有一个ARP高速缓存,这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录,高速缓存中每一项的生存时间一般为20分钟,起始时间时刚创建时间.
linux下可以通过: arp -a 命令查看
ARP的分组格式
硬件类型字段为硬件地址类型,它的值为1表示以太网; 它的值为0x0800 表示ip地址,
op字段为操作字段, 1 表示ARP请求, 2 表示ARP应答, 3 表示RARP请求, 4 表示RARP应答.
地址解析协议流程图:
si
四. RARP --- 逆地址解析协议
作用:
RARP协议讲局域网中某个主机的物理地址转换成IP地址,比如局域网中有一台主机只知道物理地址,而不知道IP地址,那么可以同RARP协议发出征求自身IP地址的广播请求.然后有RARP服务器来回答.
工作原理:
五. ICMP (Internet Control Message Protocol) : internet 控制报文协议
作用: ICMP是 TCP/IP协议族的一个子协议,用于IP主机,路由器之间传递控制消息. 控制消息是指网络是否通,主机是否到达,路由是否可用等网络本身的消息. 这些消息不是传送用户的消息,但对用户的传送有重要的作用.
六. 利用ARP和ICMP协议解释ping程序
步骤a:应用程序ping会判断发送的是主机名还是IP地址,如果是主机名会调用函数gethostbyname()解析
主机 B,将主机名转换成一个32位的IP地址。这个过程叫做DNS域名解析。
步骤b:ping程序向目的IP地址发送一个ICMP的ECHO包
步骤c:将目标主机的IP地址转换为48位硬件地址,在局域网内发送ARP请求广播,查找主机B的硬件地址。
步骤d:主机B的ARP协议层接收到主机A的ARP请求后,将本机的硬件地址填充到应答包,发送ARP
应答到主机A。
步骤e:发送ICMP数据包到主机B。
步骤f:主机B接收到主机A的ICMP包,发送响应包。
步骤g:主机A接收到主机B的ICMP包响应包。