目录
1.DNS
1.2 域名
1.3 DNS域名解析服务的简单流程
1.4 浏览器输入url后发生的事情
1.5 小结
2.ICMP协议
2.1 ping命令
2.2 traceroute命令
3.NAT技术
3.1 NAT转换过程
3.2 NAPT
3.3 NAT技术的缺陷
3.4 NAT和代理服务器
3.4.1 正向代理服务器
3.4.2 反向代理服务器
3.4.3 NAT和代理服务器
3.4.5 的原理
DNS是一整套从域名映射到IP的系统
DNS背景
我们之前介绍应用层到数据链路层时,一直使用的都是IP地址,但是当我们真正访问一个网页时,我们输入的却不是目标IP地址,而是该网站的名称一类的英文简写以便人们记忆。这种字符串就被称为主机名,使用hosts文件来描述主机名和IP地址的关系。
DNS系统
查看hosts文件(现在已经很少用了)
bash: /etc/hosts
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称。
www.baidu.com
为什么要有域名?
让用户用起来更舒服,辨识度更高。
当浏览器输入一个域名之后,会通过UDP协议传输到“域名解析服务”服务器,从该服务器中拿到KV映射关系对应的IP地址,然后才会正常的进行数据发送。
由于世界上所有主机在访问页面时,都会进行DNS域名解析服务,如果仅是一台服务器,负载过于严重。所以这个域名解析服务器是分层的,可以理解为每个地区都有一台这样的服务器,如果在本级找不到映射关系,就会去上一级“域名解析服务器”继续查找。
域名的重要性
域名解析是一个比较简单的服务,但是它非常重要。一旦有人掐断了域名解析服务,那在网络中所有的非IP访问都会瘫痪。
一个现象:有时候QQ、微信等是正常的。但是浏览器打不开页面
浏览器内置的DNS IP地址对应的服务挂掉了。
首先浏览器进行三次握手,先把连接建立好,然后结合用户请求,建立http请求,涉及到http格式,构建一个http request,通过连接推送到服务器。服务器经过读,将请求读到应用层,然后对http请求做分析,提取本次需求的资源和该次请求所对应的方法。定位到对应资源,在服务端把资源打开,然后通过服务器的方式构建http响应。将http响应再通过网络推送到浏览器端。浏览器端拿到数据,也进行读取,读到完整的响应。对响应的报头和有效载荷解析,识别到请求的内容。如果请求是一个网页,我们把网页交给浏览器,浏览器再对网页内容做解释,最后呈现出网页的效果。
更详细请见
当你在浏览器地址栏输入一个URL后回车,将会发生的事情?_wuhenliushui的博客-CSDN博客
ICMP是一个网络层的协议。ICMP的功能包括:
bash: ping www.baidu.com
也是基于ICMP协议实现, 能够打印出可执行程序主机, 一直到目标主机之前经历多少路由器。
子网的数据向外交付时看似没有什么问题。但是一旦外网拿到了数据,怎么给子网发回去呢?首先公网中不存在私有IP,其次就算有,但私有IP是可以重复的,我怎么知道发给谁呢?
所以路由器需要做一件事。将报文中的源IP地址进行替换(替换成WAN口IP)。每一个经过运行商的内网路由器都要这样逐级替换(公网路由不需要做),最终数据包中的IP地址成为一个公网IP,这种技术称为NAT。
那如果同一个局域网中,有多个主机都访问同一个外网服务器,那么对应服务器返回的数据中,目的IP都是相同的,那么NAT路由器如何判定将这个数据包转发给哪个局域网主机?
——NAPT
使用IP+port来解决这个问题。路由器不仅仅是将源IP进行替换,还会为我们维护一张映射表。
问题:如果我从来没有访问过外网,外网可以直接访问内网吗?
理论上不可以,但是有很多基于NAT原理的软件,可以帮助我们进行从外网访问到内网。——内网穿透。
内网穿透的原理:用户下载了某一种软件,该软件会定时,向服务端发送请求,从而让NAT路由器帮我们建立好映射。
以校园网为例,当我们不使用校园网去访问抖音等软件时,直接访问外部软件,外部软件也直接访问你,是直接进行通信的。
为了学生的身心健康,学校会设置校园网,校园网本身就是一个局域网,所以会在学校内部有一台服务器。
这样主机的发送或者接受数据都需要通过Linux服务器,这台服务器就称为正向代理服务器。
以公司提供服务的大型机房为例。
有没有可能,大量的客户端通过公网访问时,会集中访问同一台主机,而导致其他主机没有任何负载呢?
会的。会导致被访问的主机压力很大,而其他主机的资源是闲置的。导致资源没有被充分利用。
所以在公司内部也会设置一台Linux主机,用通过一定的算法,将请求分配到不同的主机上。从而提高资源的利用率。
这台Linux服务器,会接受所有的请求,并将请求送达给不同的主机。主机在接受到数据后,会直接通过公网跟客户端进行通信。
这样只接收客户端数据的,而不接受服务端数据的Linux服务器,称为反向代理服务器。
路由器往往都具备NAT设备的功能,通过NAT设备进行中转,完成子网的设备和其他子网的通信过程。
代理服务器的功能和NAT设备有一些相像。客户端向代理服务器发送请求,代理服务器将请求转发给真正要请求的服务器。
NAT设备和代理服务器的区别有哪些呢?
从底层实现来讲,NAT是路由器的功能,严格来说工作在网络层。代理服务器往往工作在应用层。
从应用上讲,NAT设备是网络基础设备之一,解决的是IP不足的问题。代理服务器则是更贴近具体应用,比如、游戏加速器等。