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

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2