IP控制协议
IP协议只负责传送IP包,无法检测和控制网络中的一些问题,这些工作有Internet的控制协议来完成。
ICMP(Internet Control Message Protocol)
(1)IP协议提供的是尽力而为的通信服务。
(2)数据报的丢失、重复延迟、乱序在所难免。
(3)ICMP提供了一种把通信服务中的差错向源站点报告的机制。
ICMP报文格式
ICMP数据连同它的头标一起封装在一个IP分组中,但TCP/IP模型的协议分层中,并未把ICMP单列为一层。
0类型;1代码;2~3校验和;4~n数据区
ICMP报文主要类型
类型 类型域 ICMP报文类型
差错报文 3 目的站点不可达(有许多不同的类型由代码段表明)
11 数据报超时
12 数据报参数错
控制报文 4 源抑制(用于拥塞控制)
5 重定向
请求/应答报文 8 回应请求(回应请求和应答一般用于测试网络是否通)
0 回应应答
13 时间截请求(这两个主要用于两主机协作同步时钟)
14 时间截应答
ICMP应用举例
(1)ping命令实际上就是用ICMP回应请求和回应应答实现的。使用ping命令,将向目的站点发送一个ICMP回应请求报文(包括一些任选的数据),如目的站点接收到该报文,必须向源站点发回一个ICMP回应应答报文,源站点收到应答报文(且其中的任意数据与发送的相同),则认为目的站点是可达的,否则为不可达。
(2)路由跟踪tracert命令(Unix下为traceroute)。tracert过程是通过ICMP数据报超时报文来得到一张途径路由列表的。源主机向目的主机发送一个IP报文,并设置hop为1,到达第一个路由器时,hop减1,为0,则该路由器回发一个ICMP数据报超时报文,源主机取出路由器的IP地址即为途经的第一个路由器端口地址。接着源主机再向目的主机发第二个IP报文,并设置hop为2,然后再发第3个、第4个IP数据报,……直至到达目的主机。但互联网运行的环境是动态的,每次路径的选择有可能不一致,所以,只有在相对稳定(相对变化较缓慢)的互联网中,tracert才是有意义的。
(3)得到路径中的最小MTU。源主机发送一系列的探测IP数据报,并置DF=1,即不允许分段,如途径某个网络的MTU较小,则路由器将丢弃该数据报并发挥一个ICMP数据报参数错,要求分段,源主机则逐步减小数据报长度,并仍置DF=1,直至某个探测报文成功到达目的主机,即得到路径中的最小MTU。毕竟能数据包能不分段尽量不分段,重组麻烦。
地址解析
ARP(RFC 1512)(Address Resolution Protocol)
地址解析的作用
(1)协议地址
软件提供的抽象地址,如IP地址,它使整个互联网看成一个网络,但真正的物理网络并不能通过IP地址来定位机器。
(2)物理地址
硬件地址,如MAC地址。
(3)地址解析
协议地址和物理地址之间的转换,如IP地址和MAC地址之间的转换,将IP地址转换为MAC地址。地址解析必须在某一物理网络中进行,一台主机在向同一物理网络上的另一台计算机发送数据时,现作地址解析,然后按物理地址直接发送数据帧。IP地址是虚拟的,到达一个路由器,将IP数据包解封装,得到IP地址,做地址解析,得到MAC地址,封装再发送。
地址解析协议ARP
工作原理(以IP网络为例)
(1)一个ARP请求消息是一个数据帧,其中包含发送站点的硬件地址和协议地址,以及目的站点的IP地址,并把此数据帧再本物理网络内广播。
(2)一个ARP应答消息是一个数据帧,其中包含应答站点的硬件地址和协议地址,以及原发送站点的IP地址,并把此数据帧发送给原发送站点。
(3)静态:每个站点都有一张表。集中:ATM网络这张表由一个服务器负责。分布式:Internet用,每一台机器都保存自己的IP地址和MAC地址,查找时通过广播。
(4)站点W有数据发送给目的站点Y,但目前尚不知道站点Y的MAC地址,无法组成数据帧。ARP的询问报文中包含目的站点Y的IP地址,ARP的应答报文中包含目的站点Y的MAC地址。
ARP消息在以太网中,直接封装在物理帧中发送。ARP消息帧的类型值为0X806。
暂存ARP应答和处理接收的ARP消息
(1)ARP应答暂存于Cache或内存中,以后即可查表,不必再发询问报文,以减少网络的通信量。
(2)从消息中取出发送方的协议地址和硬件地址,更新cache中已有信息。
(3)检查消息时请求还是应答,若是应答,则接收;若是请求,检查是否为发送给本站的,如是,则发应答消息。
RARP、BOOTP和DHCP
这三个协议将MAC地址转换为IP地址,常用在无盘工作站中。无盘工作站没有磁盘,不能存储TCP/IP的配置文件,因此必须有协议实现MAC地址转换为IP地址。
RARP(RFC 903)(Reverse Address Resolution Protocol)
给出一个以太网地址,找到相应IP地址。
每个子网需要一个RARP服务器,当工作站要得到其IP地址时,将它的以太网地址广播出去,RARP服务器得到此信息,再其配置文件中找到该以太网地址,把对应的IP地址返回该工作站。RARP的消息不能跨路由器,因此每个子网中都必须有一个RARP的服务器。
BOOTP(Bootstrap Protocol)
BOOTP时一个高层的程序,它可以渠道RARP服务器得到IP地址、启动文件地址和配置信息。BOOTP协议采用客户/服务器工作方式,需要得到配置信息的一方称为BOOTP客户,提供配置信息的一方称为BOOTP服务器。客户方首先利用局部广播(如果子网中有BOOTP服务器)或全局广播(BOOTP服务器不在同一子网中)的IP地址发送一条请求报文,否则再请求报文中的发送方IP地址部分放入全0,表示客户方需要得到IP地址,BOOTP的服务器用广播地址返回一条包含客户的IP地址及其它启动信息的应答报文。
BOOTP的问题
需要手工配置IP地址和MAC地址的对应表,当一台新的主机加入某一LAN时,它不能立即用BOOTP启动,必须等到管理员赋给它一个IP地址,并把该IP地址和MAC地址的对应关系手工写入BOOTP的配置文件。
DHCP(Dynamic Host Configuration Protocol)
(1)可以静态或动态为主机分配IP地址。(拨号上网的时候由DHCP服务器动态分配一个IP地址,否则无IP地址)
(2)基于客户/服务器的工作方式。
(3)不需要为每个LAN设置一台DHCP服务器,多个LAN可共享一台DHCP服务器,但每个LAN必须有一台DHCP中继代理,负责转发客户请求。
DHCP工作过程
(1)客户首先广播一条包含它自己的客户编号的报文(DHCP DISCOVER报文),以声明自己的出现。
(2)每个收到客户DHCP DISCOVER的服务器检查用户的配置文件决定时分配一个静止地址或动态地址,如果是要一个动态地址,服务器从“地址池”里选择一个IP地址,如果是要静态地址,服务器从配置文件中取出该客户的静态地址,服务器从配置文件中取出该客户的静态地址,将该地址放在一条DHCP OFFER报文中,送回用户。
(3)客户收到DHCP OFFER报文后,在众多的服务器中选择一个服务器,这通常是根据DHCP OFFER报文中提供的选项来决定。
(4)客户再广播一条DHCP REQUEST报文,之处选择了哪一个服务器,并申请使用该服务器提供的IP地址。
(5)当服务器收到DHCP REQUEST报文,并且该报文之处使用了它提供的地址,则服务器将该地址标记为租用,如如武器收到的报文指出客户接收了另一服务器提供的地址,则将地址退回给“地址池”,如果在一段时间没有收到报文,服务器也将地址退回“地址池”,选中的服务器发送一条应答,报文DHCP ACK。
(6)客户确定该配置信息是否合法,接收了合法的租用后,客户指定一个绑定binding服务器的声明,继续使用该IP地址和选项。
from:http://blog.chinaunix.net/space.php?uid=7921481&do=blog&id=1616850