小白学TCP/IP(五)IP协议相关技术

2024-04-25 23:48

本文主要是介绍小白学TCP/IP(五)IP协议相关技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

IP协议相关技术

IP旨在让最终目标主机收到数据包,但是这一过程仅仅依靠IP是无法实现的,必须要有实现解析主机名称和MAC地址的功能,以及数据包在发送过程中异常情况处理的功能,此外还会涉及IP必不可少的其他功能.


DNS(Domain Name System)

DNS系统与IP协议的关系:
DNS系统中维护一个用来表示组织内部主机名(域名)和IP地址之间对应关系的数据库.
DNS工作原理:

  1. 用户输入主机名(域名)
  2. DNS自动检索那个注册了的主机名和IP地址的数据库,迅速定位对应的IP地址
  3. 返回给用户主机该IP地址

DNS查询:


ARP(Address Resolution Protocol)

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

ARP协议与IP协议的关系
ARP是一种解决地址问题的协议,以目标IP地址为线索,用来定位下一个接受数据分包的网络设备对应的MAC地址,如果目标主机与用户主机不在同一个数据链路上,使用ARP查找下一跳路由器的MAC地址.

ARP协议是如何知道MAC地址的呢?

核心是借助用户主机发送ARP请求包和目标主机发送ARP响应包确定MAC地址

假定主机A要往主机B发送IP数据包

  1. 主机A只知道主机B的IP地址,为了获得主机B的MAC地址,主机A通过广播向同一数据链路的所有主机或路由器发送一个ARP请求包(包含了主机A的IP地址,MAC地址,目标主机的IP地址)
  2. 该请求包会被该链路上的所有主机或路由器解析
  3. 主机B解析到该请求包后得到主机A请求的IP地址与自己的IP地址相同,便将自己的MAC地址塞入ARP响应包并通过单播返回给主机A,同时将主机A的IP地址和MAC地址存入主机B自身的ARP缓存表.
  4. 主机A接收到主机B发送回来的ARP响应包,得到了主机B的MAC地址,同时将主机B的IP地址与MAC地址存入主机A自身的缓存表中.(注意:缓存数据也是有期限的)

RARP协议

RARP是将ARP反过来,从MAC地址获取IP地址的一种协议,将打印机服务器等小型嵌入式设备接入到网络中经常用到,假如将一台打印机接入到网络中,插电启动设备时,打印机就会发送一条"我的MAC地址是****,请告诉我我的IP地址是什么?"的请求信息,RARP服务器收到这条消息便会返回"MAC地址为****的设备,你的IP地址是啥啥啥"的响应信息给这个设备.


ICMP(Internet Control Message Protocol)

ICMP协议与IP协议的关系
ICMP协议确认IP包是否成功被发送出去,通知在发送过程当中IP包被废弃的原因,改善网络设置等.
ICMP的消息大致分为两类:

  • 通知出错原因的错误消息
  • 用于诊断的查询消息

ICMP的通知消息以明文的形式像TCP/UDP一样通过IP进行传输,但是ICMP所承担的功能并非传输层的补充,应该把它考虑为IP的一部分,收到该ICMP包的主机分解ICMP的首部和数据域可以得知具体发生问题的原因.


DHCP(Dynamic Host Configuration Protocol)

DHCP协议与IP协议的关系
DHCP协议实现了自动分配IP地址,统一管理IP地址分配,让即插即用变得可能.

DHCP协议工作原理

  1. DHCP客户端广播发送DHCP发现包,为自己请求一个新IP地址
  2. DHCP服务器收到该DHCP发现包后,给DHCP客户端发送了一个DHCP提供包,提供包中包含了一个可用的新IP地址
  3. DHCP客户端收到该DHCP提供包后,决定使用这个新IP地址作为自己的IP地址,于是再次广播发送DHCP请求包,向DHCP服务器请求使用该IP地址
  4. DHCP服务器收到该DHCP请求包后,再次向该DHCP客户端发送了一个DHCP提供包,允许DHCP客户端使用该IP地址.

NAT(Network Address Translator)

NAT协议与IP协议的关系
NAT协议是用于本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术,也就是实现私有地址到全局IP地址的转换.

NAPT(Network Address Ports Translator)技术
实现了用一个全局IP地址与多个主机的通信(比NAT技术更常用,所以说NAT技术一般指的是NAPT技术)

NAPT原理

主机A的本地IP地址为192.168.1.2,主机B的本地IP地址为192.168.1.3,这两个主机要连接互联网时,需通过NAT服务器,将IP地址转换为NAT服务器的全局IP地址中的一个端口地址,接收数据也是一样的,先使用NAT服务器的全局IP地址端口进行接受,然后再转换为本地IP地址.


IP隧道

IP隧道与IP协议的关系
假如网络A和网络C采用IPv6,而夹在中间的网络B使用IPv4的话,网络A与C就无法直接进行通信,需要使用IP隧道将网络A发过来的IPv6包统合为一个包,然后再追加一个IPv4的首部后转发给网络B.

IP隧道是什么
IP隧道就是在网络层的首部后面继续追加网络首部的通信方法

这篇关于小白学TCP/IP(五)IP协议相关技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/936136

相关文章

关于Maven生命周期相关命令演示

《关于Maven生命周期相关命令演示》Maven的生命周期分为Clean、Default和Site三个主要阶段,每个阶段包含多个关键步骤,如清理、编译、测试、打包等,通过执行相应的Maven命令,可以... 目录1. Maven 生命周期概述1.1 Clean Lifecycle1.2 Default Li

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停