小白学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

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅