(如果自动被设置成vip,请私信作者)
一、域名转服务器地址
我们都知道,网络中表明地址的是ip地址,但在浏览器中输入的都是域名,而在网络中,路由器交换机是不认域名的。这时就需要一个域名系统(服务)协议 来帮助我们进行域名和IP地址的转换。(之所以要有域名是为了方便记忆网站地址,毕竟ip地址很难记)早期的墙就是对DNS进行限制,让你无法访问境外网站,可以通过修改本机host文件来整一些破解软件的操作,如果更有兴趣的话,可以看看DNS劫持内容。
二、数据封装
这里昨天已经讲过了,主要就是从TCP/IP模型,从应用层到物理层对原数据进行层层加工,以便于能在网络中识别。
(1)应用层:浏览器将请求数据(ip)封装为http协议(如果没有带端口号,默认(80端口)的数据。
(2)传输层:tcp将前一个封装数据包再次封装为tcp数据包(ip+port)
(3)网络层:ip协议再次封装
(4)数据链路层:以太网技术,携带mac(系统将数据包发送到本机网卡),封装为数据帧
(5)请求端—>发送数据---->局域网主机
这时,通过子网掩码,发现目的IP地址不在本网段中,就需要把数据包发往网关(路由器)处理。
【五元组】:源IP地址、目的IP地址、协议号、源端口、目的端口
三、NAT+NAPT
这里我们发现一个问题:我们的IP地址是192.168.1.4
我们知道IP地址都是唯一的,但192.168.1.4感觉好像不唯一,这个很多啊,感觉大家都可以同时用这个IP地址而不冲突。这里就要说说关于IP地址的问题了,IPV4的地址有有限的,而随着设备不断增多,IPv4的地址已经不够了,为了让更多的设备接入网络,就这样设置。192.168.1.4为私网IP地址,也就是在这个路由器内的地址是这样的,如果想要知道详细的可以去查查IP地址有关。
NAPT协议就是把主机1的源端口映射为路由器1的端口
此时,原数据包的信息就要进行变化(先解包再封装):
1.源mac修改为本路由器mac;
2.目的mac修改下一站(路由器2)mac;
3.源ip:主机1私网ip修改为路由器1的公网ip;
4.目的ip:不变
5.源端口号:主机1程序端口号修改为路由器新映射的端口号;
6.目的端口:不变
四、路由器之间交换
我们知道,路途遥远,不可能一个路由器就给找到了(这好像也说不定。。。),我们需要很多的路由器来查找。
而源mac地址和目的mac是一直在变的
五、接收端响应数据
最终,找到服务器的地址,服务器要对我们的请求进行响应;
接收端响应数据:
源ip为接收端主机公网ip;
源端口为接收端应用程序端口号;
目的ip为路由器1公网ip;
目的端口为路由器1映射端口;
源mac目的mac和之前发送流程变化方式是一样的
六、返回路由器1
路途中的设备不停的解包分用,重新封装数据报(源mac修改为自己的,目的mac修改为下一个设备mac)。
最终,路由器1接收到数据报,发现目的ip和自己公网ip一致,就处理数据(目的端口绑定的程序处理),把目的ip修改为发送端主机私网ip,端口号修改为发送端应用程序端口号(NAT+NAPT),也就是找到私网中的主机。
扩展
1.目的主机不能处于局域网内
刚开始接收数据时,只能由接收端路由器公网ip+路由器端口号作为目的ip+目的端口,但是刚开始没有建立局域网内主机的映射关系,所以找不到具体是局域网内哪个主机(ip)哪个应用程序(端口)
2.路由器功能
1)NAT+NAPT技术:将(主机1私网ip+主机1程序源端口号)映射为路由器1公网ip+路由器1端口;
2)路由/路由表:记录了很多ip和mac信息,应该往哪个地方走,下一个应该发送哪个设备