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

相关文章

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

SpringBoot快速搭建TCP服务端和客户端全过程

《SpringBoot快速搭建TCP服务端和客户端全过程》:本文主要介绍SpringBoot快速搭建TCP服务端和客户端全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录TCPServerTCPClient总结由于工作需要,研究了SpringBoot搭建TCP通信的过程

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException: org.junit.Test问题

《解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException:org.junit.Test问题》:本文主要介绍解决tomcat启动时报Junit相... 目录tomcat启动时报Junit相关错误Java.lang.ClassNotFoundException

Java根据IP地址实现归属地获取

《Java根据IP地址实现归属地获取》Ip2region是一个离线IP地址定位库和IP定位数据管理框架,这篇文章主要为大家详细介绍了Java如何使用Ip2region实现根据IP地址获取归属地,感兴趣... 目录一、使用Ip2region离线获取1、Ip2region简介2、导包3、下编程载xdb文件4、J

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

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

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

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