计算机网络学习(七)——IP

一、IP

在计算机网络中,IP(Internet Protocol,网际协议)网络层的核心协议,用于实现跨越不同网络的数据包传输。IP 是 TCP/IP 协议族的核心部分,属于网络层协议,也是 Internet 赖以运作的基础协议之一。

IP 协议负责:

  • 为设备分配唯一的IP地址
  • 封装、传输和路由数据包;
  • 多个子网和网络之间转发数据,实现“尽力而为”的交付;
  • 提供无连接、不可靠的数据包传输服务。

IP 不保证数据可靠送达,它只负责把数据“尽力送到目标地址”。

核心特点:

特点说明
无连接不建立连接,直接发送数据包
不可靠不保证数据包送达、不重传
尽力而为交付有可能丢包、重复或乱序
分包和重组超过 MTU 的数据会被分片
路由寻址支持通过路由器跨网络转发数据包

二、IP 协议的主要版本

协议版本简称说明
IPv4Internet Protocol version 4当前主流协议,32位地址
IPv6Internet Protocol version 6新一代协议,128位地址,解决 IPv4 地址耗尽问题

三、IP数据报文结构

参考书——计算机网络 (第8版)- 谢希仁。

1. IPv4报文结构

IPv4 报文头至少 20 字节,结构如下:
在这里插入图片描述

  • 版本:占4位, 指协议IP的版本,对IPv4该字段是4。
  • 首部长度:占4位, 可表示的最大十进制数值是15。请注意,首部长度字段所表示数的单位是32位字长( 1个32位字长是4字节) 。
  • 区分服务:占8位, 用来获得更好的服务。
  • 总长度:总长度指首部和数据之和的长度, 单位为字节。总长度字段为16位, 因此数据报的最大长度为 2 16 2^{16} 216 - 1 = 65535字节。
  • 标识(identifi cation) :占16位。IP 软件在存储器中维持一个计数器, 每产生一个数据报,计数器就加1 , 并将此值赋给标识字段。
  • 标志(flag): 占3位。
  • 片偏移:占13位。片偏移指出:较长的分组在分片后, 某片在原分组中的相对位置。
  • 生存时间:占8位, 生存时间字段常用的英文缩写是TTL (Time To Live), 表明这是数据报在网络中的寿命。
  • 协议:占8位, 协议字段指出此数据报携带的数据使用何种协议, 以便使目的主机的IP层知道应将数据部分上交给哪个协议进行处理。
  • 首部检验和:占16位。这个字段只检验数据报的首部, 但不包括数据部分。
  • 源地址:占32位。发送IP数据报的主机的IP地址。
  • 目的地址:占32位。接收IP数据报的主机的IP地址。

2. IPv6报文结构

IPv6 报文头至少 40 字节,结构如下:
在这里插入图片描述

  • 版本(version) :占4位。它指明了协议的版本, 对 IPv6 该字段是6。
  • 通信量类(traffic class) :占8 位。这是为了区分不同的 IPv6 数据报的类别或优先级, 和IPv4 的区分服务字段的作用相似。目前正在进行不同的通信量类性能的实验。
  • 流标号(flow label) :占20位。IPv6 的一个新的机制是支持资源预分配, 并且允许路由器把每一个数据报与一个给定的资源分配相联系。
  • 有效载荷长度(payload length) :占16位。它指明 IPv6 数据报除基本首部以外的字节数( 所有扩展首部都算在有效载荷之内) 。这个字段的最大值是64 KB (65535 字节)。
  • 下一个首部(next header) :占8位。它相当千 IPv4 的协议字段或可选字段。
  • 跳数限制( hop limit ) :占8位。用来防止数据报在网络中无限期地存在。
  • 源地址:占128 位。是数据报的发送端的 IP 地址。
  • 目的地址:占128位。是数据报的接收端的 IP 地址。

四、IP 地址与子网

1. IP 地址分类(IPv4)

类别范围用途
A1.0.0.0 - 126.0.0.0大型网络
B128.0.0.0 - 191.255.0.0中型网络
C192.0.0.0 - 223.255.255.0小型网络
D224.0.0.0 - 239.255.255.255多播
E240.0.0.0 - 255.255.255.255实验用途

IP地址分类图示:
在这里插入图片描述

2. 子网掩码

子网掩码(Subnet Mask) 是用于划分网络地址与主机地址的关键机制。
通过子网掩码,我们可以判断两个 IP 地址是否属于同一个子网,并支持将一个 IP 网络进一步划分成多个子网,优化地址使用与网络管理。

工作原理(与运算):
子网掩码通过与 IP 地址进行按位与(AND)运算来提取网络地址:

IP:      192.168.1.10   → 11000000.10101000.00000001.00001010  
掩码:    255.255.255.0  → 11111111.11111111.11111111.00000000  
网络地址:             → 11000000.10101000.00000001.00000000 → 192.168.1.0

五、IP 的关键机制

1. 分片与重组

分片(Fragmentation)与重组(Reassembly)是 IP 协议在传输大型数据包时为适应不同网络链路的最大传输单元(MTU)所采用的重要机制,主要在 IPv4 中使用。

  • 当 IP 数据包超过链路的最大传输单元(MTU)时,会被分片传输
  • 接收端将分片重组成原始数据;
  • 重组只在目的主机完成,中间路由器不重组

分片示例:
参考书——计算机网络 (第8版)- 谢希仁。
在这里插入图片描述

2. TTL(Time To Live)

  • 限制数据包在网络中的“寿命”;
  • 每经过一个路由器,TTL 减 1;
  • TTL 为 0 时,数据包被丢弃,防止路由环路。

3. 路由与转发

  • IP 依靠路由器将数据包从源主机传送到目的主机;
  • 每个路由器根据目标IP地址和路由表决定下一跳

六、IPv4 vs IPv6

项目IPv4IPv6
地址长度32 位(4字节)128 位(16字节)
地址表示十进制,如 192.168.1.1十六进制,如 2001:0db8::1
地址数量约 43 亿个2^128,几乎无限
报文结构复杂,支持分片等简化,无中间分片,效率更高
NAT 支持支持,常用于节省地址不再需要 NAT,端到端通信
安全性无内建安全,需借助IPSec内建支持 IPSec 安全机制

七、IP 与其他协议的关系

IP 协议本身不提供可靠性,它通过与其他协议配合完成通信:

层级协议作用
传输层TCP、UDP提供端到端通信(可靠或快速)
网络层IP(本层)实现网络间通信与寻址
链路层Ethernet、Wi-Fi 等实现局域网中的物理传输
辅助协议ICMP、ARP、DHCP支持控制、地址解析、配置等

八、典型应用

  • IP 是 Web、FTP、SSH、邮件等所有互联网服务的基础
  • 所有设备(服务器、路由器、PC、手机)都必须拥有 IP 地址;
  • IP 协议配合路由器和子网规划,实现全球互联网互通。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/81238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【技术追踪】ADDP:通过交替去噪扩散过程学习用于图像识别和生成的通用表示(ICLR-2024)

扩散模型交替去噪:助力图像识别与图像生成~ 论文:ADDP: Learning General Representations for Image Recognition and Generation with Alternating Denoising Diffusion Process 代码:https://github.com/ChangyaoTian/ADDP 0、摘要 图像识…

在Linux上安装Miniconda

在Linux上安装Anaconda或Miniconda(轻量级版本) 选择安装版本 Anaconda: 包含200预装包(如NumPy、Pandas、TensorFlow等),适合新手或需要完整科学计算环境的用户。 安装包较大(约500MB&#xff…

SRS流媒体服务器之RTC播放环境搭建

环境概述 srs版本 commit 44f0c36b61bc7c3a1d51cb60be0ec184c840f09d Author: winlin <winlinvip.126.com> Date: Wed Aug 2 10:34:41 2023 0800Release v4.0-r5, 4.0 release5, v4.0.271, 145574 lines. rtc.conf # WebRTC streaming config for SRS. # see full.…

清山垃圾的3个问题

与一群驴友进山&#xff0c;同步捡拾一路的垃圾&#xff1a;清山行动。 关于垃圾&#xff0c;大家提了3个问题。记录于此&#xff0c;勤于思考&#xff1a;为什么&#xff0c;如何做 问题 - 山里的垃圾有哪些&#xff1f; - 垃圾是谁丢的&#xff1f; - 他们为…

redis集合类型

练习命令使用&#xff0c;具体如下&#xff1a; 练习无序集合类型命令 sadd smembers scard srem sinter sunion sdiff sismember srandmember spop 练习有序集合类型命令 无序集合中的每个元素都是不同的&#xff0c;且没有顺序 创建/追加/删除/查看 127.0.0.1:6379>…

JAVA 包管理

一 、关键点 包声明规则&#xff1a; 每个类首行的package声明必须与文件路径完全匹配com.example.math对应路径com/example/mathorg.demo.greeting对应路径org/demo/greeting 编译参数&#xff1a; -d ./build&#xff1a;指定编译输出目录编译器会自动根据包声明创建对应…

Linux中的文件系统和软硬连接

磁盘的访问方式 CHS&#xff08;柱面&#xff0c;磁头&#xff0c;扇区&#xff09; 法&#xff08;磁盘硬件查找&#xff09;&#xff1a; 确定柱面&#xff08;C&#xff09; 磁头臂移动到对应的柱面位置。例如&#xff0c;柱面号为 5&#xff0c;则磁头移动到第 5 个磁道组…

whisper相关的开源项目 (asr)

基于 Whisper&#xff08;OpenAI 的开源语音识别模型&#xff09;的开源项目有很多&#xff0c;涵盖了不同应用场景和优化方向。以下是一些值得关注的项目&#xff1a; 1. 核心工具 & 增强版 Whisper OpenAI Whisper 由 OpenAI 开源的通用语音识别模型&#xff0c;支持多语…

深入解析Spring Boot与JUnit 5集成测试的最佳实践

深入解析Spring Boot与JUnit 5集成测试的最佳实践 引言 在现代软件开发中&#xff0c;单元测试和集成测试是确保代码质量的重要手段。Spring Boot作为当前最流行的Java Web框架之一&#xff0c;提供了丰富的测试支持。而JUnit 5作为最新的JUnit版本&#xff0c;引入了许多新特…

gitlab占用内存 优化

优化 GitLab 配置 GitLab 的配置文件可以对内存使用进行优化。 以下是一些优化配置的方法&#xff1a; 1.1 调整 Unicorn&#xff08;或 Puma&#xff09;配置 GitLab 使用 Unicorn&#xff08;旧版&#xff09;或 Puma&#xff08;新版本&#xff09;作为其 Web 服务器。可以…

视觉语言模型(Vision-Language Model, VLM)的简单介绍

目录 1. 起源与历史 2. 核心技术与原理 3. 优势 4. 应用领域 5. 技术难点与挑战 6. 学习方法与路径 7. 未来发展方向 8. 总结 1. 起源与历史 起源&#xff1a; 视觉语言模型&#xff08;VLM&#xff09;的起源可以追溯到多模态机器学习的研究。早期的计算机视觉&#…

关于PHP的详细介绍,结合其核心特点、应用场景及2025年的技术发展趋势,以清晰的结构呈现:

一、PHP的核心特点 动态脚本语言 语法灵活&#xff1a;支持过程式与面向对象编程&#xff0c;类似C/Java的语法结构&#xff0c;但动态类型特性更接近Python。即时编译&#xff1a;PHP 8.x的JIT&#xff08;Just-In-Time&#xff09;编译器显著提升性能&#xff0c;尤其在数学…

MCP、MCPHub、A2A、AG-UI概述

MCP Model Context Protocol&#xff0c;模型上下文协议&#xff0c;Anthropic于2024年开源的标准协议&#xff0c;旨在统一AI模型与数据源的交互方式&#xff0c;提升数据访问的便捷性和可靠性&#xff0c;提供标准化的工具调用、资源管理和提示词功能。 MCP的基本定义&…

[学习]浅谈C++异常处理(代码示例)

浅谈C异常处理 文章目录 浅谈C异常处理一、异常处理基础1.异常的概念与作用2.C异常处理机制&#xff08;try、catch、throw&#xff09;3.基本语法示例 二、标准异常类1.常见标准异常类&#xff1a;2.自定义异常类的实现 三、异常安全与最佳实践1. RAII&#xff08;资源获取即初…

PHP学习笔记(十)

extends 一个类可以在声明中用extends关键字继承另一个类的方法和属性。PHP不支持多重继承&#xff0c;一个类只能继承一个基类。 被继承的方法和属性可以通过同样的名字重新声明被覆盖&#xff0c;但是如果父类定义或者常量时是使用类final&#xff0c;则不可被覆盖&#xff…

rt-linux里的泛rtmutex锁的调用链整体分析

一、背景 linux系统里有非常多的锁种类&#xff0c;除了spinlock&#xff0c;mutex&#xff0c;rwlock&#xff0c;rwsem&#xff0c;还有rcu及顺序锁&#xff0c;这里面还有不少锁变种&#xff0c;比如spinlock的带bh或者irq字样的lock/unlock&#xff0c;还有nmi里可以用的顺…

LLM多平台统一调用系统-LiteLLM概述

概述 在当今快速发展的AI领域&#xff0c;大语言模型(LLM)已成为技术创新的核心驱动力。然而&#xff0c;随着市场上涌现出越来越多的LLM提供商&#xff08;如OpenAI、Anthropic、Google Gemini、AWS Bedrock等&#xff09;&#xff0c;开发者面临着一个日益复杂的问题&#x…

C#实现MCP Client 与 LLM 连接,抓取网页内容功能!

该专栏优先在飞书发布&#xff0c;欢迎收藏关注&#xff01; https://www.feishu.cn/community/article?id7507084665509904403 前面的课程&#xff0c;我们已经用C#实现了&#xff0c;自己的MCP Client。 下面我们一起来实现&#xff0c;MCP Client与LLM 对接。 一、添加依…

并发编程(6)

指令重排序 指令重排序是指在程序执行过程中&#xff0c;为了提高性能&#xff0c;编译器或处理器会对指令的执行顺序进行重新排列。 指令重排序导致可见性消失 在多线程环境下&#xff0c;每个线程都有自己的工作内存&#xff0c;线程对变量的操作是在工作内存中进行的&…

鸿蒙仓颉开发语言实战教程:页面跳转和传参

前两天分别实现了商城应用的首页和商品详情页面&#xff0c;今天要分享新的内容&#xff0c;就是这两个页面之间的相互跳转和传递参数。 首先我们需要两个页面。如果你的项目中还没有第二个页面&#xff0c;可以右键cangjie文件夹新建仓颉文件&#xff1a; 新建的文件里面没什…