TCP/IP基础(三)

て烟熏妆下的殇ゞ 提交于 2020-02-02 14:06:18

TCP/IP基础(三) – IP协议相关技术

DNS

由于IP地址不便记忆,在最开始的时候,人们用一种叫做hosts的数据库文件来记录IP和主机名的关系。在互联网的起源ARPANET中,起初由互联网信息中心(SRINIC)整体管理一份hosts文件。如果新增一台计算机接入到ARPANET网或者已有的某台计算机要进行IP地址变更,中心的这个hosts文件就得更新,而其他计算机则不得不定期下载最新的hosts文件才能正常使用网络。然而,随着网络规模的不断扩大、接入计算机的个数不断增加,使得这种集中管理主机名和IP地址的登录、变更处理的可行性逐渐降低。后面这个hosts文件逐渐演变成DNS系统。

域名的构成

域名是指为了识别主机名称和组织机构名称的一种具有分层的名称。
例如,仓敷艺术科学大学的域名如下:kusa.ac.jp

  • kusa 表示仓敷艺术科学大学(Kurashiki University ofScience and the Arts)固有的域名。
  • ac 表示大学(academy)或高等专科以及技术专门学校等高等教育相关机构。
  • jp 则代表日本(japan)。

在使用域名时,可以在每个主机名后面追加上组织机构的域名(持有域名的组织机构可以设置自己的子网,此时的子域名要介于主机名和域名之间) 。
例如,有pepper、piyo、kinoko等主机时,它们完整的带域名的主机名将呈如下形式:

  • pepper.kusa.ac.jp
  • piyo.kusa.ac.jp
  • kinoko.kusa.ac.jp

域名的树形结构:
yuming
每一级域名都对应有域名服务器:
fuwiqi

DNS查询

chaxun

ARP

ARP(Address Resolution Protocol) 是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。如果目标主机不在同一个链路上时,可以通过ARP查找下一跳路由器的MAC地址。不过ARP只适用于IPv4,不能用IPv6。IPv6中可以用ICMPv6替代ARP发送邻居探索消息。

ARP的工作机制

假定主机A向同一链路上的主机B发送IP包,主机A的IP地址为172.20.1.1,主机B的IP地址为172.20.1.2,它们互不知道对方的MAC地址。
主机A为了获得主机B的MAC地址,起初要通过广播发送一个ARP请求包。这个包中包含了想要了解其MAC地址的主机IP地址。也就是说,ARP请求包中已经包含了主机B的IP地址172.20.1.2。由于广播的包可以被同一个链路上所有的主机或路由器接收,因此ARP的请求包也就
会被这同一个链路上所有的主机和路由器进行解析。如果ARP请求包中的目标IP地址与自己的IP地址一致,那么这个节点就将自己的MAC地址塞入ARP响应包返回给主机A。
arp
总之,从一个IP地址发送ARP请求包以了解其MAC地址(ARP请求包还有一个作用,那就是将自己的MAC地址告诉给对方。) ,目标地址将自己的MAC地址填入其中的ARP响应包返回到IP地址。由此,可以通过ARP从IP地址获得MAC地址,实现链路内的IP通信。

ICMP

  • CMP的主要功能包括,确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因,改善网络设置等。

在IP通信中如果某个IP包因为某种原因未能达到目标地址,那么这个具体的原因将由ICMP负责通知。
如下图,主机A向主机B发送了数据包,由于某种原因,途中的路由器2未能发现主机B的存在,这时,路由器2就会向主机A发送一个ICMP包,说明发往主机B的包未能成功。ICMP的这种通知消息会使用IP进行发送。因此,从路由器2返回的ICMP包会按照往常的路由控制先经过路由器1再转发给主机A。收到该ICMP包的主机A则分解ICMP的首部和数据域以后得知具体发生问题的原因。
**Note:**在ICMP中,包以明文的形式像TCP/UDP一样通过IP进行传输。然而,ICMP所承担的功能并非传输层的补充,而应该把它考虑为IP的一部分。
icmp

ICMP消息类型

CMP的消息大致可以分为两类:一类是通知出错原因的错误消息,另一类是用于诊断的查询消息。
leixing

  • ICMP目标不可达消息(类型3)

IP路由器无法将IP数据包发送给目标地址时,会给发送端主机返回一个目标不可达(Destination Unreachable Message)的ICMP消息,并在这个消息中显示不可达的具体原因,如下表所示。
bukeda

  • ICMP重定向消息(类型5)
    如果路由器发现发送端主机使用了次优的路径发送数据,那么它会返回一个ICMP重定向(ICMP Redirect Message)的消息给这个主机。
    在这个消息中包含了最合适的路由信息和源数据。这主要发生在路由器持有更好的路由信息的情况下。路由器会通过这样的ICMP消息给发送端主机一个更合适的发送路由。
    cdx

  • ICMP超时消息(类型11)
    IP包中有一个字段叫做TTL(Time To Live,生存周期),它的值随着每经过一次路由器就会减1(当IP包在路由器上停留1秒以上时减去所停留的秒数,但是现在绝大多数设备并不做这样的处理。) ,直到减到0时该IP包会被丢弃。此时,IP路由器将会发送一个ICMP超时的消息(ICMP Time Exceeded Message,错误号0(错误号1表示将被拆分包做重构处理时超时。) )给发送端主机,并通知该包已被丢弃。
    设置IP包生存周期的主要目的,是为了在路由控制遇到问题发生循环状况时,避免IP包无休止地在网络上被转发。此外,有时可以用TTL控制包的到达范围,例如设置一个较小的TTL值。

  • ICMP回送消息(类型0、8)
    用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息。可以向对端主机发送回送请求的消息(ICMP Echo Request Message,类型8),也可以接收对端主机发回来的回送应答消息(ICMP Echo Reply Message,类型0)。网络上最常用的ping命令(Packet InterNetwork Groper,判断对端主机是否可达的一种命令。) 就是利用这个消息实现的。
    icmpxxxx

NAT

NAT定义

NAT(Network Address Translator)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。除转换IP地址外,
还出现了可以转换TCP、UDP端口号的NAPT(Network Address PortsTranslator)技术,由此可以实现用一个全局IP地址与多个主机的通信(通常人们提到的NAT,多半是指NAPT。NAPT也叫做IP伪装或MultiNAT。)

nat

NAT的工作机制

如下图所示,以10.0.0.10的主机与163.221.120.9的主机进行通信为例。利用NAT,途中的NAT路由器将发送源地址从10.0.0.10转换为全局的IP地址(202.244.174.37)再发送数据。反之,当包从地址163.221.120.9发过来时,目标地址(202.244.174.37)先被转换成私有IP地10.0.0.10以后再被转发(在TCP或UDP中,由于IP首部中的IP地址还要用于校验和的计算,因此当IP地址发生变化时,也需要相应地将TCP、UDP的首部进行转换) 。
在NAT(NAPT)路由器的内部,有一张自动生成的用来转换地址的表。当10.0.0.10向163.221.120.9发送第一个包时生成这张表,并按照表中的映射关系进行处理。
444

NAT的潜在问题

由于NAT(NAPT)都依赖于自己的转换表,因此会有如下几点限制:

  • 无法从NAT的外部向内部服务器建立连接(虽然可以指定端口号允许向内部访问,但是数量要受限于全局IP地址的个数。) 。
  • 转换表的生成与转换操作都会产生一定的开销。
  • 通信过程中一旦NAT遇到异常需重新启动时,所有的TCP连接都将被重置。
  • 即使备置两台NAT做容灾备份,TCP连接还是会被断开。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!