TCP/IP笔记(五)IP协议相关技术

IP旨在让最终目标主机收到数据包,但是在这一过程中仅仅有IP时无法实现通信的。必须还要又能够解析主机名称和MACdivide功能,以技术包在发送过程中异常情况处理的功能。
这篇主要介绍下DNS、ARP、ICMP等协议

DNS

TCP/IP网络中要求每一个互连的计算机都具有其唯一的IP地址,并基于这个IP地址进行通信。但是IP地址太长了,不好记。

人们希望主机有自己自己的名字,这个名字是唯一的,而且容易记住。于是,诞生了主机名“域名”的概念。域名是一种为了识别主机名称和机构名的具有分层的名称,比如在域名 neu.edu.cn中,neu是主机名,edu 和 cn 是不同层次下的机构名。

为了实现这样的功能,主机往往会利用一个叫做hosts的数据库文件

hosts.png

但是随着网络规模的不断扩大,接入计算机的个数不断增加,这种集中在本地电脑管理的方式就不可取了。

于是出现了DNS,当我们输入主机名(域名)时,DNS会先在互联网上先自动检索那个注册了主机名和IP地址的数据库,并迅速定位到对应的IP地址。

域名和 IP 地址都可以唯一对应一台主机,DNS 协议的作用就是将自身具有意义的域名转换成不容易记住的 IP 地址。

![Uploading 屏幕快照 2017-03-16 上午9.47.03_768491.png . . .]

域名是分层的,每层都有自己的 DNS 服务器用于处理 DNS 解析的请求。这样的好处在于每层的服务器不用关注过多的信息,它只要知道自己这一层下的域名服务器信息即可。以解析域名: www.abc.com为例:

解析域名.png

根服务器其实并不知道 www.abc.com 的 IP 地址,但是它知道 abc.com 域名服务器的地址,所以它把这条查询请求转发给 abc.com 域名服务器。DNS请求被逐层下发,直到找到对应的 IP 地址为止。
解析器和域名服务器将最新了解到的信息暂时保存在缓存中酱紫可以减少每次查询时的性能消耗。

DNS就如同互联网中的分布式数据库

ARP

只要确定了IP地址,就可以向这个目标地址发送IP数据报。然而在底层数据链路层,进行实际通信时,却需要知道每个IP地址所对应的MAC地址

ARP 协议(Address Resolution Protocol)用于通过目标 IP 地址,定位下一个接收数据包的网络设备的 MAC 地址。如果目标主机处在同一个数据链路上,那么可以直接得到目标主机的 MAC 地址,否则会得到下一条路由器的 MAC 地址。

ARP 协议的工作原理可以分为两部分:ARP 请求和 ARP 响应。 首先,源主机会通过广播发送一个 ARP 请求包:“我要与 IP 地址为 xxx 的主机通话,谁知道它的 MAC地址?”。

数据链路上的所有主机都会收到这条消息并检查自己的 IP 地址,如果与 ARP 请求包中的 IP 地址一致,主机就会发送 ARP 响应包:“我就是 IP 地址为 xxx 的主机,我的 MAC 地址是:xxxx”。

下图表示了 ARP 协议的工作机制:

屏幕快照 2017-03-14 下午2.55.11.png

在实际的使用过程中,每次往目标主机发送数据都要使用 ARP 是很低效的,通常的做法是把获取到的 MAC 地址缓存一段时间。一般来说,一旦源主机向目标地址发送一个数据包,接下来继续发送多次的概率非常大,因此这种缓存非常容易命中。

当下一次发送 ARP 请求或超过一定时间后,缓存都会失效,这保证了即使 MAC 地址与 IP 地址的对应关系发生了变化,数据包依然能够被正确的发往目标地址。

IP地址和MAC地址缺一不可?

MAC 和 IP 地址虽然看上去功能类似(都是用于唯一区分主机),但是两者缺一不可。如果只有 IP 地址,虽然可以跳过 ARP,直接在数据链路上发一个广播,但是这仅适用于通信双方处于同一个数据链路下的情况。如果双方处于不同的数据链路,数据报无法穿透中间的路由器。

仅凭MAC地址,人们无法知道这台机器所处的位置。如果全世界只用 MAC 地址,那么网桥就得向全世界发包,那么请参考交换机的自学过程,可以想象这个过程会带来庞大的,不必要的流量,而且网桥要维护一张巨大的表格来维护所有学到的MAC地址,当这些信超过网桥极限,就没法工作了,也就无法通信了。

正因为 MAC 和 IP 地址缺一不可,所以才产生了 ARP 这样的协议将两者关联起来。

RARP

RARP(Reverse Address Resolution Protocol)是将ARP反过来,从MAC地址定位IP地址的一种协议。

代理ARP

通常ARP包会被路由器隔离,但是采用代理ARP的路由器可以将ARP请求转发给邻近的网段。由此两个以上网段的节点之间可以像在同一个网段中一样进行通信。
一般情况下有路由器连接多个网络时,会在每个网段定义各自的子网,从而进行路由控制,但是对于那些不支持设定子网掩码的老设备,不适用代理ARP,有时就无法更好的使用网络。

ICMP

架构IP网络时需要特别注意两点:确认网络是否正常工作,以及遇到异常时进行问题诊断。
ICMP正是提供这类功能的一种协议。
主要功能包括:确认IP包是否成功送达目标地址,通知在发送过程中IP包被废弃的具体原因,改善网络设置等。
ICMP的消息大致可以分为两类:一类是通知出错原因的错误消息,另一类是用于诊断的查询消息。

主要消息类型

主要消息类型.png

DHCP(Dynamic Host Configuration Protocol)

逐一为每一台主机设置IP地址会非常繁琐的事情。特别是移动设备,每到一个新地方,就要重新设置IP地址
于是为了实现自动设置IP地址、统一管理IP地址分配,就产生了DHCP协议。
有了DHCP,计算机只要连接到网络,就可以进行TCP/IP通信。

DHCP.png

DHCP工作机制

使用DHCP前,首先要假设一台DHCP服务器。然后将DHCP所要分配的IP地址设置到服务器上。此外,还需要将相应的子网掩码、路由控制信息以及DNS服务器的地址等设置到服务器上。

工作机制.png

为了检查所要分配的IP地址以及已经分配了的IP地址是否可用,DHCP服务器或DHCP客户端必须具备以下功能:

  • DHCP服务器:
    在分配IP底之前发送ICMP回送请求包,确认没有返回应答
  • DHCP客户端:
    针对从DHCP哪里获得的IP地址发送ARP请求包,确认没有返回应答

在大规模组织机构的网络环境中,往往需要将DHCP统一管理

DHCP中继代理.png

NAT

NAT (Network Address Translator) 是一种用于将局域网中的私有地址转换成全局 IP 地址的技术。

在连接上无线路由器的时候,如果检查一下设备的 IP 地址,也许你会发现是类似于 192.168.1.1 这样的局域网 IP 地址。那不同网段中,IP 地址都是 192.168.1.1 的主机改如何通信呢?

局域网中 IP 地址为 10.0.0.10 的主机向全局 IP 地址 163.221.120.9 发送数据。NAT 路由器将数据包的源地址修改成自己的全局 IP 地址:202.244.174.37。同理,接收数据时,路由器把目标地址 202.244.174.37 翻译成内网地址:10.0.0.10

下图描绘了 NAT 的工作原理:

NAT 的工作原理.png

路由器只有一个对外的全局 IP 地址,如果有多个内网主机都向外部通讯怎么办呢?这时就要使用 NAPT 技术,它和 NAT 从原理上类似,但它可以转换 TCP 和 UDP 端口号。

使用 NAPT 技术时,不同的内网 IP 被转换成同一个公共 IP 地址,也就是路由器对外显示的全局 IP 地址,但是被附加不同的端口号以示区分:

NAPT 工作原理.png

不管是 NAT 还是 NAPT,都需要路由器路由器内部维护一张自动生成的地址转换表。以 TCP 为例,建立 TCP 连接首次握手的 SYN 包发出时会生成这个表,关闭连接时会发出 FIN 包,收到这个包的应答时转换表被删除。

IP隧道

在下图所示的网络环境中,网络A、B使用IPv6,如果处于中间位置的网络C支持使用IPv4的话,A与B之间就无法直接进行通信。为了让他们之间正常通信,这是必须得采用IP隧道的功能。

举个🌰.png

IP隧道中可以将那些从网络A发过来的IPv6的包统和为一个数据,再为之追加一个IPv4的首部以后转发给网络C。
一般情况下,紧接着IP首部的是TCP或UDP的首部。然而,现在的应用中,"IP首部的后面还是IP首部"或者"IP首部的后面是IPv6的首部"等情况与日俱增。这种在网络层的首部后面继续追加网络层首部 的通信方法就叫做"IP隧道"。

IP隧道.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,271评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,725评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,252评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,634评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,549评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,985评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,471评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,128评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,257评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,233评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,235评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,940评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,528评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,623评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,858评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,245评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,790评论 2 339

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,042评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,030评论 6 174
  • 前言 写这篇文章的缘由是客户提出的一个问题:客户使用公司的Wi-Fi产品的App,有两个设备出现了问题,点击App...
    Noskthing阅读 2,926评论 2 23
  • 本篇继续介绍IP协议相关的内容,主要介绍IP的辅助技术,包括DNS、ARP、ICMP、ICMPv6、DHCP、NA...
    我系哆啦阅读 748评论 0 6
  • 地址解析协议ARP 物理这一级,主机和路由器是用物理地址来区别的。物理地址是一个本地地址,管辖范围是本地网络,所以...
    顾慎为阅读 1,043评论 0 1