当前位置: 首页 > news >正文

网络层协议:IP

目录

1、概念

2、关键组成部分

2.1 IP地址

2.1.1 概念

2.1.2 主要版本

2.1.3 IP地址分类

2.2 IP数据报(IP协议传输的基本数据单元)

3、工作原理

3.1 路由

3.2 分片与重组

4、相关协议


1、概念

目的:负责在复杂的网络环境中将数据包从源主机路由传递到目标主机。

定位:位于TCP/IP模型的网络层(或OSI模型的第3层),在传输层(如TCP, UDP)之下,数据链路层(如以太网, Wi-Fi)之上。

概念:提供跨越不同物理网络的逻辑寻址路由功能,屏蔽底层网络技术的差异(如以太网、Wi-Fi、PPP、光纤等),使上层协议(TCP, UDP, ICMP等)无需关心数据包如何穿越各种物理网络。

特性:无连接、不可靠服务

  • 无连接: 发送数据包前不需要预先建立连接。每个数据包(IP数据报)都是独立寻路,路径可能不同

  • 不可靠: 不保证数据包一定能送达目的地,也不保证按顺序送达,不保证数据完整性(不提供确认、重传、流量控制机制)。这些可靠性保障由上层协议(如TCP)或应用程序自身负责。

  • 尽力而为: 不提供带宽或延迟保证(QoS需额外机制)。

  • 安全性: 原生IP不提供加密和强认证(依赖IPsec或上层协议如TLS)。

作用

①、寻址:每个连接到网络的设备都有一个唯一的 IP 地址。IP 协议使用这些地址来标识数据包的源地址和目的地址,确保数据包能够准确地传输到目标设备。

②、路由:IP 协议负责决定数据包在网络传输中的路径。比如说路由器使用路由表和 IP 地址信息来确定数据包的最佳传输路径。

③、分片和重组:当数据包过大无法在某个网络上传输时,IP 协议会将数据包分成更小的片段进行传输。接收端会根据头部信息将这些片段重新组装成完整的数据包。

2、关键组成部分

2.1 IP地址

2.1.1 概念

唯一标识: 每个连接到IP网络的设备(主机、路由器)都必须有一个唯一的IP地址,用于在网络中标识自己。

逻辑地址: 与物理地址(如MAC地址)不同,IP地址是软件配置的,可以变化,用于在更大范围的网络中寻址。

2.1.2 主要版本

IPv4:32位二进制数(通常表示为点分十进制,如 192.168.1.1)。

  • 包含 网络部分 (标识设备所在的网络) 和 主机部分 (标识网络内的特定设备)。

  • 通过 子网掩码 来区分网络部分和主机部分。

操作二进制示例结果(十进制)
IP地址11000000.10101000.00000001.01100100192.168.1.100
子网掩码11111111.11111111.11111111.00000000255.255.255.0
网络号(IP AND 掩码)11000000.10101000.00000001.00000000192.168.1.0
主机号(IP AND 掩码取反)00000000.00000000.00000000.011001000.0.0.100

主要问题:

  • 地址枯竭: 32位地址空间(约42.9亿)已基本耗尽(通过NAT技术缓解)。

  • 配置复杂: 经常需要DHCP或手动配置。

  • 安全性: 设计之初未充分考虑安全性(依赖IPsec扩展)。

  • QoS支持有限: 依赖ToS字段,支持不够完善。

  • 报头设计: 包含选项字段,处理效率较低。

NAT:网络地址转换协议,我们知道属于不同局域网的主机可以使用相同的 IP 地址,从而一定程度上缓解了 IP 资源枯竭的问题,然而主机在局域网中使用的 IP 地址是不能在公网中使用的,当局域网主机想要与公网主机进行通信时,NAT 方法可以将该主机 IP 地址转换为全球 IP 地址。该协议能够有效解决 IP 地址不足的问题。

IPv6: 解决IPv4地址枯竭问题,使用128位地址(通常表示为8组4位十六进制数,如 2001:0db8:85a3:0000:0000:8a2e:0370:7334),地址空间极其巨大,并简化了报头设计,增强了安全性和移动性。

关键改进:

  • 巨大的地址空间: 128位地址(约3.4×10³⁸个地址),彻底解决地址枯竭问题,支持端到端通信(减少NAT依赖)。

  • 简化的报头: 固定40字节基本报头,格式更简单高效,路由器处理更快。选项功能通过扩展报头实现。

  • 更好的QoS支持: 流标签字段便于识别和处理特定数据流。

  • 内建安全: IPsec支持成为协议标准组成部分(非强制)。

  • 改进的扩展性: 扩展报头机制更灵活。

  • 自动配置: SLAAC(无状态地址自动配置)简化了主机配置。

  • 更好的移动性支持: 移动IPv6设计更优。

2.1.3 IP地址分类

IP 地址 = {<网络号>,<主机号>}。

  1. 网络号:它标志主机所连接的网络地址表示属于互联网的哪一个网络。
  2. 主机号:它标志主机地址表示其属于该网络中的哪一台主机。

IP 地址分为 A,B,C,D,E 五大类:

  • A 类地址 (1~126):以 0 开头,网络号占前 8 位,主机号占后面 24 位。
  • B 类地址 (128~191):以 10 开头,网络号占前 16 位,主机号占后面 16 位。
  • C 类地址 (192~223):以 110 开头,网络号占前 24 位,主机号占后面 8 位。
  • D 类地址 (224~239):以 1110 开头,保留为多播地址。
  • E 类地址 (240~255):以 1111 开头,保留位为将来使用

2.2 IP数据报(IP协议传输的基本数据单元)

结构: 由 报头 和 数据载荷 组成。

报头关键字段:

  • 版本 (Version): 4位,标识IP版本(4或6)。

  • 首部长度 (IHL): 4位,指示IP报头长度(以32位字为单位)。

  • 服务类型 (ToS / DSCP/ECN): 8位,用于QoS(服务质量),指示数据包的优先级或服务要求(如延迟、吞吐量、可靠性)。

  • 总长度 (Total Length): 16位,整个IP数据报(报头+数据)的长度(字节)。

  • 标识 (Identification): 16位,用于唯一标识一个数据报或其分片。同一个数据报的所有分片共享相同的标识。

  • 标志 (Flags): 3位:

    • Reserved:保留位。

    • DF (Don't Fragment):为1时表示禁止路由器对此数据报分片。如果数据报太大无法通过下一跳网络,路由器会丢弃它并发送ICMP错误消息。

    • MF (More Fragments):为1时表示这不是最后一个分片(后面还有分片);为0时表示这是最后一个分片或是未分片的数据报。

  • 片偏移 (Fragment Offset): 13位,指示该分片在原数据报数据部分中的相对位置(以8字节为单位)。用于接收方重组分片。

  • 生存时间 (TTL - Time To Live): 8位,数据报在网络中允许经过的最大路由器跳数。每经过一个路由器,该值减1。当TTL减到0时,数据报被丢弃,并发送ICMP超时消息。主要作用是防止数据报在网络中无限循环。

  • 协议 (Protocol): 8位,指示数据报载荷中封装的是哪个上层协议的数据(如TCP=6, UDP=17, ICMP=1)。

  • 首部校验和 (Header Checksum): 16位,用于检测IP报头在传输过程中是否发生错误。只校验报头,不校验数据部分。每经过一个路由器都需要重新计算。

  • 源IP地址 (Source Address): 32位(IPv4)或128位(IPv6),发送主机的IP地址。

  • 目的IP地址 (Destination Address): 32位(IPv4)或128位(IPv6),接收主机的IP地址。

  • 选项 (Options): 可变长(IPv4),很少使用。在IPv6中被移至扩展报头。

  • 填充 (Padding): 确保IP报头长度是32位的整数倍。

数据载荷: 承载的上层协议数据(如TCP段、UDP数据报、ICMP消息)。

3、工作原理

3.1 路由

核心概念:

  • 路由表: 每个主机和路由器都维护一个 路由表,其中包含如何到达不同目标网络或主机的信息。

  • 路由条目: 通常包含目标网络地址、子网掩码、下一跳路由器地址(网关)或出口接口、度量值(优先级)等。

  • 路由协议: 路由器之间运行 路由协议(如RIP, OSPF, BGP)来动态交换网络可达性信息,自动更新和维护路由表。

转发过程:

  1. 主机或路由器检查目标IP地址。

  2. 查找路由表,找到最长前缀匹配的路由条目(即与目标地址网络部分匹配最长的条目)。

  3. 根据匹配的路由条目:

    • 如果下一跳是直接相连的网络,则通过ARP(IPv4)或邻居发现(IPv6)获取目标主机的物理地址(MAC地址),将数据报封装在数据链路层帧中直接发送。

    • 如果下一跳是路由器(网关),则通过ARP/邻居发现获取该网关的物理地址,将数据报封装在帧中发送给网关。

  4. 网关路由器收到后,重复上述查找路由表和转发的步骤,直到数据报到达目标网络或TTL耗尽。

3.2 分片与重组

原因: 数据链路层(如以太网)有 最大传输单元 (MTU) 限制。当IP数据报长度大于路径中某个网络的MTU时,就需要分片。

过程:

  1. 路由器(或源主机)将原始数据报分割成多个较小的 分片 (Fragments)

  2. 每个分片都有自己的IP报头(大部分字段复制自原始报头,但总长度标识标志片偏移会修改)。

  3. MF标志位:除了最后一个分片设为0,其他分片都设为1。

  4. 片偏移表示该分片数据在原始数据报数据部分中的起始位置(以8字节块为单位)。

  5. 分片独立路由到目的地。

重组: 只有目的主机负责将所有具有相同标识的分片,按照片偏移顺序重新组装成原始数据报。如果缺少任何分片,整个原始数据报会被丢弃,重组失败。

4、相关协议

  • ICMP (Internet Control Message Protocol): 用于在IP主机和路由器之间传递控制消息(如网络可达性测试ping、目标不可达、超时traceroute、重定向等)。是IP协议的重要辅助协议。

ICMP 协议是一种面向无连接的协议,用于传输出错报告控制信息。它属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到 IP 数据无法访问目标、IP 路由器无法按当前的传输速率转发数据包等情况时,会自动发送 ICMP 消息。

ping的基本过程:

①、当执行 Ping 命令,Ping 首先解析域名获取 IP 地址,然后向目标 IP 发送一个 ICMP Echo Request 消息。

②、当目标 IP 收到 ICMP Echo Request 消息后,它会生成一个 ICMP Echo Reply 消息并返回,即 Ping 响应消息。

③、发起 Ping 命令的设备接收到 ICMP Echo Reply 消息后,计算并显示从发送 Echo Request 到接收到 Echo Reply 的时间(通常称为往返时间 RTT,Round-Trip Time),以及可能的丢包情况。

Ping 通常会发送多个请求,以便提供平均响应时间和丢包率等信息,以便我们了解网络连接的质量。

  • ARP (Address Resolution Protocol): 用于在IPv4网络中根据IP地址查询对应的物理地址(MAC地址)。

    • MAC 地址是数据链路层和物理层使用的地址,是写在网卡上的物理地址,用来定义网络设备的位置,不可变更。
    • IP 地址是网络层和以上各层使用的地址,是一种逻辑地址。IP 地址用来区别网络上的计算机。

ARP协议的工作过程:

①、ARP 请求

当主机 A 要发送数据给主机 B 时,首先会在自己的 ARP 缓存中查找主机 B 的 MAC 地址。

如果没有找到,主机 A 会向网络中广播一个 ARP 请求数据包,请求网络中的所有主机告诉它们的 MAC 地址;这个请求包含了请求设备和目标设备的 IP 和 MAC 地址。

②、ARP 应答

网络中的所有主机都会收到这个 ARP 请求,但只有主机 B 会回复 ARP 应答,告诉主机 A 自己的 MAC 地址。并且主机 B 会将主机 A 的 IP 和 MAC 地址映射关系缓存到自己的 ARP 缓存中,以便下次通信时直接使用。

③、更新 ARP 缓存

主机 A 收到主机 B 的 ARP 应答后,也会将主机 B 的 IP 和 MAC 地址映射关系缓存到自己的 ARP 缓存中。

  • RARP (Reverse ARP): 根据MAC地址查询IP地址(基本被DHCP取代)。

  • DHCP (Dynamic Host Configuration Protocol): 为主机自动分配IP地址、子网掩码、网关、DNS服务器等配置信息。只给接入网络的设备分配 IP 地址,因此同一个 MAC 地址的设备,每次接入互联网时,得到的 IP 地址不一定是相同的,该协议使得空闲的 IP 地址可以得到充分利用。

相关文章:

  • 医疗集团级“人-机-料-法-环”全流程质控的医疗数据质控方案分析
  • 在QtCreator中使用GitHubCopilot
  • 如何确定某个路由器的路由表?(计算机网络)
  • vue 如何配置使用 env文件
  • 没有宝塔面板的服务器上的WordPress网站打包下载到本地?
  • CSS 基础选择器 文字控制属性 综合案例
  • python打卡day52
  • 亚马逊云服务器(AWS)会限制用户使用吗?深度解读AWS资源政策
  • 56、原生组件注入-原生注解与Spring方式注入
  • Objective-c protocol 练习
  • Wireshark 的基本使用
  • Spring Boot 项目中Http 请求如何对响应体进行压缩
  • 【Android Studio】新建项目及问题解决
  • RDMA技术详解:下一代高性能网络通信的核心
  • Karate 与Playwright的比较和融合
  • Vue 组件通信
  • SAP会计凭证抬头增强
  • MongoDB 安装实践:基于鲲鹏 ARM 架构 Ubuntu 环境
  • Linux x86_64架构下的四级分页机制详解
  • 使用 C/C++的OpenCV 将多张图片合成为视频
  • 高唐做网站/重庆关键词快速排名
  • 想接外包做网站/微信推广软件
  • 深圳网站建设 手机网站建设/网站群发推广软件
  • 网站备案照相/网络上市场推广
  • 有没有a站可以打开/做企业网站建设公司哪家好
  • 个人域名免费网站/百度入驻