码迷,mamicode.com
首页 > 其他好文 > 详细

IP协议相关技术总结

时间:2020-03-10 13:39:14      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:生成   重定向   响应   tcp   网络层   通知   群发   ping   icm   

需求及对应技术

  1. 域名和IP地址的转换--DNS

  2. IP地址和MAC地址的转换--ARP/RARP

  3. 验证刚刚搭建好的网络设置是否正确--ICMP

  4. 动态获取TCP/IP通信所必须的设置--DHCP

  5. 解决IP地址不足的问题--NAT

  6. 相同协议族穿过不同协议族通信--IP隧道

DNS(用于主机名称和IP地址的转换)

  • 早期使用hosts文件,由互联网信息中心整体管理。存储主机名和IP地址的一一映射

  • DNS系统可以维护一个用来表示组织内部主机名和IP地址之间对应关系的数据库

  • 域名:为了识别主机名称和组织机构名称的一种具有分层的名称

  • 域名服务器:管理域名的主机和响应的软件,可以管理所在分层的域的相关信息。其所管理的分层叫做zone

  • 解析器:进行DNS查询的主机和软件叫做DNS解析器。用户所使用的的工作站或个人电脑都属于解析器。

  • DNS查询机制:逐步向更细分的服务器进行查找。如同互联网中的分布式数据库

ARP/RARP(用于MAC地址和IP地址的转换)

  • 内容:以目标IP地址为线索,用来定位下一个应该接受数据分包的网络设备对应的MAC地址

  • 工作机制:群发ARP请求包至同一链路的所有主机,该请求包包含了想要了解其MAC地址的主机IP地址。目标主机会将自己的MAC地址塞入ARP响应包返回源主机

  • 为减少重复发送ARP包的次数,会设立一个ARP缓存表用来缓存获取到的MAC地址

  • IP地址与MAC地址缺一不可:少一个都会造成资源的浪费以及可能的发送不到目标主机。

  • RARP:将ARP反过来,从MAC地址定位IP地址的一种协议。通过RARP服务器的形式存储在该服务器上注册的MAC地址及其IP地址。

ICMP(用于验证刚刚搭建好的网络的设置是否正确)

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

  • 当途中出现问题时,路由器会通过IP协议给源主机发送ICMP包,说明发往目标主机的包未能成功,并会说明原因

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

  • 主要的ICMP信息:
  1. ICMP目标不可达消息

  2. ICMP重定向消息(使用了次优的路径发送数据)

  3. ICMP超时消息(TTL)

  4. ICMP回送消息,用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息(如ping命令)

DHCP(动态获取TCP/IP通信所必须的设置)

  • 工作机制:
  1. 使用DHCP之前,首先要架设一台DHCP服务器(一般由该网段的路由器充当),然后将DHCP所要分配的IP地址及相应的子网掩码、路由控制信息以及DNS服务器的地址等设置到服务器上。

  2. 分配IP地址由两种方法:一种是由DHCP服务器在特定的IP地址中自动选出一个进行分配。另一种方法是针对MAC地址分配一个固定的IP地址

  3. 客户端发送DHCP请求包,服务器会返回DHCP提供包。在不需要IP地址时,可以发送DHCP解除包

NAT(在本地网络中使用私有地址,在连接互联网时转换成全局IP地址)

  • 工作机制:通过NAT路由器实现私有地址和全局地址的转换
  1. 在NAT路由器的内部,有一张自动生成的用来转换地址的表

  2. 当私有网络内的多台机器同时都要与外部进行通信时,NAT路由器会将包含端口号的IP地址一起转换的方式(NAPT)来解决

IP隧道(使得不同协议族可以互相穿过)

  1. 在网络层的首部后面继续追加其他协议族网络层首部进行通信

  2. IP隧道可以将那些从网络A发过来的IPv6的包统合为一个数据,再为之追加一个IPv4的首部以后转发给网络C

IP协议相关技术总结

标签:生成   重定向   响应   tcp   网络层   通知   群发   ping   icm   

原文地址:https://www.cnblogs.com/Water2Wine/p/12455109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!