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

计算机网络之---IP协议

 IP 协议作用

在计算机网络的分层模型中,网络层主要负责数据在不同网络之间的传输和路由,确保数据从源节点传递到目标节点。IP协议(Internet Protocol,互联网协议)是网络层最重要的协议之一,它提供了数据包的逻辑寻址、分片与重组、路由选择等功能。

IP 协议的基本功能

  1. 逻辑寻址(Logical Addressing)

    • IP协议提供了IP地址,这是数据在网络中传输的标识符。每个网络中的设备都通过IP地址进行标识,数据包通过目标IP地址传输到目标设备。
    • IP地址具有层级结构,支持路由选择。
  2. 路由选择(Routing)

    • 路由器根据IP地址和路由表决定数据包的转发路径。数据包从源设备出发时,经过多个路由器的转发,最终到达目的设备。
    • IP协议负责将数据包从一个网络传输到另一个网络。
  3. 分片与重组(Fragmentation and Reassembly)

    • 如果数据包过大,超出了某个网络的最大传输单元(MTU),IP协议会对数据包进行分片,每个分片都会包含源地址和目标地址,确保分片能够顺利到达目的设备。
    • 目的设备接收到所有分片后,将它们重新组合为原始数据包。
  4. 无连接(Connectionless)

    • IP协议是无连接的,这意味着数据包在传输过程中没有建立连接的概念。每个数据包都是独立的,路由器在转发时不会维护状态信息。
    • 如果数据包丢失或出现错误,IP协议不会自动重发或纠正,通常依赖于传输层的协议(如TCP)来处理这些问题。
  5. 不可靠性(Unreliable)

    • IP协议不提供错误检测与纠正的功能,它仅仅负责数据包的传输和路由。数据包传输过程中可能发生丢包、重复或错误,可靠性由上层协议(如TCP)保证。

IPv4 协议详解

1. IPv4 地址

IPv4使用32位地址表示,通常以四组十进制数表示,每组数字用“.”分隔,如 192.168.1.1。每组数字的范围是0到255。IPv4地址分为以下几类:

  • A类地址:1.0.0.0 到 127.255.255.255,支持16,777,214个主机。
  • B类地址:128.0.0.0 到 191.255.255.255,支持65,534个主机。
  • C类地址:192.0.0.0 到 223.255.255.255,支持254个主机。
  • D类地址:224.0.0.0 到 239.255.255.255,用于组播。
  • E类地址:240.0.0.0 到 255.255.255.255,保留地址,通常不用于公共网络。

IPv4地址还包含子网掩码(subnet mask),用于确定网络地址和主机地址的边界。

2. IPv4 数据包结构

IPv4数据包由头部数据部分两部分组成:

  • IP头部:用于数据包的路由、识别、差错检测等。
  • 数据部分:即需要传输的上层数据。
IPv4头部格式
字段长度说明
版本(Version)4 位表示IP协议版本,IPv4为4。
首部长度(IHL)4 位表示IP头部的长度,单位为4字节,最小值为5,最大值为15。
服务类型(ToS)8 位用于指定数据包的服务质量(QoS),通常不常用。
总长度(Total Length)16 位数据包的总长度,包括IP头部和数据部分。最大值为65535字节。
标识(Identification)16 位用于唯一标识数据包,尤其在数据包分片时用于重组。
标志(Flags)3 位控制数据包分片的行为,最重要的标志是“是否允许分片”。
片偏移(Fragment Offset)13 位分片的相对偏移量,单位为8字节。
TTL(Time to Live)8 位限制数据包在网络中的生命周期(即跳数),避免数据包在网络中无限循环。
协议(Protocol)8 位指示数据部分使用的上层协议(如TCP=6、UDP=17、ICMP=1)。
校验和(Checksum)16 位用于验证IP头部是否发生错误。
源IP地址(Source Address)32 位数据包的源IP地址。
目标IP地址(Destination Address)32 位数据包的目标IP地址。
选项(Options)可变长度可选字段,通常用于特殊目的,如时间戳、安全等。
填充(Padding)可变长度用于保证IP头部长度是4字节的倍数。
3. IPv4 分片与重组

IPv4数据包的分片和重组机制是为了应对不同网络的MTU(最大传输单元)限制。数据包在经过一个网络时,若该网络的MTU小于数据包大小,路由器会将数据包分割成多个较小的片段,每个片段包含完整的IP头部,保证数据包能够在任何网络上传输。

  • 分片:当数据包大于网络的MTU时,IP协议会将数据包分成多个小片段,每个片段包含数据包的标识符和偏移量信息,以便目标主机进行重组。
  • 重组:目标设备接收到所有分片后,会根据标识符和偏移量将这些片段重新组装成完整的数据包。
4. 路由与转发
  • 路由器:IPv4数据包通过网络中的路由器转发,路由器根据目标IP地址和路由表选择最佳路径。
  • 路由表:每个路由器都有一个路由表,记录了不同网络段的路由信息,决定了数据包的转发方向。

IPv6 协议详解

IPv6是为了克服IPv4地址短缺等问题而设计的下一代IP协议。它使用128位地址,可以提供几乎无限的地址空间。

IPv6的地址类型有以下几种:

  • 单播(Unicast):表示一个源设备和一个目标设备之间的通信。
  • 多播(Multicast):表示数据包发送给一组目标设备。
  • 任播(Anycast):表示数据包发送给一组设备中的任何一个设备,通常是距离最短的设备。
IPv6 数据包结构

IPv6相对于IPv4简化了头部结构。IPv6的报文头部包含以下字段:

字段长度说明
版本(Version)4 位表示协议版本,IPv6为6。
流标签(Flow Label)20 位用于标识数据流。
负载长度(Payload Length)16 位表示数据部分的长度。
下一个头部(Next Header)8 位表示数据部分所使用的协议(如TCP、UDP等)。
跳数限制(Hop Limit)8 位限制数据包的最大跳数。
源IP地址(Source Address)128 位源IP


http://www.kler.cn/a/502560.html

相关文章:

  • opencv的NLM去噪算法
  • 【学习】【记录】【分享】微型响应系统
  • Linux第二课:LinuxC高级 学习记录day01
  • 中等难度——python实现电子宠物和截图工具
  • 系统架构设计师考点—项目管理
  • 支付宝租赁小程序提升租赁行业效率与用户体验
  • 数据结构二叉树-C语言
  • Windows的Redis查看自己设置的密码并更改设置密码
  • 神经网络中的“池化”是什么意思?
  • MySQL 与 Redis 的数据一致性问题
  • Linux自定义分隔符
  • 【14】模型训练自制数据集前的一些数据处理操作
  • 基于springboot果蔬供应链信息管理平台
  • Linux 下 Vim 环境安装踩坑问题汇总及解决方法(重置版)
  • AI学习路线图-邱锡鹏-神经网络与深度学习
  • 双线性插值算法:原理、实现、优化及在图像处理和多领域中的广泛应用与发展趋势(二)
  • 【数据库】Mysql精简回顾复习
  • 【人工智能】自然语言生成的前沿探索:利用GPT-2和BERT实现自动文本生成与完形填空
  • python-leetcode-长度最小的子数组
  • C#版 软件开发6大原则与23种设计模式
  • 【理论】测试框架体系TDD、BDD、ATDD、MBT、DDT介绍
  • 2025年华为OD上机考试真题(Java)——整数对最小和
  • vulnhub靶场【IA系列】之Keyring
  • 关于Java状态模式的面试题及其答案
  • 全网首发:编译libssh,产生类似undefined reference to `EVP_aes_256_ctr@OPENSSL_1_1_0‘的大量错误
  • 基于深度学习的滑块验证破解方法及模型训练过程