文章目录
1.DNS系统
DNS协议是一整套从域名映射到IP的系统。
1.1DNS背景
使用一个IP来描述一台主机十分的不方便,因此人们发明另一种叫主机名的东西,是一个字符串,并且使用hosts文件来描述主机名和IP之间的关系。
最初,通过互联网信息中心来管理这个hosts主机文件:
如果一个新的计算机要接入网络,或者某个计算机IP变更,都需要到信息中心申请变更hosts文件。
其他计算机也需要定期下载更新新版本的hosts文件才能上网。
但是这样做太麻烦了,于是就产生了DNS系统:
一个组织的系统管理机构,维护系统内的每个主机的IP与主机名对应关系。
如果新计算机接入网络,就将这个信息注册到数据库中。
用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址。
1.2 使用DNS协议
1.DNS协议使用UDP服务的时候,超过512字节就会被截断。
2.DNS有两种查询方式:
递归查询:如果无法解析某主机名,会向其他DNS服务器来进行查询。
迭代查询:如果无法解析某主机名,会将其他可能查到的DNS服务器的IP地址返回给客户端,供其参考。
host -t A www.baidu.com
host指令告诉我们:
1.www.baidu.com是www.a.shifen.com的别名。
2.该机器名对应两个ip地址。
host命令使用DNS协议和DNS服务端进行通信,其中-t表示DNS协议使用哪种查询类型,我们这里使用的是A类型。即通过机器类型获得IP地址。还有其他查询类型:
A:获取目标主机的IP地址。
CNAME:获取目标主机的别名。
PTR:值为12,表示反向查询(根据IP获取主机名)
tcpdump -i eth0 -nt -s 500 port domain
使用port domain来过滤数据包,表示只抓取domain(域名)服务的数据包,即DNS查询和应答报文。
查询结果如图,其中>前面表示的是源端,后面表示接收端。A?表示是A类型的查询方式,其中后面()中的内容表示的是报文的长度(以字节为单位)
3/0/0表示报文中包含3个应答资源记录,0个授权资源记录,0个额外信息记录。最后的三个字段即CNAME…,A…,A…表示的是三个应答资源记录的内容。其中CNAME表示紧随其后的是机器的别名,A表示的是紧随其后的是IP地址,该应答报文长度为226字节。
1.3域名
域名只是一个标识,DNS是域名解析系统,当您输入一个域名时,DNS开始工作,向域名对应的IP地址请求,找到域名对应的IP(服务器)后,返回结果给访问者,你就看到了这个域名对应的网页。这些DNS系统是不公开的。
比如对于:www.baidu.com来说:
com:是一级域名,com表示是企业域名(以营利为目的),同级的还有net(网络提供商),org(非营利组织)。
baidu:二级域名,公司名。
www:一种习惯用法,之前人们在使用域名的时候,往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式,来表示主机支持的协议。
1.4使用dig工具来解析DNS
首先安装dig工具:
yum install bind-utils
然后就可以使用dig命令来查看域名解析过程了:
dig www.baidu.com
1.开头位置的dig表示的是dig指令的版本号。
2.第二部分是服务器返回的详情,重要的是status参数,NOERROR表示查询成功。
3.QUESTION SECTION表示要查询的域名是什么。
4.ANSWER SECTION表示查询的结果是什么,这个结果先将www.baidu.com查询成了www.a.shifen.com,再将www.a.shifen.com查询成了两个ip的地址。
5.最下面是一些结果的统计,包含查询是将和DNS服务器的地址等。
2.ICMP协议
ICMP是一个网络层协议,一个搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通,但是IP协议不提供可靠传输,如果丢包了,IP协议不能通知是否丢包以及丢包的原因。(是由传输层判断的)。
2.1ICMP功能
因此在网络层也引入了一个保证可靠性的协议,即ICMP协议:
1.确认IP包是否成功到达目标地址。
2.通知在发送过程中IP丢弃的原因。
3.ICMP也是基于IP协议工作的,但是它并不是传输层的功能,因此人们通常将其归为网络层协议。
4.ICMP只能搭配IPv4使用,如果是IPv6的情况下,需要使用ICMPv6。
2.2ICMP报文格式
ICMP大概分为两类报文:一类用于通知出错原因,一类用于诊断查询。
类型(十进制数) | 内容 |
---|---|
0 | 回送应答 |
3 | 目标不可达 |
4 | 原点抑制 |
5 | 重定向或改变路由 |
8 | 回送请求 |
9 | 路由器公告 |
10 | 路由器请求 |
11 | 超时 |
17 | 地址子网请求 |
18 | 地址子网应答 |
2.3ping命令
ping命令的主要功能是用来检测网络的连通情况和分析网络运行速度。
ping的是域名,而不是url。一个域名可以通过DNS解析成IP地址。
ping命令不只可以验证网络的连接性,同时也会统计响应时间和TTL(IP报文的生存周期)。
ping命令会先发送一个ICMP Echo Request给对端。
对端接收到之后,会返回一个ICMP Echo Reply。
2.4traceroute命令
也是基于ICMP协议实现,能够打印出可执行程序主机,一直到目标主机一共经过了多少路由器:
3.NAT技术
3.1产生原因
之前我们介绍了私有IP的产生,目的是为了解决IP地址不足的问题,而NAT技术保证私有IP产生的可行性。
我们都知道,当报文由一个局域网经过路由器转化到另一个局域网的时候,再向下转发的时候,它的源IP会变成目的IP。由于经过了重重的转发才到达目标主机,那么目标主机是如何知道最开始的IP地址在哪里呢?
3.2转化表
NAT技术的核心就是在路由器中维护了一个转化表:
在转换表中维护了(可以维护多对),一个报文在不同局域网中源IP变化的关系,当接收方接收到报文之后,想发送回去,由于转换表的存在就会经过与发送报文相同的路线。在进入一个新的局域网就会通过查询转换表来找到下一个主机的IP地址。称为NAT技术。当链接断开的时候,路由器中的转换表中对应的信息会自动被删除。
3.3NAT技术的缺陷
1.无法从NAT外部向内部服务器建立连接。(内部只的是靠近发送源处,外部指的是靠近接收源处)
2.转换表的生成和销毁都需要额外的开销。
3.通信过程中一旦NAT设备异常,所有的TCP链接都会断开。
3.4代理服务器
3.4.1代理服务器与NAT的关系
代理服务器和NAT技术有点像,但是两者是两个东西。
1.从应用上讲,NAT设备是网络基础设备之一,解决的是IP不足的问题,代理服务器则是更贴近具体应用,比如通过代理服务器进行翻墙,另外像迅游这样的加速器,也是使用代理服务器。
2.从底层上讲,NAT工作在网络层,直接对IP地址进行替换,代理服务器往往工作在应用层。
3.从使用范围讲,NAT一般在局域网的出口部署,代理服务器可以在局域网做,也可以在广域网做,也可以跨网。
4.从部署位置上看,NAT一般集成在防火墙,路由器等硬件设备上,代理服务器则是一个软件程序,需要部署在服务器上。
3.4.2正向代理
拿我们的校园网举例子,其实校园网就是一个正向代理服务器:
在学校会有一台大的服务器,我们学生的所有客户端向外网申请资源的时候,都会先访问学校的代理服务器,再由代理服务器统一访问外网资源。称为正向代理。站在外网角度,只有一台服务器在访问它的资源。
这样做的好处在于:
1.可以对访问网络的学生身份做验证,防止其他人访问。
2.加速内网访问服务(对于大量被访问的资源,代理服务器可以将其缓存在自身),提高内网访问效率。
3.可以对访问内网的请求进行筛查(保护内网)。
3.4.3反向代理
反向代理就是在服务器端放一个代理服务器:
公司的某一个网络资源,由于访问的人数太多,会放在多个服务器上供我们访问,此时客户端访问的时候会先访问代理服务器再访问目标服务器,称为反向代理。
反向代理的好处在于:
1.根据后台每台机器的负载情况进行业务转发。较为均衡的分配服务器资源,比如客户端访问量分别是1w,2w,3w,4w,6w,一共有四台服务器,就可以将这16w访问平均分配给每一台服务器(或根据各个服务器的负载来判断)。
2.对客户端的请求提前做审核(保证了安全性)。
3.4.4代理服务器防拦截原理
广域网中的正向代理问题,当我们想要访问一个网站有人想在广域网中拦截我得访问的时候。
比如我们要访问120.1.110.1这个网站,只要发送到广域网中,就可能被看到,然后进行拦截,该如何处理呢?
假设主机A的目的IP是主机B,但是在广域网中有人会对访问报文进行拦截:
首先我们需要有一台可以通过广域网与主机A链接,并且可以访问主机B的主机C;
可以先让主机A通过广域网访问主机C,在通过主机C访问主机B。方式就是将目的IP变成主机C,要访问的主机B的IP隐藏在报文里面,并进行加密处理。主机C拿到A的加密报文之后通过解密算法得到实际要访问的IP地址,然后再对B进行访问。B使用相同的方式可以对A进行报文的响应。
其中在A主机中必须由对报文进行访问处理的客户端,主机C就相当于代理服务器,主机A和B都是通过它来间接通信的。