网络层其他协议简介

网络层其他协议简介

IP协议是网络层最核心的协议,但除此以外,网络层还有众多协议保证了IP协议的正常运行。下面介绍几个其中最重要的。

一、ARP协议与RARP协议

当路由选择算法确定了下一跳路由器后,要做的事情就是把数据包通过链路层发送到下一跳路由器。可是通过链路层的发送还需要MAC地址。所以,ARP协议的作用就是通过网络设备IP地址求其对应的MAC地址。
在这里插入图片描述
图1 ARP协议的工作过程

ARP协议通过广播的形式在其所在局域网中发送ARP请求报文,以找到IP对应的设备(网卡);随后该设备的网卡再通过ARP响应报文的形式将自己的MAC地址回传给请求方。这样请求方就得到了目标MAC地址。

当然,每次都在局域网内发送广播报文也很占用带宽资源。这时还是会用到万能的缓存机制来帮忙。当主机通过ARP请求获得一个设备的MAC地址后会缓存在本地的ARP表项中,下次直接查表找MAC地址就好了!

而RARP完全是ARP的逆向过程!一个刚登陆互联网的网络设备,只知道自己MAC地址,需要通过RARP协议向内网广播以请求IP地址。就是由自己的MAC获得自己IP地址的过程。

二、DHCP协议

DHCP协议是我们上网十分常用的网络层协议。负责为每个刚连上网络的设备分配一个IP地址。不用我们手动配置了。(当然你要是想手动配置一下设备的IP也可以。。ifconfig命令就能做到)

可以看到,DHCP协议做的事情好像和RARP协议非常像,都是连上网络时获取自己的IP地址。区别是DHCP是一种更精巧的协议,是RARP的升级版,它的工作过程比RARP要复杂很多,也是我们现在经常使用的主流协议。

DHCP协议通过外网的DHCP服务器或内网的DHCP中继代理服务器提供。使用**“DHCP四次握手”**机制实现,大概的步骤如下:

  • DHCP发现(DHCP DISCOVER):

    客户端刚连上网时,还没有IP呢。需要用广播的形式在内网中找到DHCP服务器或中继代理,并向其请求IP地址。

  • DHCP提供(DHCP OFFER):

    DHCP服务器或中继代理收到了客户端的请求后,仍会使用本地广播的形式向客户端分配地址。响应报文应包含:准备分配的IP地址子网掩码默认网关IP本地DNS服务器IPIP有效期

  • DHCP请求(DHCP REQUEST):

    客户端收到DHCP提供报文后,会向服务器发送DHCP请求报文,回显提供报文的内容

  • DHCP确认:(DHCP ACK):

    DHCP服务器或中继代理收到REQUEST并确认无误后,发送ACK给对方,分配IP任务完成。

三、NAT协议

1. NAT协议简介

前篇介绍过,NAT协议的出现缓解了IPv4地址快速耗尽的局面。通过NAT协议,IP地址可以被复用,意味着一个IP地址可以对应多个端设备。乍一想这个事情怎么可能呢?这就是NAT协议的工作内容了:

在这里插入图片描述
图2 NAT协议工作过程

由上图可见NAT协议的作用:

  • 将私网地址转换成公网地址:

    私网的默认网关路由器维护一张NAT表,当私网设备需要和外网通信时,网关通过NAT查找源设备的私网地址,将其改写成NAT表中对应的公网地址。之后,IP头部的源IP字段都被替换成公网IP。

  • 利用路由器端口号复用公网IP:

    观察上图的NAT表可以发现,这张NAT表维护的两个公网IP都是120.229.175.121,只有端口号不一样;而私网地址是两个不一样的地址。就这样,NAT协议通过给一个公网IP设置不同的端口号来区分私网IP,从而达到了复用IP的效果。

2. NAT内网穿透技术

上面描述的NAT机制有2个问题:

  • 把维护NAT表项的工作全部交给默认网关路由器,路由器表示亚历山大。。
  • 万一路由器中的NAT服务器崩了,NAT服务将不能使用。。

解决的方法之一还是采用“分而治之”的思想,将NAT服务器的工作内容分配给各端设备,这也是NAT内网穿透的核心:

客户端主动从默认网关中的NAT服务器获取公网IP(port),然后自己给自己建立映射条目,当需要向外网通信时,自己就可以做地址转换了!

四、ICMP协议与ping命令

ICMP协议(Internet Control Message Protocol,互联网控制报文协议),顾名思义,就是指负责发送互联网控制报文的协议。。

1. ICMP报文格式

什么叫控制报文呢?就是说当网络环境出现故障、网络环境发生变化等等一些表征发出去报文的状态的信息报文。这种控制报文分为两大类,“查询报文”“差错报文”。以下是常用的ICMP报文类型:

在这里插入图片描述
图3 ICMP报文类型
在这里插入图片描述
图4 ICMP报文格式

由图4可见,ICMP报文是内嵌于IP数据包中的。ICMP报文整体作为IP数据包的数据部分存在。

ICMP报文也有首部字段:**类型、代码、校验和。**类型和代码字段确定了该ICMP报文属于那种类型的控制报文。

2. ICMP协议的应用举例

  • **ping程序:**ping是我们检测某个IP(域名)是否可以进行网络通信的利器,它并没有用任何传输层协议来通信, 而是使用了ICMP协议。ping通过“回送应答”和“回送请求”类型的ICMP报文来探测某个IP是否具备网络条件。

    LAPTOP-OHBI7I8S% ping www.baidu.com
    PING www.a.shifen.com (182.61.200.7) 56(84) bytes of data.
    64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=1 ttl=50 time=23.0 ms
    64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=2 ttl=50 time=23.4 ms
    64 bytes from 182.61.200.7 (182.61.200.7): icmp_seq=3 ttl=50 time=25.5 ms
    

    以前看ping输出的时候只知道下面弹出一堆东西就是好使,也不知道啥意思。现在学习了ICMP协议后,这些输出字段是不是觉得很好理解了呢?

    icmp_seq:ICMP报文序号

    ttl:time to live,最大跳数(50跳)

    time:这里指的是往返时间,RTT(24ms左右)

  • **traceroute程序:**利用差错控制报文来探测当前主机到目标IP的路由器IP地址。

    LAPTOP-OHBI7I8S% traceroute www.baidu.com 
    traceroute to www.a.shifen.com (182.61.200.7), 64 hops max
      1   172.22.128.1  0.458ms  0.453ms  0.313ms 
      2   192.168.3.1  2.688ms  1.161ms  0.985ms 
      3   10.17.172.1  3.590ms  2.901ms  12.542ms 
      4   10.6.1.34  4.226ms  8.978ms  9.034ms 
      5   175.190.120.129  4.831ms  9.552ms  4.150ms 
      6   *  *  * 
      7   14.197.232.58  25.306ms  5.240ms  11.935ms 
      8   *  *  * 
      9   14.197.249.134  24.960ms  23.208ms  24.843ms 
     10   *  *  * 
     11   182.61.255.45  25.870ms  32.488ms  27.820ms
    

    结果显示的就是我的主机到目标IP(域名)所经历的各跳路由器IP。

    这是咋做到的呢?

    正是利用了ICMP的差错报文——超时。traceroute程序向目标主机逐次发送TTL递增的探测报文(初始TTL为1)。这样,本机发送的探测报文过了指定跳数就会被路由器丢弃;那么,就会收到若干个路由器发来的ICMP超时差错报文,而这些路由器正是探测报文从源端经过递增跳数到达的路由器,直到对端主机。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值