这篇文章我们简要介绍IP协议相关技术,下篇文章我们就会开始介绍这一系列教程的重点--传输层与TCP协议。
这篇文章我们会了解到DNS、ARP、NAT协议,这些协议虽然与TCP没有直接关联,但理解他们有助于巩固基础知识,更好的理解网络工作的原理.
一、 DNS解析
-
域名
IP地址是用于识别通信双方的地址,但它是一串长数字,不方便记忆,人们希望主机有自己的名字,这个名字是唯一的,并且是容易记住的。于是,诞生了“域名”的概念。域名是一种为了识别主机名称和机构名称的具有分层的名称,比如neu.edu.cn
中,neu是主机名,edu是不同层次下的机构名。 -
DNS解析
域名和IP地址都可以唯一对应一台主机,DNS协议的作用就是将自身具有意义的域名转换为不容易记住的IP地址。
域名是分层的,每一层都有自己的DNS服务器,用于处理DNS解析的请求。这样的好处在于每层的服务器不用关注过多的信息,它只要知道自己这一层下的域名服务器信息即可。以解析www.ietf.org
为例:
根域名服务器其实并不知道
www.ietf.org
的IP地址,但是它知道ietf.org
的域名服务器的地址,所以它把这条查询请求转发给ietf.org
的域名服务器。DNS被逐层下发,直到找到对应的IP地址为止。
二、 ARP协议(地址解析协议)
在通过以太网发送IP数据包时,需要先封装第三层IP首部(里边包含目标IP地址)、第二层以太网帧首部(里边包含目标MAC地址),但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。ARP协议只使用于局域网中。
- ARP(Address Resolution Protocol)用于根据目标IP地址,定位下一个接收数据包的网络设备的MAC地址。结果是如果目标主机处在同一个数据链路上,可以直接得到目标主机的MAC地址,否则会得到下一个路由器的MAC地址。
- ARP协议的工作原理可以分为两部分:ARP请求和ARP响应。
首先源主机会通过广播发送一个ARP请求包,“我要与目标IP地址进行通信,谁知道它的MAC地址”。
数据链路上的所有主机都会收到这个消息并检查自己的IP地址,如果与ARP请求中的IP地址一致,就会发送ARP响应包,“我就是,我的MAC地址是xxxx...”。
下图描述了ARP协议的工作机制:
- 在实际使用过程中,每次向目标主机发送数据都使用ARP是很低效的,通常的做法是把获取到的MAC地址缓存一段时间。一般来说,一旦源主机向目标地址发送一个数据包,接下来多次发送的概率非常大,所以这种缓存命中率很高。
当下一次发送ARP请求或超过缓存时间以后,缓存都会失效,这保证了即使目标IP地址与MAC地址对应关系即使发生了改变,数据包扔能被正确的发送到目标地址。 - IP地址负责标记发送方和接收方,而MAC地址负责传输过程中的分段传送,所以二者缺一不可。
三、NAT和NAPT技术
1. NAT(Network Address Translator)
NAT是一种将局域网中的私有IP地址转换为全局IP地址的技术。
在连接上路由器的时候,如果检查一下设备的IP地址,会发现是类似于192.168.1.1
这样的IP地址。那不同网段中,IP地址都是192.168.1.1
的主机该如何通信呢?
下图描述了NAT的工作原理:
局域网中IP地址为
10.0.0.10
的主机向全局IP地址为163.221.120.9
的主机发送数据。NAT路由器将数据包IP首部中的源地址修改为自己的全局IP地址。同理,接收数据时,把目标地址202.224.174.37
翻译为私有IP地址10.0.0.10
。
2. NAPT
路由器只有一个对外的全局IP地址,如果有多个内网主机都需要和外部通信怎么区分它们呢?这时就要用到NAPT技术了,它和NAT原理上类似,但它可以转换TCP和UDP端口号。
在使用NAPT技术是,不同的内网私有IP被转换为相同的全局IP地址,也就是路由器对外显示的全局IP地址,但是被附加不同的端口号加以区分:
不管是NAT还是NAPT技术,都需要路由器内部维护一张自动生成的地址转换表。以TCP为例,建立TCP连接首次握手的SYN包发出时会生成这个表,关闭连接时会发出FIN包,收到这个包应答时,转换表会被删除。
具体的TCP和三次握手我们会在下一篇文章中具体讲解。
网友评论