其它重要协议或技术
DNS(Domain Name System)
DNS是一整套从域名映射到IP的系统,属于应用层协议。
域名
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称。
域名使用.
连接。
例如:www.baidu.com
com是一级域名,表示这是一个企业域名,同级的还有net(网络提供商),org(非盈利组织)。
baidu是二级域名,公司名。
www只是习惯用法。
NAT设备工作原理
当客户端(10.0.0.10)向服务器(163.221.120.9)发送数据时,NAT路由器将源地址(10.0.0.10)替换成全局IP地址(202.244.174.37),当NAT路由器收到外部的数据时,又会把目标IP从202.244.174.37替换回10.0.0.10。
在NAT路由器内部,有一张自动生成的用于地址转换的表,当10.0.0.10第一次向163.221.120.9发送数据的时候就会生成表中的映射关系。
如果局域网内,多个主机要访问同一个外网服务器,而对于服务器返回的数据中,目的IP都是相同的,那么NAT路由器如何判断将这个数据包转发给局域网内的哪个主机?
NAPT可以解决,使用IP+Port来建立关联关系
NAT技术缺陷
1)无法从NAT外部向内部服务器建立连接
2)转换表的生成和销毁需要额外开销
3)通信过程中一旦NAT设备异常,即使存在热备,所有TCP连接也都会断开
NAT和代理服务器
- 路由器一般都有NAT设备的功能,通过NAT设备进行中转,完成子网设备和其它子网设备的通信过程
- 客户端向代理服务器发送请求,代理服务器将请求转发给真正要请求的服务器,服务器返回结果后,代理服务器又把结果传给客户端
代理服务器应用:
1)翻墙:广域网中的代理
2)负载均衡:局域网中的代理(将请求均衡的发给主机,提高集群的抗压能力)
代理服务器分为正向代理和反向代理,正向代理用于请求转发,反向代理作为一个缓存。
举个例子来说,女生买化妆品一般都会找代购,代购去专柜帮我们买化妆品,再快递给我们就是“正向代理”,当这个代购发现某个化妆品很多人都会买,每次都跑去专柜买一个很麻烦,于是就屯了很多货在自己家,有人要买这款化妆品,代购就可以直接从自己家发货,这就是“反向代理”。
区别:
1)NAT设备是网络基础设备之一,解决的是IP不足的问题;代理服务器更贴近具体应用,比如翻墙等。
2)NAT工作在网络层,直接对IP地址进行替换,代理服务器在应用层。
3)NAT一般在局域网的出口部署,代理服务器既可以在局域网,也可以在广域网,还可以跨网。
4)NAT一般集成在防火墙,路由等硬件设备,代理服务器是一个软件程序,需要部署在服务器上。
浏览器中输入url后,发生的事情
输入一个URL,会先查本地缓存,本地缓存中没有,就会进行域名解析。拿www.baidu.com来说,域名解析完后会拿到百度所对应的入口IP地址,然后就要发起HTTP请求,而HTTP基于TCP,TCP是面向连接的,所以我们得首先建立连接。建立连接要经过三次握手,浏览器向服务器发送一个SYN,服务器接到后会给浏览器发送一个SYN+ACK,浏览器接收到后再发送一个ACK响应,至此三次握手完毕,连接就建立好了。
连接建立好后就要发起HTTP请求,一个HTTP请求包括了请求行,请求报头,空行,请求行中包括了URL,向下交付,从HTTP到TCP到IP再到MAC帧,服务器最底层收到后,就要进行解包分用,MAC到IP再到TCP最后到HTTP,分析发现这个URL是要用GET方法请求一个百度首页,请求处理完毕就要构建响应。
状态行是第一行,填写响应报头,加上空行,正文部分带上百度的首页,整个报文向下交付,经过HTTP,TCP,IP,MAC帧,同样的过程,浏览器最底层收到进行解包分用,MAC,IP,TCP,HTTP,应用层收到响应后,分析状态行,报头,丢掉空行,最后只剩下了正文。
这时浏览器要解释HTML,拿出正文,进行渲染,然后我们就看到了经过浏览器内部解释过的百度首页的页面。
可以参考本篇博客,更加详细:https://blog.csdn.net/wuhenliushui/article/details/20038819/