- 由于TCP、UDP、ICMP和IGMP及一些其他的协议都要利用IP传送数据,因此IP必须在生成的IP首部中加入某种标识,以表明其承载的数据属于哪一类。为此,IP在首部中存入一个长度为8 bit的数值,称作协议域。
其中1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议。
协议类型字段.png
- ICMP是一种集差错报告与控制于一身的协议。在所有TCP/IP主机上都可实现ICMP。ICMP消息被封装在IP数据报里,ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。
常用的“ping”就是使用的ICMP协议。“ping”这个名字源于声纳定位操作,目的是为了测试另一台主机是否可达。该程序发送一份ICMP回应请求报文给主机,并等待返回ICMP回应应答。一般来说,如果不能Ping到某台主机,那么就不能Telnet或者FTP到那台主机。反过来,如果不能Telnet到某台主机,那么通常可以用Ping程序来确定问题出在哪里。Ping程序还能测出到这台主机的往返时间,以表明该主机离我们有“多远”。
然而随着Internet安全意识的增强,出现了提供访问控制列表的路由器和防火墙,那么像这样没有限定的断言就不再成立了。一台主机的可达性可能不只取决于IP层是否可达,还取决于使用何种协议以及端口号。
ICMP.png
- 数据链路层协议如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的。当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48 bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据报中的目的IP地址。
ARP协议需要为IP地址和MAC地址这两种不同的地址形式提供对应关系。
ARP过程如下:ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机。这个过程称作广播,ARP请求数据帧中包含目的主机的IP地址,其意思是“如果你是这个IP地址的拥有者,请回答你的硬件地址。
连接到同一LAN的所有主机都接收并处理ARP广播,目的主机的ARP层收到这份广播报文后,根据目的IP地址判断出这是发送端在寻问它的MAC地址。于是发送一个单播ARP应答。这个ARP应答包含IP地址及对应的硬件地址。收到ARP应答后,发送端就知道接收端的MAC地址了。
ARP高效运行的关键是由于每个主机上都有一个ARP高速缓存。这个高速缓存存放了最近IP地址到硬件地址之间的映射记录。当主机查找某个IP地址与MAC地址的对应关系时首先在本机的ARP缓存表中查找,只有在找不到时才进行ARP广播。
ARP工作机制.png
|