图解TCP/IP-----IP协议相关技术
此系列博客,图片文字观点均是来自《图解TCP/IP》,仅作为学习用途。
1、 仅凭IP无法完成通信
IP旨在让最终目标收到数据包,但是在这一过程中仅仅有IP是无法实现通信。在之前我们介绍的IP协议,我们仅仅知道如何实现数据包到达目标主机。但是我们在实际中很少直接使用IP地址。在浏览器中输入网站的地址,我们需要将这个地址映射为IP地址。所以在实际通信中,还要DNS、ARP、ICMP等等技术来支持。
2、DNS(域名系统)
访问网站可以不使用IP地址,就是
2.1 IP地址不便于记忆
直接使用IP地址很不方便,因此,TCP/IP世界一开始,就有一个叫做主机识别码的东西,这种识别方式是指为每台计算机赋以唯一的主机名。在进行通信可以直接使用主机名不需要输入一长串IP地址,并且系统必须将主机名转为具体的IP地址。为实现这个功能,主机往往利用一个叫做host的数据库。但是随着网络规模越来越大,这样以host管理主机名和IP地址可行性逐渐降低。
2.2 DNS的产生
因为以上的原因,产生了一个有效的管理主机名和IP地址之间产生对应关系的系统,也就是DNS系统。在这个系统中主机的管理机构可以对数据进行变更和设定。也就是可以维护一个用来组织内部主机名和IP地址之间对应关系数据库。
在应用中,用户输入主机名(域名)时,DNS会自动检索那个注册了主机名和IP地址的数据库,并迅速定位对应的IP地址。
2.3 域名的构成
在理解DNS规范时,首先需要理解什么是域名。域名是指为了识别主机名称和组织机构名称的一种具有分层的名称。域名一般由几个英文字母用点号连接起来。
DNS的分层如图所示:

*域名服务器
域名服务器是指管理域名的主机和相应的软件。他可以管理所在分层的域的相关信息。一般而言每一层都设有一个域名服务器。在根域名服务器中注册根一下第一层域名服务器的IP地址,类似的在根的下一层注册再往下一层的域名服务器IP地址。因此,域名和域名服务器按照分层进行设置。一般为了提高容灾能力,会设置至少两个以上域名服务器。
*解析器
进行DNS查询的主机和软件叫做DNS解析器。用户所使用的工作站和个人电脑属于解析器。
2.4 DNS查询
查询机制:解析器为了调查IP地址,先向域名服务器进行查询,域名服务器先在自己的数据库中进行查找,如果有则返回,如没有域名服务器向上一层根域名服务器进行查询,直到找到指定的域名服务器。
2.5 DNS如同互联网中的分布式数据库
DNS不仅仅管理主机名和IP地址之间的映射关系,还要管理众多信息。
3、ARP(地址解析协议)
只要确定了IP地址,就可以向这个目标地址发送IP数据报,但是在底层数据链路层,进行通信还有必要了解每个IP地址对应的MAC地址。
3.1 ARP概要
ARP是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接受数据分包的网络设备对应的MAC地址。
3.2 ARP工作机制
主机A为了获得主机B的MAC地址,先通过广播发送一个ARP请求包,这个包中包含想要了解的MAC地址的主机IP。由于广播的包可以被同一数据链路上所有主机和路由器接收,因此ARP请求包就会被这同一数据链路上的所有主机和路由器进行解析,如果请求包中的IP地址与自己的IP地址一致,那么这个节点就把自己的MAC地址塞入ARP响应包返回主机A。但是每一次都要发送ARP请求包的话会浪费网络流量,因此通常可以把获取到的MAC地址缓存一段时间,这样下一次再向这个IP地址发送数据就不需要再发送ARP请求包。、
3.3 IP地址和MAC地址缺一不可
考虑接收端是其他数据链路中的某一主机,发送端与接收端必须经过路由器,这时就算直到接收端的MAC地址,路由器会隔离两个网络。无法直接将数据从发送端发送到接收端。
在以太网上发送IP包时,下次要经过哪一个路由器发送数据报,这个信息是很重要的,这里的下一个路由器就是MAC地址。
3.4 RARP
RARP是从MAC定位IP地址的一种协议。
3.5 代理RAP
通常情况下,ARP包会被路由器隔离,但是采用代理ARP的路由器可以将ARP请求转发给附近的网段。
4、ICMP
4.1 辅助IP的ICMP
ICMP的主要功能包括,确认IP包是否成功送达目标,通知再发送过程中当中IP包被丢弃的具体原因,改善网络设置等。
ICMP的消息大致分为两类:一类是通知出错原因的错误消息,另一类是用于诊断的查询消息。
4.2 主要的ICMP消息
* ICMP目标不可达消息
IP路由器无法将IP数据包发送给目标地址时,会给发送端主机返回一个目标不可达的ICMP消息,并在这个消息中显示不可达的具体原因。具体原因如下表:

*ICMP重定向消息
如果路由器发现发送端主机使用了次优的路径发送数据,他会返回一个ICMP重定向消息给这个主机。消息中包含了路由信息和元数据。
* ICMP超时消息
IP包中有一个字段叫做TTL(生存周期),它的值随着每一个路由器就会减一,直到减到0,该IP包就会被丢弃。此时,路由器会发送一个ICMP超时消息给发送端主机,通知该包已经丢弃。设置IP包生存周期主要目的是为了在路由控制遇到问题发生循环状况时,避免IP包无休止的在网络上被转发。
* ICMP回送消息
用于进行通信的主机和路由器之间,判断所发送的消息是否成功到达对端的一种消息。可以向对端主机发送回送请求的消息,也可以接收对端主机发回来的会送应答消息。ping命令就是利用这个消息实现的。
4.3 其他ICMP消息
* ICMP原点抑制消息
*ICMP路由器探索消息
* ICMP地址掩码消息
5、DHCP(动态主机设置协议)
5.1 DHCP实现即插即用
为了实现自动设置IP地址,统一管理IP地址分配,就产生了DHCP协议,有了DHCP,计算机只要连接到网络就可以进行TCP/IP通信,也就是说,DHCP让即插即用变得可能。
5.2 DHCP的工作机制
使用DHCP之前,先要架设一个DHCP服务器,然后将DCHP所需要分配的IP地址设置到服务器上,此外还要将相对应的子网掩码,路由控制信息以及DNS服务器地址等设置到服务器上。
DHCP获取IP地址的流程:(1)DHCP客户端要求设置IP和子网掩码。(2)DHCP服务器通知可以使用的网络设置。(3)DHCP客户端通知想要使用(2)中通知的设置。(4)DHCP服务器通知允许(3)的设置。
通常人们会架设两台或两台以上的DHCP服务器,防止一台出现故障导致无法自动分配I地址。为防止冲突一般要求DHCP服务器或DHCP客户端必须具备以下功能:
DHCP服务器:在分配IP地址之前,发送ICMP回送请求包,确认没有返回应答。
DHCP客户端:针对从DHCP那里获得的IP地址发送ARP请求包,确认没有返回应答。
5.3 DHCP中继代理
家庭网络一般主机数少,一般路由器代替了DHCP服务器的功能。在一个企业或学校的大型网络中,可以使用DHCP中继代理实现,只需要在每一个网段设置一个DHCP中继代理。整个过程也就变成:客户端向中继器发送请求包,中继器将请求包以单播形式发送给服务器,服务器再向中继代理返回应答,并由中继代理将包转发给客户端。
6、NAT (网络地址转换)
6.1 NAT的定义
NAT是用在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。除了转换IP地址之外,还有转换TCP/UDP的端口号的NAPT技术。
6.2 NAT的工作机制
比如一台私有地址为10.0.0.10的主机向一台全局IP地址为163.22.120.9的主机发送数据,那么私有地址10.0.0.10要先经过一个NAT路由器将私有地址转为全局IP地址202.244.174.37再发送数据。在NAT服务器内部有一张自动生成的用来转换地址的表。在发送数据时会按照表中的映射关系进行处理。
当很多台私有地址主机要与全局IP地址主机通信时,为了防止全局IP地址不够用,会使用一种NAPT的技术,它会将IP地址和端口号一同转换。
6.3 NAT-PT
NAT-PT是将IPv6的首部转换为IPv4的首部的一种技术。
6.4 NAT潜在问题
*无法从NAT外部向内部服务器建立连接。
*转换表的生成和转换操作会产生一定的开销。
*通信过程中一旦NAT遇到异常需要重新启动时,所有的TCP连接会被重置。
*即使备置两台NAT做为容灾备份,TCP连接还是会断开。
6.5 解决NAT潜在问题和NAT穿越
两种方法:一是改用IPv6,但是目前IPv6的普及远不及预期。二是通过在NAT的内侧(私有地址IP的一边)主机云兄的应用,为了生成NAT转换表,需要先发送一个虚拟的网络包给NAT的外侧。而NTA并不知道这个虚拟的包是什么,还是会照样读取包首部中的内容并自动生成一个转换表,这时如果转换表合理,就实现了NAT外侧和内测主机之间进行通信,这种现象叫做NTA穿越。
7、IP隧道
如果两个IPv6网络之间有一个IPv4d的网络,那么这两个网络无法正常通信,为使他们能正常通信就必须采用IP隧道的功能。
在网络层的首部后面再追加网络层首部的通信方法叫做"IP隧道"。
8、其他IP相关技术
*IP多播
*IP任播
*通信质量控制
*显示拥塞通知
*Mobile IP

浙公网安备 33010602011771号