TCP/IP详解之IP协议和ARP,RARP

来源:互联网 发布:vbscript脚本语言java 编辑:程序博客网 时间:2024/06/01 08:06

概念

IP 是TCP/IP协议族中最为核心的协议。所有TCP、UDP、ICMP、IGMP数据都以IP数据报格式传输。IP提供不可靠、无连接的数据报传送服务。

ARP为地址解析协议,为IP地址到对应的硬件地址之间提供动态映射。

RARP是被那些没有磁盘驱动器的系统使用的。

这三个协议都处于同一层中,ARP通过IP地址找到目标主机的Mac地址。IP则承载要发送的信息。数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息。

IP

先来看看IP首部内容,普通IP首部为20字节,数据经过网络层,它给数据加一个IP首部……
这里写图片描述

具体内容参考书本。。。

IP路由选择

IP路由选择即IP层既可以配置成主机的功能,也可以配置为路由器的功能,配置成路由器时,是一个转发IP数据报的过程。
IP层在内存中有一个路由表。当收到一份数据报并进行发送,都会对该表进行搜索。

路由表中信息:
  1. 目的IP地址。
  2. 下一站路由器的IP地址。
  3. 标志。一个指明目的IP地址是网络地址还是主机地址。另一个指明下一站路由器是否为真正的下一站路由器还是一个直接相连的接口。
  4. 为数据报的传输指定一个网络接口。

那么一个准备好的IP数据包怎样送到目的地?

先来看看特殊的情况,比如主机和目的主机在同一个以太网上,根本用部上路由,主机发送的IP包送到链路层然后通过包中的IP地址进行ARP地址解析找到MAC地址,送过去。

但多数情况下他们不直接相连。此时IP路由选择逐跳的进行的。跳的时候并不知道到达目的地的完整路经,然后前面IP首部由一个TTL部分,跳一次它减少1,减到0时,这个数据报就毙了……

IP路由选择主要完成下面功能:
  1. 搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机。
  2. 搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要子网掩码的协助。如果找到路由器,则将该包发向路由器。
  3. 搜索路由表,如果匹配同子网路由器失败,则匹配同网号路由器,如果找到路由器,则将该包发向路由器。
  4. 搜索路由表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包
  5. 如果都失败了,就丢掉这个包。

子网寻址

现在所有主机都支持子网编址。把原本只由一个网络号和一个主机号组成的IP地址细分为:

网络号 + 子网号 + 主机号

共占32位。通过子网掩码可知主机有多少比特用于子网号及多少比特用于主机号。
子网掩码一般为 255.255.255.0 形式。将其转换为2进制的01码,其中所有0为主机号对应的位数。

给定子网掩码和IP地址后,主机可确定是本子网上的主机还是本网络其他子网的主机或者其他网络上的主机。如果知道IP地址,那么就知道它是否为A类、B类或C类地址。也知道网络号和子网号之间的界限。

各类IP地址的范围及划分:
这里写图片描述
这里写图片描述

图中最后的主机号根据子网掩码转换的01码判断子网占几位,主机号占几位,位数则决定了本网络上最大可设置的主机数。

A R P

ARP协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口。当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址对应表缓存),如果查询的IP-MAC值对不存在,那么主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的主机,而广播主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方)。发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作。

用于以太网的ARP请求或应答包格式

这里写图片描述

具体内容查书。

RARP是许多无盘系统在引导时用来获取IP地址的。一个RARP请求在网络上进行广播,它在分组(分组格式和ARP一样)中标明发送端的硬件地址,以请求相应IP地址的响应。应答通常为单播形式。

0 0