仅凭IP是无法完成通信的,需要一些IP的辅助技术。这些技术的包格式可能不一样,但它们都是基于IP地址进行的,都是通过匹配路由表来进行的,只是功能不一样。例如DHCP分配IP地址,它只管通知这条信息,具体怎么分还要依靠上层。

TCP/IP相关内容第七部分,包含:

  • DNS
  • ARP
  • ICMP

一、DNS

IP地址不好记,我们希望用主机名代替。DNS负责将主机名转换为具体的IP地址。

早期的方法是集中管理一个大型的数据库,所有主机都要下载这个文件,更新主机名和地址的时候要通知所有人,非常麻烦。
现在用DNS维护一个用来表示组织内部主机名和IP地址之间对应关系的数据库。地址和主机名的变更只需要在组织机构内部进行即可,不需要向别的机构申请或报告。较小的范围内通过DNS管理主机名映射,很方便。

域名的构成

域名是指为了识别主机名称和组织机构名称的一种具有分层的名称。在使用域名时,可以在每个主机名后追加上组织机构的域名。主机名重合,但只要组织机构域名不重合就可以。

分层结构呈树状结构,顶点是根,下一层第一层域名包括国家域名和特定机构域名(如所有美国教育机构.edu、所有美国企业.com),在下一层可以是地域的通用域名,或是不同组织机构的属性域名。

域名服务器

每层域名都有一个域名服务器,实质上是个软件。每个域名服务器都有一个IP地址,本层的域名服务器都了解(注册了)本域内下层域名服务器的IP地址,直到再无下一层域名,就可以连主机,指定主机名给IP地址了。另外,每个域名服务器必须注册所在区域的根域名服务器的IP地址(全球共13个),在查找非本域的时候从跟开始。

为了提高容灾能力,一个域名至少设置两个以上域名服务器。

解析器

解析器,即需要进行DNS查询的主机,就是你的电脑。其至少要注册一个以上的域名服务器IP地址,解析器不仅可以访问本域名中的域名服务器,也可访问其他域的域名服务器,进行域名查询。

DNS查询

解析器相域名服务器申请查询,域名服务器会先在自己的数据库查找,没找到则相跟域名服务器申请查询,从上往下顺序遍历,找到返回。解析器和域名服务器都有缓存,可以保存最新了解到的信息,可以减少查询。

DNS不仅保留主机名和IP地址的映射,也保留了其他如邮件地址等映射。

二、ARP

主机发送IP数据包,封装成帧时的目的MAC只是同一个数据链路上的节点的MAC,甚至同一个链路上也可能只知道IP,不知道MAC。

用来根据IP地址查询MAC地址。ARP只适用于IPv4,IPv6用ICMPv6替代ARP发送邻居探索信息。

工作机制

借助ARP请求和ARP响应完成。ARP发送的包格式与IPv4是不一样的,因此需要不同的程序去处理。

起初通过广播发送一个ARP请求包,包中包含了目的主机的IP地址,在链路层,ARP包会被链路层默认封装成广播帧,在网络层,接收方默认认为ARP包是广播的,不想IP包目的IP要全1才是广播,才接受下来去解析。当解析后发现目的IP与自己的IP一致,则返回ARP响应包,里面有自己的MAC地址,目的IP是从请求包中了解到的。ARP包会被路由器隔离。

IP地址和MAC地址的信息缓存一段时间,下次发送时会先查表,可以减少ARP查询。但要定时清楚缓存,要是不换的话IP可能已经更换了MAC设备,就不可达了。

RARP

与ARP相反。设置RARP服务器,设备发送自己的MAC地址给服务器,可以获得IP地址来设置。因为有些硬件设备不具备DHCP动态获取IP的功能,只能用RARP获取IP。

大专栏  TCP-IP-part7-IP协议相关技术(一)tle="代理ARP">代理ARP

通常ARP包会被路由器隔离,采用代理ARP可以将ARP请求转发给邻近的网段,使两个以上的网段节点像在一个网段上一样通信。

三、ICMP

起到辅助IP的作用,ICMP数据是放在IP首部的后面,就像TCP/UDP一样明文传输,因此是IP的上层协议,但它是为了分担IP的一部分功能,因此仍属于网络层。ICMP两大类型:

  1. 通知出错原因的错误信息
  2. 用于诊断的查询信息

ICMP有多个消息类型,每个消息类型有自己的错误号来说明信息。

1、主要的ICMP消息

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

IP路由器无法将IP包发送给目标地址时,会给发送端主机返回一个目标不可达信息。错误号为1表示主机不可达,即找不到目的IP的MAC,ARP没人响应。错误号0表示网络不可达,即在路由表中找不到下一跳的IP。错误号4用于MTU发现,包不可分片。

ICMP重定向信息(类型5)

路由器发现发端主机使用了次优的路径发送路径,就返回一个ICMP重定向信息,包含更合适的路由信息。但路由信息并不包含子网掩码,因此主机追加更优路由信息时,只会以“主机路由”形式(/32)为这个目的IP地址追加下一跳路由信息,且在一定时间后自动清除。一般不进行重定向设置。

ICMP超时信息(类型11)

错误号0表示TTL减到0,IP包被抛弃,返回ICMP超时消息。错误号1表示路由器在规定时间内没有收到所有分片,重组超时。

traceroute命令就是利用ICMP超时信息工作。显示到达特定主机之前经历多少路由器。原理是利用IP包生存周期从1开始递增,同时发送UDP包,强制接收超时消息。

ICMP回送信息(类型0、8)

可以向对端主机发送回送请求(类型8),主机收到后回复一个应答消息(类型0)。Ping命令就是用这个实现的。

ICMP原点抑制信息(类型4)

低速广域网时,WAN路由器遇到网络拥堵,会向源地址发送ICMP原点抑制信息。收到后主机打开IP包的传输间隔。一般不用。

ICMP路由器探索信息(类型9、10)

用于发现与自己相连网络中的路由器。主机发出ICMP路由请求(类型10),路由器返回公告消息(类型9)。

ICMP地址掩码信息(类型17、18)

主机或路由器向了解子网掩码情况。向目标主机或路由器发送ICMP地址掩码请求信息(类型17),收方返回地址掩码应答信息(类型18),收房获得子网掩码信息。

2、ICMPv6

同样分为错误消息和信息消息。IPV6中使用的ICMP,不再是辅助作用,而是不可缺少。IPV4中的ARP就是通过ICMPv6的邻居探索消息实现。

邻居探索消息,类型133-137。用于查询IPv6地址和MAC地址的对用关系。采用多播地址传输。

得益于IPV6用MAC地址作主机标识,IPv6也实现了即插即用,不需要DHCP服务器也能自动获取IP地址。在没有路由器的网络,就是用MAC地址作为链路本地单播地址。在有路由器的网络环境中,从路由器中获取前64bit,后64bit用MAC地址设置。

TCP-IP-part7-IP协议相关技术(一)的更多相关文章

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

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

  2. 【前端童鞋看过来!】给大家分享网盘里前端相关书籍,主要是和网络通信(HTTP/TCP/IP)及javascript相关的

    百度云链接:https://pan.baidu.com/s/1kUPdf5H(无密码) 截图: <HTTP权威指南> [豆瓣书评]:此书第一部分是HTTP的概略,如果你没有时间,通读第一部 ...

  3. Ripple 20:Treck TCP/IP协议漏洞技术分析

    本文由“合天智汇”公众号首发,作者:b1ngo Ripple 20:Treck TCP/IP协议漏洞技术分析 Ripple20是一系列影响数亿台设备的0day(19个),是JSOF研究实验室在Trec ...

  4. TCP/IP 笔记 - 地址解析协议

    地址解析协议(ARP)提供了一种在IPv4地址和各种网络技术使用的硬件地址之间的映射.ARP仅用于IPv4,IPv6使用邻居发现协议,它被合并入ICMPv6.地址解析是发现两个地址之间的映射关系的过程 ...

  5. TCP/IP 和HTTP 协议基础知识

    来源:http://www.myhack58.com/Article/60/63/2014/50072.htm 相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过 ...

  6. TCP/IP和HTTP协议代理

    TCP/IP协议族 TCP/IP(传输控制协议/网际协议)是用于计算机通信的一个协议族. TCP/IP协议族包括诸如Internet协议(IP).地址解析协议(ARP).互联网控制信息协议(ICMP) ...

  7. 浏览器解析,HTTP/HTTPS、TCP/IP、WebSocket协议

    浏览器相关 浏览器对同一个域名有连接数限制,大部分是 6. 浏览器指的是 Chrome.Firefox,而浏览器内核则是 Blink.Gecko,浏览器内核只负责渲染,GUI 及网络连接等跨平台工作则 ...

  8. http与https与socket tcp/IP与UDP 协议等

    网络由下往上分为:   物理层--                       数据链路层-- 网络层--                       IP协议 传输层--               ...

  9. 在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统? 网络层协议 MAC帧、IP数据报、TCP报文 关系 IP地址与硬件地址 链路层与网络层

    小结: 1. 网络层两种服务 虚电路服务 virtual circuit  电信网 网络层负责可靠交付 数据报服务  网络层不负责可靠交付 提供灵活的.无连接的.尽最大努力交付的数据报服务 不提供服务 ...

随机推荐

  1. JS导出、导入EXCEL(案例)

    插件下载地址:http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js 1.导出excel <!DOCTYPE html> <html> ...

  2. 题解-------P4053 [JSOI2007]建筑抢修

    传送门 贪心+左偏树 贪心思路:先修快炸的楼 所以我们可以按照$T2$从大到小做一遍排序,然后从$1\cdots n$一个一个去修,如果这栋楼不能修(也就是当前时间已经超过$T2_{i}$),那我们就 ...

  3. Python这五个坑,80%你不知道(对的,五个你知道1个就达到一般水平了)

    1 含单个元素的元组 Python中有些函数的参数类型为元组,其内有1个元素,这样创建是错误的: c = (5) # NO! 它实际创建一个整型元素5,必须要在元素后加一个逗号: ! c = (5,) ...

  4. C++ 进程和匿名管道使用学习

    平台 Windows10 + VS2015 学习内容 进程的创建使用(CreateProcess方式) 父子进程间匿名管道通信 相关函数及参数介绍 CreatePipe函数:该的原型为 CreateP ...

  5. 图之强连通--Tarjan算法

    强连通分量 简介 在阅读下列内容之前,请务必了解图论基础部分. 强连通的定义是:有向图 G 强连通是指,G 中任意两个结点连通. 强连通分量(Strongly Connected Components ...

  6. 两种大小写比较|elif|

    name = ['alle','mike','tom','jerry','alice','hebe'] for i in name: if i == 'tom': print 'get!' #get! ...

  7. [CTS2019]氪金手游(容斥+树形背包DP)

    降智好题.本蒟蒻VP时没想到怎么做被题面迷惑了,只会20分的“好”成绩.简直自闭了. 首先显然度为0的点是白给的,根据等比数列求和公式即可求得.然后考虑这个树如果是一颗外向树,就是每个点先父亲再自己. ...

  8. springboot-security 登录 403

    之前一直使用shiro,刚开始使用security,大佬还请不要吐槽 security默认开启csrf防护,所谓csrf也就是伪请求.我们只需要把他关闭就好(因为我们的系统是在自己内网使用,不会有外部 ...

  9. 数据结构与算法——认识O(NlogN)的排序(1)

    归并排序 1) 整体就是一个简单递归,左边排好序.右边排好序.让其整体有序 2) 让其整体有序的过程里用了外排序方法 3) 利用master公式来求解时间复杂度 4) 归并排序的实质 时间复杂度0(N ...

  10. c/c++[001]:start

    作为一个学校课程跳过c语言的萌新,这次重新学习c/c++从源头上明白这两种不同的输入输出还是很有必要 scanf()是C语言中的一个输入函数.与printf函数一样,都被声明在头文件stdio.h里, ...