您当前的位置: 首页 >  网络
  • 0浏览

    0关注

    322博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Linux从青铜到王者】第二十一篇:Linux网络基础第三篇之数据链路层

森明帮大于黑虎帮 发布时间:2021-08-14 00:31:20 ,浏览量:0

在这里插入图片描述

系列文章目录 前言

数据链路层用于两个设备(同一种数据链路节点)之间进行传递!

" />

八、NAT协议

在这里插入图片描述

在这里插入图片描述 之前我们讨论了,IPv4协议中, IP地址数量不充足的问题,NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能,NAT也叫地址转换协议。

  • 作用:
  • 私网对公网请求的时候:将网络数据当中的私网的源ip地址转化成为公网的ip地址。
  • 公网对私网的应答:将网络数据当中的公网的目的ip地址转化成为私网的ip地址。 在这里插入图片描述
  • 静态NAT:NAT协议,将一个私网和一个公网唯一进行映射管理。
  • 动态NAT:NAT管理的不止是一个公网ip,当私网数据到来的时候,选择一个空闲的ip进行映射。

NAT的工作机制:

如上图,以10.0.0.10的源主机与163.221.120.9的目的主机进行通信为例。利用NAT,途中的NAT路由器将发送源地址从10.0.0.10转换为全局的IP地址(202.244.174.37)再发送数据。反之,当包从地址163.221.120.9发过来时,目标地址(202.244.174.37)先被转换成私有IP地址10.0.0.10以后再被转发(在TCP或UDP中,由于IP首部中的IP地址还要用于校验和的计算,因此当IP地址发生变化时,也需要相应地将TCP、UDP的首部进行转换)

总结一下就是:不管是静态NAT还是动态NAT,都没有缓解ipv4枯竭的问题,本质上还是一个私网IP一定要对应一个公网ip,才能访问互联网。

九、NAPT协议(动态NAT重载)

在这里插入图片描述 在进行私网ip转化为公网ip的时候,不仅仅将ip地址转换掉了,并且还将传输层的端口也转换掉了。

在这里插入图片描述 主机163.221.120.9的端口号是80,LAN中有两个客户端10.0.0.10和10.0.0.11同时进行通信,并且这两个客户端的本地端口都是1025。此时,仅仅转换IP地址为某个全局地址202.244.174.37,会令转换后的所有数字完全一致。为此,只要将10.0.0.11的端口号转换为1026就可以解决问题。如图所示,生成一个NAPT路由器的转换表,就可以正确地转换地址跟端口的组合,令客户端A、B能同时与服务器之间进行通信。

这种转换表在NAT路由器上自动生成。例如,在TCP的情况下,建立TCP连接首次握手时的SYN包一经发出,就会生成这个表。而后又随着收到关闭连接时发出FIN包的确认应答从表中被删除(UDP中两端应用进行通信时起止时间不一定保持一致,因此在这种情况下生成转换表相对较难) 。

注:在使用TCP或UDP的通信当中,只有目标地址、源地址、目标端口、源端口以及协议类型(TCP还是UDP)五项内容都一致时才被认为是同一个通信连接。此时所使用的正是NAPT。

NAPT的场景下,一个公网ip,理论上最大可以转换多少个私网ip?

216 = 65536个,即 0 ~ 65535。

对NAT协议的总结:

  • NAT网关对于私网主机和公网主机而言,是透明的,双方在通信过程中是无感知的。
  • NAT网关会保存转换之后的映射关系,防止应答回来之后再次进行转换。
  • 私网 =》公网:是将网络数据当中的源ip地址修改为公网ip地址。
  • 公网 =》私网:是将网络数据当中的目的ip地址修改成为私网ip地址。
  • NAPT增加了端口的转换,就可以让一个公网ip服务多个私网主机。缓解了ip地址枯竭的问题数据只能先从私网到公网,不能从公网到私网。
十、ICMP协议

ICMP协议是一个 网络层协议一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输. 如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因。

  • ICMP功能:
  • 确认IP包是否成功到达目标IP地址。
  • 通知在发送过程中IP包被丢弃的原因。
  • ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议。
  • ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6。
十一、ping命令

在这里插入图片描述

  • 注意, 此处 ping 的是域名, 而不是url! 一个域名可以通过DNS解析成IP地址。
  • ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期)。
  • ping命令会先发送一个 ICMP Echo Request给对端。
  • 对端接收到之后, 会返回一个ICMP Echo Reply。

一个值得注意的坑:

  • 有些面试官可能会问: telnet是23端口, ssh是22端口, 那么ping是什么端口?千万注意!!! 这是面试官的圈套!

ping命令基于ICMP, 是在网络层. 而端口号, 是传输层的内容. 在ICMP中根本就不关注端口号这样的信息。

关注
打赏
1664288938
查看更多评论
立即登录/注册

微信扫码登录

0.0392s