【网络原理】IP协议详解

一.与IP协议相关的基本概念

  • IP协议,即网际互连协议(Internet Protocol),是TCP/IP体系中的核心网络层协议。

网络层IP协议解决的问题

  • 数据传输的过程中,不是直接进行的传输,而是经过层层的封装和分用的过程才能到达对端. IP协议主要的功能就是地址管理(使用一套地址管理体系,描述设备在网络上的具体位置)和路由选择(数据包如何从网络中的一个地址传输到另一个地址).

二.IP协议的基本格式

IP协议的格式如图:
在这里插入图片描述

  • 4位版本号: 用来描述当前IP协议的版本(指的是IPv4和IPv6这两个版本)
  • 4位首部长度: 用来描述IP协议的IP报头.
  • 8位服务类型(TOS):3位优先权字段(已经弃用), 1位保留字段(必须置为0)和4位TOS字段. 4位TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择⼀个.对于ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重要.
  • 16位总长度:整个IP报文的总长度.但这并不意味着IP报文的长度就想UDP报文一样有长度限制,IP协议中提供了拆包和组包这样的功能,可以根据需求,将IP数据报分成若干个,这个拆包和组包的过程是在网络层完成的,传输层和数据链路层,并不会关心这个过程.
  • 16位标识:它的作用是将拆包后的各个子包的标识位相同,在组装的时候,该位相同的放到一起组装.如果IP报文在数据链路层被分片了, 那么每一个片里面的这个id都是相同的.
  • 3位标志: 该位用来描述是否进行了拆包.第⼀位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第⼆位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文. 第三位表示"更多分片", 如果分片了的话, 最后⼀个分片置为1, 其他是0. 类似于⼀个结束标记.
  • 13位片偏移:描述这些子包的先后顺序.是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值 * 8 得到的. 因此, 除了最后⼀个报文之外, 其他报文的长度必须是8的整数倍(否则报文就不连续了).
  • 8位生存时间:这里存储的时间不是s/ms,而是一个整数,通常是32/64.一个IP数据报,每经过一个路由器转发TTL就-1,如果这个数据减到0,说明这个数据丢包了. 这个字段主要是用来防止出现路由循环
  • 8位协议:表示传输层使用的哪个协议.
  • 16位首部校验和:使用CRC进行校验, 来鉴别头部是否损坏.只用校验IP的首部,载荷中的TCP/UDP都自带校验.
  • 32位源地址和32位目标地址: 表示发送端和接收端.

三.地址管理

网段划分

IP地址分为两个部分:

  • 网络号:保证相互连接的两个网段具有不同的标识;
  • 主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号

DHCP协议

现实中手动管理IP地址是一个非常麻烦的事情,当子网中新增主机时需要给其分配一个IP地址,当子网当中有主机断开网络时又需要将其IP地址进行回收,便于分配给后续新增的主机使用。因此对于IP地址的分配和回收一般不会手动进行,而是采用DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)技术。DHCP通常被应用在大型的局域网环境中,其主要作用就是集中地址管理、分配IP地址,使网络环境中的主机动态获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。DHCP是一个基于UDP的应用层协议,⼀般的路由器都带有DHCP功能. 因此路由器也可以看做⼀个DHCP服务器.

子网划分

过去曾经提出⼀种划分网络号和主机号的方案, 把所有IP 地址分为五类, 如下图所示。

在这里插入图片描述

  • A类 0.0.0.0到127.255.255.25
  • B类 128.0.0.0到191.255.255.255
  • C类 192.0.0.0到223.255.255.255
  • D类 224.0.0.0到239.255.255.255
  • E类 240.0.0.0到247.255.255.255

随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就分配完了, 而A类却浪费了大量地址

  • 例如, 申请了⼀个B类地址, 理论上一个子网内能允许6万5千多个主机. A类地址的子网内的主机数更多.
  • 然而实际网络架设中, 不会存在⼀个子网内有这么多的情况. 因此大量的IP地址都被浪费掉了.

针对这种情况提出了新的划分方案, 称为CIDR(Classless Interdomain Routing):

  • 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号;
  • 子网掩码也是⼀个32位的正整数. 通常用一串 “0” 来结尾;
    • 将IP地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号;
    • 网络号和主机号的划分与这个IP地址是A类、B类还是C类无关;
    在这里插入图片描述
    可见,IP地址与子网掩码做与运算可以得到网络号, 主机号从全0到全1就是子网的地址范围;
    IP地址和子网掩码还有⼀种更简洁的表示方法,例如140.252.20.68/24,表示IP地址为140.252.20.68, 子网掩码的高24位是1,也就是255.255.255.0

特殊的IP地址

  • 将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网;
  • 将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包;
  • 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1.

四.路由选择.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机是如何执行指令的

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

19 内核开发-内核源码编译

19 内核开发-内核源码编译 (1)开始准备 安装好virtual box ubuntu 系统后,即可下载内核代码,进行编译 历史内核源码地址:https://mirrors.tuna.tsinghua.edu.cn/kernel/v5.x/ 下载 linux-5.10.102.tar.gz 的包,可以使用wget 命令 创建编译目…

CasaOS玩客云安装memos开源云笔记并实现随时随地远程记笔记

文章目录 前言1. 使用Docker部署memos2. 注册账号与简单操作演示3. 安装cpolar内网穿透4. 创建公网地址5. 创建固定公网地址 前言 本文主要介绍如何在CasaOS玩客云,使用Docker本地部署21.6K stars的热门开源云笔记服务memos,并结合cpolar内网穿透工具打…

基于Springboot的校园志愿者管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园志愿者管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结…

土壤重金属含量分布、Cd镉含量、Cr、Pb、Cu、Zn、As和Hg、土壤采样点、土壤类型分布

土壤是人类赖以生存和发展的重要资源之一,也是陆地生态系统重要的组成部分。近年来, 随着我国城市化进程加快,矿产资源开发、金属加工冶炼、化工生产、污水灌溉以及不合理的化肥农药施用等因素导致重金属在农田土壤中不断富集。重金属作为土壤环境中一种具有潜在危害…

软件测试与管理-白盒测试-逻辑覆盖法例题

目录 知识点: 例题 : 知识点: 语句覆盖:设计足够多的测试用例,使得被测试程序中的“ 每条可执行语句至少被执行一次” 优点:可通过源码观察直观地得到测试用例,无须细分每个判定表达式。缺点&am…

2024-5-3学习笔记 虚拟继承原理

目录 原理 总结 前面提到过,解决菱形继承产生的数据二义性问题和数据冗余,就需要用到虚拟继承,关于它是如何解决的,我们来一起研究。 class Person { public :string _name ; // 姓名 }; class Student : virtual public Perso…

Chrome浏览器命令行妙用:使你的网上冲浪更加无障碍

引言 在当今数字化时代,网络浏览器已成为我们日常生活中不可或缺的工具之一。对于许多人来说,Google Chrome浏览器是首选,不仅因为它的普及度,更因为它提供的丰富功能和高度的可定制性。在Chrome的众多特性中,命令行功…

Pytorch实现图片异常检测

图片异常检测 异常检测指的是在正常的图片中找到异常的数据,由于无法通过规则进行识别判断,这样的应用场景通常都是需要人工进行识别,比如残次品的识别,图片异常识别模型的目标是可以代替或者辅助人工进行识别异常图片。 AnoGAN…

Linux-信号概念

1. 什么是信号 信号本质是一种通知机制,用户or操作系统通过发送信号通知进程,进程进行后续处理 在日常生活中就有很多例子,比如打游戏方面王者荣耀的“进攻”,“撤退”,“请求集合”,“干得漂亮&#xff01…

【一步一步了解Java系列】:探索Java基本类型转换的秘密

看到这句话的时候证明:此刻你我都在努力~ 加油陌生人~ 个人主页: Gu Gu Study ​​ 专栏:一步一步了解Java 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹。 如果喜欢能否点个赞支持一下&#…

第四百九十二回

文章目录 1. 概念介绍2. 使用方法2.1 SegmentedButton2.2 ButtonSegment 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"SearchBar组件"相关的内容,本章回中将介绍SegmentedButton组件.闲话休提,让我们一起Talk …

Java面试题:多线程3

CAS Compare and Swap(比较再交换) 体现了一种乐观锁的思想,在无锁情况下保证线程操作共享数据的原子性. 线程A和线程B对主内存中的变量c同时进行修改 在线程A中存在预期值a,修改后的更新值a1 在线程B中存在预期值b,修改后的更新值b1 当且仅当预期值和主内存中的变量值相等…

Llama3-Tutorial之XTuner微调Llama3个人小助手

Llama3-Tutorial之XTuner微调Llama3个人小助手 使用XTuner微调llama3模型。 参考: https://github.com/SmartFlowAI/Llama3-Tutorial 1. web demo部署 参考上一节内容已经完成web demo部署,进行对话测试, 当前回答基于llama3官方发布的模型进行推理生成&…

MySQL基础_5.多表查询

文章目录 一、多表连接1.1、笛卡尔积(或交叉连接) 二、多表查询(SQL99语法)2.1、内连接(INNER JOIN)2.2、内连接(INNER JOIN) 一、多表连接 多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 …

利用matplotlib和networkx绘制有向图[显示边的权重]

使用Python中的matplotlib和networkx库来绘制一个有向图,并显示边的权重标签。 1. 定义了节点和边:节点是一个包含5个节点的列表,边是一个包含各个边以及它们的权重的列表。 2. 创建了一个有向图对象 G。 3. 向图中添加节点和边。 4. 设置了…

Sarcasm detection论文解析 |基于情感背景和个人表达习惯的有效讽刺检测方法

论文地址 论文地址:https://link.springer.com/article/10.1007/s12559-021-09832-x#/ 论文首页 笔记框架 基于情感背景和个人表达习惯的有效讽刺检测方法 📅出版年份:2022 📖出版期刊:Cognitive Computation 📈影响因子:5.4 &…

光检测器——光纤通信学习笔记七

光检测器 光检测器的基本介绍 作用:把接受到的光信号转换成电信号 光接收器的灵敏度、光源的发光功率和光纤的损耗三者决定了光纤通信的传输距离; 光电二极管 光电转换的基本原理 之前提到,PN结由于内部载流子的扩散运动形成了内部电场&…

[Java EE] 多线程(八):CAS问题与JUC包

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (90平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

华为 二层交换机与防火墙连通上网实验

防火墙是一种网络安全设备,用于监控和控制网络流量。它可以帮助防止未经授权的访问,保护网络免受攻击和恶意软件感染。防火墙可以根据预定义的规则过滤流量,例如允许或阻止特定IP地址或端口的流量。它也可以检测和阻止恶意软件、病毒和其他威…