数据链路层用于两个设备(同一种数据链路节点)之间进行传递!
" /> 八、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协议是一个 网络层协议一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输. 如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因。
- ICMP功能:
- 确认IP包是否成功到达目标IP地址。
- 通知在发送过程中IP包被丢弃的原因。
- ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议。
- ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6。
- 注意, 此处 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中根本就不关注端口号这样的信息。
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?