目录
DNS
使用dig工具分析DNS过程
当在浏览器输入url会发生什么?
ICMP协议
NAT技术
NAT IP转换过程
NAT技术的缺陷
代理服务器
DNS全称为Domain Name System,中文名为域名系统。其作用是将域名转换为对应的IP地址。DNS采取分布式的数据库结构,通过一系列的查询和响应步骤,最终实现域名到IP地址的映射。 DNS协议运行在UDP协议之上,使用端口号53。
最初使用hosts文件来描述主机名和IP地址的关系,通过互连网信息中心(SRI-NIC)来管理这个hosts文件的,计算机需要定期下载更新版本的hosts文件才能上网,为了更方便使用,产生DNS系统,维护主机IP和主机名之间的关系,新计算机接入网络就将,将这个信息保存入数据库,用户输入域名,自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址。至今, 我们的计算机上仍然保留了hosts文件. 在域名解析的过程中仍然会优先查找hosts文件的内容,在/etc/hosts下,比如:
1.首行: dig 指令的版本号2. status 参数:NOERROR 表示查询成功3. QUESTION SECTION:所查询的域名4. ANSWER SECTION:查询结果,这个结果先将 www.baidu.com 查询成了 www.a.shifen.com,再将www.a.shifen.com 查询成了两个 ip 地址5. 最下面是结果统计:包含查询时间和 DNS 服务器的地址等
1.浏览器在缓存中查找域名对应的IP地址,如果没有找到就向DNS服务器获取IP地址,从区域DNS服务器开始请求,没有就往上直到根域名服务器为止,这个过程是递归查找的过程
2.客户端与服务器建立TCP的三次握手,建立连接
3.浏览器向web服务器发起HTTP请求
4.服务器收到请求构建HTTP响应并返回
5.浏览器对响应解析,渲染页面
6.页面显示完成后,浏览器发送异步请求,让客户端与服务器端保持着联系。
7.客户端与服务器建立TCP的四次挥手,断开连接
ICMP是一个网络层协议,作用是:
确认IP包是否成功到达目标地址通知在发送过程中IP包被丢弃的原因ICMP也是基于IP协议工作的,但是它并不是传输层的功能,因此人们仍然把它归结为网络层协议ICMP只能搭配IPv4使用,如果是IPv6的情况下,需要是用ICMPv6
比如ping命令就是基于ICMP协议实现的,可以用来验证网络是否通畅:
域名和URL(Uniform Resource Locator)是互联网中两个重要的概念,它们有一定的区别。
域名是由一串用“.”分隔的名字组成的Internet上某一台计算机或计算机组的名称。作用是用来将主机名和域名转换为IP地址的工作。例如,“www.baidu.com”中,“baidu.com”就是一个域名,它指向了百度公司的服务器IP地址。
而URL则是用来描述一个资源在万维网上的地址。一个URL唯一标识一个Web资源,通过与之对应的URL即可获得该资源。URL通常由多个部分组成,包括协议类型、主机地址、端口号、路径和查询等信息。例如,“http://www.baidu.com/”就是一个URL,其中“http”是协议类型,“www.baidu.com”是主机地址,“/”是路径。
简单来说,域名是将IP地址转化为易于记忆的名称,而URL则是用来定位和访问一个具体的网络资源的地址。
traceroute命令也是基于ICMP协议实现,能够输出可执行程序主机,一直到目标主机之前经历多少路由器:
NAT是(Network Address Translator)用于在本地网络使用私有地址,在连接互联网的时候使用全局IP地址的技术,除了转换IP地址外,还出现了可以转换TCP,UDP的NAPT(Network Address Ports Translator)技术。
技术背景:解决IPv4地址不足的主要手段,允许不同局域网的私网IP地址不同,在对外通信的时候将私网IP转化为公网IP,公网IP是全局唯一的。
比如主机A对外通信的时候,NAT路由器将源地址替换为全局的IP地址202.244.174,37,路由器受到外部数据的时候,目标地址则先被转换为私有IP地址以后再被转发。在NAT路由器内部有一张自动生成的表,用来维护私有IP到公网IP的映射关系。
那么当多个主机访问外网的时候,返回的的数据目的IP都是相同的公网IP,该返回给哪一个主机呢? NAPT技术可以解决这个问题,就是在这张转换表中,维护私网IP到公网IP+Port的映射关系。如图:
可见不同主机在转换表中转化为了相同的IP地址和不同的端口号,从而能够使内网IP和公网IP+端口实现一一对应关系,所以能在服务端返回数据的时候返回给确定的主机。
NAT技术的缺陷主要有以下几点:
无法支持一些应用程序,如IP电话、视频会议等,因为这些应用程序需要在Internet上建立点对点的连接,而NAT会改变IP地址和端口号,导致连接失败。NAT依赖转换表, 所以无法从NAT外部向内部服务器建立连接,而且转换表的生成和销毁都需要额外开销,通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开(注:可以使用NAT内网穿透技术,让程序维护这张表,从而让主机暴露在外网上)
NAT会增加网络延迟,因为每次数据包都需要进行地址转换。
NAT会增加网络负担,因为每次数据包都需要进行地址转换,而且NAT设备需要维护转换表,消耗一定的计算资源和存储资源。NAT会导致网络不稳定,因为NAT设备可能会出现故障,导致网络中断或者数据丢失。
NAT会增加网络安全风险,因为它会隐藏内部网络的真实IP地址,使得攻击者难以直接攻击内部网络,但同时也会增加内部网络受到攻击的风险,因为攻击者可以通过伪造源IP地址来绕过NAT的保护。
NAT技术也会影响网络的可扩展性,因为它会限制网络的拓扑结构,使得网络的规模和复杂度受到一定的限制。
代理服务器与NAT技术有点像,客户端向代理服务器发送请求,而代理服务器将真正的请求转发给服务器,服务器将结果发送给代理服务器,代理服务器将结果再返回给客户端。
代理服务器与NAT技术的不同在于:
1.从应用方面:NAT设备是网络设备之一,解决的是IP地址不同的问题,代理服务器则贴近具体应用,比如用其实现,或者游戏加速器等等。
2.从底层实现上:NAT工作在网络层,代理服务器工作在应用层。
3.从使用范围上:NAT在局域网的出口部署,代理服务器既可以在局域网也可在广域网(跨网络)上。