http://rabbit.xttc.edu.cn/rabbit/htm/artical/201091113054.shtml

1.IP数据报

IP数据报的格式能够说明IP协议都具有什么功能,下面我们通过介绍IP数据报首部中各字段的含义,来了解IP协议的功能。1>IP 数据报首部的固定部分中的各字段
<1>版本:占 4 位,指 IP 协议的版本。目前的 IP 协议版本号为 4 (即 IPv4)<2>首部长度:占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节)。因此 IP 的首部长度的最大值是 60 字节。<3>区分服务:占 8 位,用来获得更好的服务。在一般的情况下都不使用这个字段<4>总长度:占 16 位,单位为字节。指首部和数据之和的长度。数据报的最大长度为 2 16=65535 字节<5>标识(identification):占 16 位,它是一个计数器,用来产生数据报的标识。<6>标志(flag):占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。标志字段中间的一位是 DF (Don't Fragment) 。只有当 DF = 0 时才允许分片。<7>片偏移(12 位)指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。<8> 生存时间(8 位):记为 TTL (Time To Live)数据报在网络中可通过的路由器数的最大值。<9> 协议(8 位)字段指出应将数据部分交给运输层哪一个协议进程
<10>首部检验和(16 位)字段只检验数据报的首部不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。<11>源地址和目的地址都各占 4 字节2>IP 数据报首部的可变部分: 已很少被使用
2.地址解析协议 ARP协议
我们知道,网络层以上使用的是IP地址,但在实际网络的链路上传送数据帧时最终还是必须使用该网络的MAC地址。但 IP地址和下面的MAC地址间不存在简单映射关系。此外, 在一个网络上可能经常会有新的主机加入或撤出。如何使IP与MAC对应?1>ARP工作原理地址解析协议ARP解决这个问题的方法是: 在主机ARP高速缓存中存放一个从IP地址到MAC地址的映射表,而且这个映射表还经常动态更新(新增或超时删除)。<1>映射表建立过程
<2> ARP高速缓存的作用
- 为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。
- 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了
<3>应该注意的问题
- 虽然ARP请求分组是广播发送的,但ARP响应分组是普通单播。
- ARP把保存在高速缓存中的每一个映射地址都设置生存时间(10—20分钟),凡超时的项目都将删除。
- ARP用来解决同一个局域网上的主机或路由器的IP地址和硬件地址映射问题。
- 从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的
2>使用ARP的四种典型情况<1> 发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。<2> 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。<3> 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。<4> 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。3>为什么不直接使用硬件地址MAC进行通信?<1>由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。<2>连接到因特网的主机都拥有统一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用 ARP 来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
3.网际控制报文协议ICMP
1>ICMP简介<1>为了提高IP数据报交付成功的机会,在网际层使用了因特网控制报文协议ICMP<2>ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告<3>ICMP不是高层协议,而是IP层的协议<4>ICMP报文作为IP层数据报数据,加上数据报的首部,组成IP数据报发送出去
2>种类<1>差错报文
- 终点不可达:网络不可达,主机不可达,协议不可达,端口不可达等6种
- 源点抑制(Source quench) :当网络产生拥塞时,向源站发送的报文,使源点将数据报发送速率放慢
- 时间超时:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送超时报文
- 参数问题:当收到的报文首部中参数错误时,要丢弃
- 改变路由(重定向)(Redirect) :一般主机传送数据时先发给默认路由,但但默认路由发现有更好的路由选择时,会给源主机发送一个重定向的报文
<2>询问报文●回送请求和回答报文◆ping 用来测试两个主机间的连通性
--使用了ICMP回送请求与回送回答报文--是应用层直接使用网络层ICMP的例子,它没有通过运输层的TCP或UDP.●时间戳请求和回答报文●掩码地址请求和回答报文●路由器询问和通告报文
4.IP多播
1>单播与多播比较
在一对多通信中,多播可大大节省网络资源
2>多播特点(1) 多播使用组地址——D 类地址( 224.x.x.x---239.x.x.x)。 多播地址只能用于目的地址,而不能用于源地址。(2) 有些 D 类地址( 224.0.0.X)已经被 IANA 指派为永久组地址了。但 224.0.1.0 至 238.255.255.255 则是全球范围都可使用的多播地址。(3) 用 每一个 D 类地址标志一个 多播组。这样, D 类地址共可标志 2 28 个多播组。3>多播数据报•多播数据报也是“尽最大努力交付”,不保证一定能够交付多播组内的所有成员。•多播数据报和一般的 IP 数据报的区别就是它 使用 D 类 IP 地址作为目的地址,并且 首部中的协议字段值是 2,表明 使用 IGMP 协议。3>IP多播需要两种不同的协议,即IGMP和多播路由选择协议
仅有IGMP是不能完成多播的,连接在局域网上的多播路由器还必须和网络上其它多播路由器协同工作,以便把多播数据报用最小代价传送给所有组成员,这就需要 多播路由选择协议。多播路由选择协议尚未标准化。