Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1156995
  • 博文数量: 309
  • 博客积分: 6093
  • 博客等级: 准将
  • 技术积分: 3038
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-03 17:14
个人简介

linux学习记录

文章分类

全部博文(309)

文章存档

2014年(2)

2012年(37)

2011年(41)

2010年(87)

2009年(54)

2008年(88)

分类:

2008-09-25 15:09:54

IP控制协议

 

IP协议只负责传送IP包,无法检测和控制网络中的一些问题,这些工作有Internet的控制协议来完成。

 

ICMPInternet Control Message Protocol

1IP协议提供的是尽力而为的通信服务。

2)数据报的丢失、重复延迟、乱序在所难免。

3ICMP提供了一种把通信服务中的差错向源站点报告的机制。

 

ICMP报文格式

ICMP数据连同它的头标一起封装在一个IP分组中,但TCP/IP模型的协议分层中,并未把ICMP单列为一层。

0类型;1代码;2~3校验和;4~n数据区

 

ICMP报文主要类型

类型                  类型域              ICMP报文类型

差错报文              3                   目的站点不可达(有许多不同的类型由代码段表明)

                          11                   数据报超时

                          12                   数据报参数错

控制报文             4                     源抑制(用于拥塞控制)

                          5                     重定向

请求/应答报文      8                     回应请求(回应请求和应答一般用于测试网络是否通)

                          0                     回应应答

                         13                     时间截请求(这两个主要用于两主机协作同步时钟)

                         14                     时间截应答

 

ICMP应用举例

1ping命令实际上就是用ICMP回应请求和回应应答实现的。使用ping命令,将向目的站点发送一个ICMP回应请求报文(包括一些任选的数据),如目的站点接收到该报文,必须向源站点发回一个ICMP回应应答报文,源站点收到应答报文(且其中的任意数据与发送的相同),则认为目的站点是可达的,否则为不可达。

2)路由跟踪tracert命令(Unix下为traceroute)。tracert过程是通过ICMP数据报超时报文来得到一张途径路由列表的。源主机向目的主机发送一个IP报文,并设置hop1,到达第一个路由器时,hop1,为0,则该路由器回发一个ICMP数据报超时报文,源主机取出路由器的IP地址即为途经的第一个路由器端口地址。接着源主机再向目的主机发第二个IP报文,并设置hop2,然后再发第3个、第4IP数据报,……直至到达目的主机。但互联网运行的环境是动态的,每次路径的选择有可能不一致,所以,只有在相对稳定(相对变化较缓慢)的互联网中,tracert才是有意义的。

3)得到路径中的最小MTU。源主机发送一系列的探测IP数据报,并置DF=1,即不允许分段,如途径某个网络的MTU较小,则路由器将丢弃该数据报并发挥一个ICMP数据报参数错,要求分段,源主机则逐步减小数据报长度,并仍置DF=1,直至某个探测报文成功到达目的主机,即得到路径中的最小MTU。毕竟能数据包能不分段尽量不分段,重组麻烦。

 

地址解析

 

ARPRFC 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,但目前尚不知道站点YMAC地址,无法组成数据帧。ARP的询问报文中包含目的站点YIP地址,ARP的应答报文中包含目的站点YMAC地址。

 

ARP消息在以太网中,直接封装在物理帧中发送。ARP消息帧的类型值为0X806

 

暂存ARP应答和处理接收的ARP消息

1ARP应答暂存于Cache或内存中,以后即可查表,不必再发询问报文,以减少网络的通信量。

2)从消息中取出发送方的协议地址和硬件地址,更新cache中已有信息。

3)检查消息时请求还是应答,若是应答,则接收;若是请求,检查是否为发送给本站的,如是,则发应答消息。

 

RARPBOOTPDHCP

这三个协议将MAC地址转换为IP地址,常用在无盘工作站中。无盘工作站没有磁盘,不能存储TCP/IP的配置文件,因此必须有协议实现MAC地址转换为IP地址。

 

RARPRFC 903)(Reverse Address Resolution Protocol

给出一个以太网地址,找到相应IP地址。

每个子网需要一个RARP服务器,当工作站要得到其IP地址时,将它的以太网地址广播出去,RARP服务器得到此信息,再其配置文件中找到该以太网地址,把对应的IP地址返回该工作站。RARP的消息不能跨路由器,因此每个子网中都必须有一个RARP的服务器。

 

BOOTPBootstrap Protocol

BOOTP时一个高层的程序,它可以渠道RARP服务器得到IP地址、启动文件地址和配置信息。BOOTP协议采用客户/服务器工作方式,需要得到配置信息的一方称为BOOTP客户,提供配置信息的一方称为BOOTP服务器。客户方首先利用局部广播(如果子网中有BOOTP服务器)或全局广播(BOOTP服务器不在同一子网中)的IP地址发送一条请求报文,否则再请求报文中的发送方IP地址部分放入全0,表示客户方需要得到IP地址,BOOTP的服务器用广播地址返回一条包含客户的IP地址及其它启动信息的应答报文。

BOOTP的问题

需要手工配置IP地址和MAC地址的对应表,当一台新的主机加入某一LAN时,它不能立即用BOOTP启动,必须等到管理员赋给它一个IP地址,并把该IP地址和MAC地址的对应关系手工写入BOOTP的配置文件。

 

DHCPDynamic 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地址和选项。
阅读(1064) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~