计算机网络:网络层与IP协议

来源:互联网 发布:ff14人男克劳德数据额 编辑:程序博客网 时间:2024/06/08 16:40

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。

  • 网络在发送分组时不需要先建立连接,每一个IP数据报独立发送,与其前后的分组无关(没有编号)。
  • 网络层不提供服务质量的承诺。所传送的分组可能出错、丢失、重复和失序。如果主机中的进程之间的通信需要时可靠的,那么就要由传输层负责。

网络层主要的协议有IP、ARP、RARP、ICMP、IGMP

这里写图片描述

IP协议

TCP/IP协议在网络互联上采用的做法是在网络层采用了标准化协议,这表示相互互联的网络可以是异构的。由于路由器互联的网络都使用相同的网际协议IP,因此可以把互联之后的网络看做一个虚拟互联网络,也就是逻辑互联网络,表示各种具有异构性的物理网络通过路由器连接后看起来好像是一个统一的网络。

如果源主机要把一个IP数据报发给目的主机,首先源主机要查找自己的路由表:

  • 如果目的主机在本网络上,则不需要经过任何路由器而是直接交付
  • 如果不在本网络上,则必须把IP数据报发送给某个路由器R,路由器R在查找了自己的路由表后,知道应该吧数据报转发给路由器R2进行间接交付。持续这样的转发过程,直到最后一个路由器发现自己和目的主机在一个网络中,那么就把数据报直接交付给目的主机。

IP地址

IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围内唯一的32位的标识符。

IP地址分类

IP地址被分为若干类,每一类地址都由两个固定长度的字段组成:

  • 网络号:标识主机(或路由器)所连接到的网络。
    一个网络号在整个因特网范围内必须是唯一的,
  • 主机号:标志该主机。
    一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。

由此可见,一个IP地址在整个因特网范围内是唯一的。

具体分类为:

  • A类地址
    • 网络号1个字节(8位),其中第一位固定为0
    • 主机号3个字节
  • B类地址
    • 网络号2个字节(16位),其中前两位固定为10
    • 主机号2个字节
  • C类地址
    • 网络号3个字节(24位),其中前三位固定为110
    • 主机号1个字节
  • D类地址
    • 前四为为1110,用于多播(一对多)
  • E类地址
    • 前四位为1111,保留今后使用。

这里写图片描述

  • A类地址
    IP地址空间共有2^32个,A类地址空间共有2^31个,因此A类地址占整个IP地址空间的50%。
    • 可指派的网络号数量为2^7-2。(7次方是因为第一个固定为0),减去2的原因是:
      • 0.x.x.x
        网络号全0的IP地址是个保留地址,意思是本网络
      • 127.x.x.x
        网络号为127保留作为本地软件环回测试本主机的进城之间的通信,并不会把数据报发送到任何网络。
    • 可指派的主机号数量为2^24-2,减2的原因是:
      • 全0的主机号表示的是本主机所连接到的单个网络地址。比如ip地址为5.6.7.8的主机所在的网络地址就是5.0.0.0
      • 全1的主机号表示该网络上的所有主机。
  • B类地址
    B类地址空间共有2^30,占整个IP地址空间的25%。
    128.x.x.x开始。
    • B类地址的网络号字段有2字节,前两位固定为10,剩下14位可以分配。因为这14位无论怎样取值都不会使网络号全0或者全1,因此不存在减2的问题。
      但是实际上128.0.0.1是不能指派的,因此B类地址最大的网络数为2^14-1.
    • 最大主机数为2^16-2,扣除全0和全1的主机号。
  • C类地址
    整个C类地址的空间共约2^29,占12.5%
    192.x.x.x开始。
    • 网络号共有24位,最前面3位为110,还有21位可以分配。而192.0.0.0也是不可指派的,因此可指派的网络数是2^21-1
    • 最大主机数是2^8-2

这其中有几个保留地址:

  • A类:10.0.0.0 - 10.255.255.255
  • B类:172.16.0.0 - 172.31.255.255
  • C类:192.168.0.0-192.168.255.255

IP地址的特点

  • 每一个IP地址都由网络号和主机号两部分组成,这样的好处是:
    • IP地址管理机构在分配时只分配网络号,剩下的主机号由该单位自行分配
    • 路由器仅根据目的主机所连接的网络号来转发分组 ,这样就使路由表中的项目大幅减少,从而减小了路由表所占的空间以及查找路由表的时间。
  • 当一个主机或者路由器连接到两个网络上时,就需要两个或多个IP地址
  • 使用转发器或者网桥连接起来的若干个局域网仍为一个网络,具有同样的网络号。不同网络号的局域网必须使用路由器连接。

IP地址与硬件地址

  • IP地址放在IP数据报的首部,硬件地址在MAC帧的首部
  • 在网络层与网络层以上使用的是IP地址,在数据链路层及以下使用的是硬件地址。

ARP协议与RARP协议

这里写图片描述

网络层使用的是IP地址,但是在实际网络的链路上传送数据帧时,最重要是必须使用硬件地址。
每一个主机都设有一个ARP高速缓存,里面有本局域网上各主机和路由器IP地址到硬件地址的映射表

当主机A要向本局域网上的主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址,有的话就在映射表中查出其对应的硬件地址,再把这个硬件地址写入MAC帧。
如果没有查到主机B的ip地址的话,此时主机A就自动运行ARP,然后按以下步骤找出B的硬件地址:
1. 主机A的ARP进程在本局域网上广播一个请求分组,内容为我的IP地址、硬件地址,我想知道IP地址为x.x.x.x的主机的硬件地址
2. 在本局域网上的所有主机上运行的ARP进程都收到了这个请求。
3. 所有主机都会检查请求中的IP地址是不是自己的IP地址,如果不是的话就忽略这个请求分组。主机B在请求中看到了自己的IP地址,就向主机A发送响应分组,并写入自己的硬件地址。
虽然ARP请求分组是广播的,但是ARP响应分组是单播的,也就是一个原地址发送到一个目的地址。
同时主机B也会将主机A的ip地址到硬件地址的映射也写入自己的ARP高速缓存中。
4. 主机A收到主机B的响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。

注意!ARP是解决同一个局域网上的主机或路由器的地址映射。如果两个主机不在一个网络中,主机A就需要知道路由器的硬件地址并发送,路由器也是要找出主机B的硬件地址并进行转发。

ICMP协议

用于在主机、路由器之间传递控制消息
当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。

ICMP的应用有:

  • ping操作:用来测试两个主机之间的连通性。
    应用层直接使用网络层ICMP,而没有经过运输层的TCP或者UDP
  • traceroute操作:跟踪一个分组从原点到终点的路径