【网络原理5】IP协议篇
目录
IP协议报头
4位版本号
4位首部长度
8位服务类型(TOS)
16位总长度
IP拆包
16位标识、3位标志、13位片偏移编辑
8位生存时间(TTL)
8位协议
16位首部校验和
网络地址管理
32位源ip&32位目的ip
方案一:动态分配ip地址
方案2:NAT网络地址转换(使用一个ip代表一批设备)
方案3:使用ipv6,从根本上解决IP不够用的问题
网络号&主机号
一个两个不同的局域网之间的关系(图解)
子网掩码
几个特殊的IP
回环IP:
广播地址:主机地址全为1的IP:(192.168.0.255)
主机地址为十进制1的IP(网关IP)
主机地址为0的IP
路由地址选择
IP协议其实是工作在网络层的协议。
关于什么是网络层,已经在这一篇文章当中提到了。
初识网络:IP、端口、网络协议、TCP-IP五层模型_革凡成圣211的博客-CSDN博客TCP/IP五层协议详解https://blog.csdn.net/weixin_56738054/article/details/128666970?spm=1001.2014.3001.5501 它主要负责地址管理和路由器选择。
IP协议报头
下面,来一张图看看ip报文,下面将说几个常见的属性

4位版本号
版本号这里的取值只有两个,一个是4另外一个是6,分别代表ipv4和ipv6。
本文章目前讨论的就是ipv4。
4位首部长度
描述了ip报头有多长。IP报头和TCP报头一样,也是包含了选项部分的长度,选项的长度是变化的,最短可以为0,也就是可有可无的。
4位首部长度的单位也是"4字节"。当首部长度位15的时候,可以经过下面的运算得出IP报头长度和选项长度。

8位服务类型(TOS)
这里说是8位,其实实际上只有4位,对应4种形态。
这4位当中,只有1位可以表示1,其他都是0。
这4种形态分别是:
最小延时、最大吞吐量、最高可靠性、最小成本。
实际开发当中就可以根据需要,来切换IP的模式,达到最优的效果。
16位总长度
描述了一个IP数据包的长度。一个IP数据包,包含了两部分:
IP报头+IP载荷。这两个部分合起来,就是一个IP报文的总的长度。

所以:IP载荷部分长度=16位总长度-4位首部长度。
IP拆包
IP报头当中有一个属性——16位首部长度。这难道代表,IP数据报的最大长度就是64KB吗?
并不是的,当一个IP报文的总长度如果达到了64KB之后,就会在网络层进行拆包,把一个数据拆成多个IP数据报,然后发送给数据链路层。各自以数据帧的方式进行传送
在接收方接收这个IP报文的时候,会再次把这两个IP数据报进行解析,然后再合并成一个IP报文传送给接收方传输层。

这就好像一个电梯的载重是9吨,如果一个货物重10吨,那么就只能分成多次进行运送了。
然后运送到目标楼层之后,在进行拼装组合。
和UDP不一样的是,UDP虽然也有大小限制(64KB),但是一旦超过了这个限制,只能由
程序员手动拆包。并不像IP协议一样可以自动拆包。
16位标识、3位标志、13位片偏移
8位生存时间(TTL)
一个数据报在网络上能够传输的最大时间。这个时间的单位不是"秒",而是次数
当初始化之后,在链路上面进行传输的时候,每经过一个路由器,TTL的值就-1。
如果TTL的值减为0之后,还没有到达目标,此时就认为这个数据永远也到达不了了,于是这个IP报文就会被丢弃。

8位协议
8位协议,指明了此处的IP协议的载荷当中的传输层协议是什么,例如指明了是TCP还是UDP的协议。
16位首部校验和
仅仅根据首部的特点计算出它的校验和,并不需要根据整个ip报头再计算一次。
原因:IP载荷已部分已经有对应的协议校验过了,无需再次校验。

如果校验和不一致,直接丢弃
IP地址功能
IP有两个功能,一个是网络地址管理,另外一个是路由器选择。
下面,首先谈一下IP是怎样进行网络地址管理的
网络地址管理
32位源ip&32位目的ip
此处看到的IP地址是一个32位的整数。但是,我们平时看到的ip地址好像就是a.b.c.d这样的格式的数字。
我们一般期待,每一个网络设备的ip地址都不一样。32位,也就是代表了42亿9千万个数字。
但是,如果放在整个世界的网络设备当中,42亿9kw这个数字远远不够用
为了解决这个问题,于是就有了如下的解决方案:
方案一:动态分配ip地址
此时,哪些设备需要网络,哪一些设备就连上网络。但是,这是一个治标不治本的方式。无法彻底解决ip地址不够用的问题。
方案2:NAT网络地址转换(使用一个ip代表一批设备)
在NAT背景下,就把IP地址分为两个大类:
大类1:内网IP(私有ip)
什么样的IP,可以代表内网IP呢?
有以下这三种IP:
①10.*开头的IP地址;
②172.16.*~172.31.*;
③192.168.*
只要IP地址属于这三类当中的某一类,那么就一定属于私网IP
大类2:外网IP(公网IP)
除了大类1范围以外的IP地址,都属于公网IP
NAT要求:公网IP必须是唯一的,不可以重复。
私网IP可以在不同的局域网内重复出现,但是不可以在同一个局域网内重复
如果某个私网想要访问公网,那么就需要使用NAT(路由器)把IP地址进行映射,从而完成网络访问。同样地,不同局域网下面的设备,也无法直接访问。
同一个路由器下面的所有设备的公网ip都是一样的。
使用IPV4+NAT+动态分配的技术,是目前来说比较广泛使用的方式。
小明说:我的电脑的IP地址是192.168.2.3,
小红说:我知道你的电脑的IP啦,我可以黑你!
小明:你只知道我的私网IP,无法知道我的公网IP,也就是我家的路由器的IP。就算你知道了我家路由器的IP,也只能黑我的路由器呀,哈哈。你永远黑不到我的电脑噢~
方案3:使用ipv6,从根本上解决IP不够用的问题
对于ipv4,它使用的是32位,也就是4字节来表示ip地址。
下图是ipv4的

关于ipv6,它是使用了128位,也就是16字节来表示ip地址。
128位,可以表示的无符号范围为(0,2^128-1)。这一个数字(大约是42亿的4次方),可以表示足够多的ip地址了。
网络号&主机号
如果一个ip地址为192.168.10.1(本主机的私网地址)。
那么,网络号为:192.168.10(也就是前三位),主机号为最后一位:1。
那么也就意味着,一个局域网下面的所有网络设备,它们的网络号都是192.168.10。
一个两个不同的局域网之间的关系(图解)
①同一个路由器都拥有两个接口,一个是WAN口(连接其中一个局域网);
另外一个是LAN口(连接另外一个局域网),LAN口一般用于连接和这个路由器相连的网络设备。
也就是LAN口的网络号和各个主机的网络号一致。

②路由器连接的另外一个光猫:
这个光猫的LAN口编号和路由器的WAN口编号处于同一个局域网内部。

子网掩码

如上图,一个子网掩码就是255.255.255.0;
子网掩码也是一个32位的整数:如上图,表示就是:1111 1111 1111 1111 1111 1111 0000 0000
左侧都是1,右侧都是0。1的部分描述了IP地址的网络号最多有多少位。
255.255.255就是网络号的最大值了。
几个特殊的IP
回环IP:
127.*的IP地址为本机回环IP,通常是127.0.0.1,这个IP地址通常用于测试本机的应用程序。例如手写一个客户端——服务端程序的时候,用于测试是否可以连通网络。
广播地址:主机地址全为1的IP:(192.168.0.255)
主机地址为一个ip地址最后一个.往后的部分。例如在上面的IP地址当中,255就是这个IP地址的主机地址,255的用二进制表示就是11111111
这里的全为1并不是十进制的1,而是二进制的1。
如果使用UDP协议往这个地址上面发送数据报,那么整个局域网的所有设备都可以收到。
主机地址为十进制1的IP(网关IP)
当一个通信设备的IP地址为192.168.0.1.......或者192.168.3.1
也就是主机号为1的时候,这个通信设备就通常是一个网关
网关可以理解为一个局域网的入口
例如下图当中的LAN口就是一个局域网是入口:

主机地址为0的IP
例如123.45.67.0
主机IP为0,说明这个IP地址代表了一个局域网的IP。
路由地址选择
这是IP地址的第二个功能。
每一个路由器都会保存一定的周围设备的信息,这部分信息被称为(路由表)。
每次有一个IP数据报经过路由器,就需要匹配路由表,看一看接下来咋走。
如果路由表上面有匹配的项,就会往这一个匹配的项走。
以上内容只是简单了解一下路由器选择,具体内容,可以参考网络。
相关文章:
【网络原理5】IP协议篇
目录 IP协议报头 4位版本号 4位首部长度 8位服务类型(TOS) 16位总长度 IP拆包 16位标识、3位标志、13位片偏移编辑 8位生存时间(TTL) 8位协议 16位首部校验和 网络地址管理 32位源ip&32位目的ip 方案一:动态分配ip地址 方案2:NAT网络地址转换(使用一个ip代…...
Unity导出WebGL工程,并部署本地web服务器
WebGL打包 设置修改 在Build Settings->PlayerSettings->Other Settings->Rendering 将Color Space 设置为Gamma 将Lightmap Encoding 设置为NormalQuality 在Build Settings->PlayerSettings->Publishing Settings 勾选Decompression Fallback 打包 完成配…...
蓝桥杯考试总结汇总
一进考场设置devc快捷键 设置注释和取消注释快捷键设置代码自动补全快捷键开启devc调试功能,详细可以看怎么开调试功能https://blog.csdn.net/hz18790581821/article/details/78418648比赛过程中,如果不相信自己是否做对,没有把握的…...
备战蓝桥杯【二维前缀和】
🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…...
阿里P6细谈Python简易接口自动化测试框架设计与实现,我直呼内行
1、开发环境 操作系统:Ubuntu18 开发工具:IDEAPyCharm插件 Python版本:3.6 2、用到的模块 requests:用于发送请求 xlrd:操作Excel,组织测试用例 smtplib,email:发送测试报告 l…...
数据库存储
RAID DSL : Domain Spesic Language 专用领域语言 单机存储 一切皆Key-Value 本地文件系统 一切皆文件 Ceph - 分布式存储 关系型数据库通用组件 Query Engine :解析query,生成查询计划Txn Manager :事务并发管理Lock Man…...
hive学习笔记
一、Hive基本概念1.1 hive是什么hive是基于hadoop的一个数仓分析工具,hive可以将hdfs上存储的结构化的数据,映射成一张表,然后让用户写HQL(类SQL)来分析数据tel up down 1383838438 1345 1567 138383…...
7大体系防作弊,牛客放大招了!严肃笔试客户端上线!
如果问起学生对在线笔试的印象,“不公平”和“不服气”占了半壁江山。学生认为很多企业的在线笔试系统并不完善。原因一,不能有效地规避部分学生的作弊行为;原因二,在线考试系统不稳定,bug频出,导致笔试发挥…...
R语言广义可加模型在空气环境污染方面的应用(1)
粉丝私信我希望复制一篇文章的图片,图片来源于文章:Wu C, Yan Y, Chen X, Gong J, Guo Y, Zhao Y, Yang N, Dai J, Zhang F, Xiang H. Short-term exposure to ambient air pollution and type 2 diabetes mortality: A population-based time series st…...
CSDN 编程竞赛二十九期题解
竞赛总览 CSDN 编程竞赛二十九期:比赛详情 (csdn.net) 竞赛题解 题目1、订班服 小A班级订班服了!可是小A是个小糊涂鬼,整错了好多人的衣服的大小。小A只能自己掏钱包来补钱了。小A想知道自己至少需要买多少件衣服。 #include <cstdio…...
基于STM32采用CS创世 SD NAND(贴片SD卡)完成FATFS文件系统移植与测试
一、前言 在STM32项目开发中,经常会用到存储芯片存储数据。 比如:关机时保存机器运行过程中的状态数据,上电再从存储芯片里读取数据恢复;在存储芯片里也会存放很多资源文件。比如,开机音乐,界面上的菜单图…...
K_A12_007 基于STM32等单片机驱动AS608光学指纹识别模块 OLED0.96显示
K_A12_007 基于STM32等单片机驱动AS608光学指纹识别模块 OLED0.96显示一、资源说明二、基本参数参数引脚说明三、驱动说明对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RCAS608光学指纹模块1.2、STM32F103C8T6AS608光学指纹模块五、基础知识学习与相关资料下载六、视…...
map和set介绍及其底层模拟实现
致努力前行的人: 要努力,但不要着急,繁花锦簇,硕果累累都需要过程! 目录 1.关联式容器 2.键值对 3.树形结构的关联式容器 3.1set的介绍 3.2set的使用 3.3multiset的使用 3.4map的使用 3.5multimap的使用 4.常见的面试题…...
实现一个比ant功能更丰富的Modal组件
普通的modal组件如下: 我们写的modal额外支持,后面没有蒙版,并且Modal框能够拖拽 还支持渲染在文档流里,上面的都是fixed布局,我们这个正常渲染到文档下面: render部分 <RenderDialog{...restState}visi…...
2023美赛F题思路数据代码分享
文章目录赛题思路2023年美国大学生数学建模竞赛选题&论文一、关于选题二、关于论文格式三、关于论文提交四、论文提交流程注意不要手滑美赛F题思路数据代码【最新】赛题思路 (赛题出来以后第一时间在CSDN分享) 最新进度在文章最下方卡片,加入获取一手资源 202…...
Flutter如何与Native(Android)进行交互
前言 上一篇文章《Flutter混合开发:Android中如何启动Flutter》中我们介绍了如何在Native(Android项目)中启动Flutter,展示Flutter页面。但是在开发过程中,很多时候并不是简单的展示一个页面即可,还会涉及…...
数据库主从复制和读写分离
主从数据库和数据库集群的一些问题 数据库集群和主从数据库最本质的区别,其实也就是data-sharing和nothing-sharing的区别。集群是共享存储的。主从复制中没有任何共享。每台机器都是独立且完整的系统。 什么是主从复制? 主从复制,是用来建立一个和主数…...
Java并发编程面试题——线程安全(原子性、可见性、有序性)
文章目录一、原子性高频问题1.1 Java中如何实现线程安全?1.2 CAS底层实现1.3 CAS的常见问题1.4 四种引用类型 ThreadLocal的问题?二、可见性高频问题2.1 Java的内存模型2.2 保证可见性的方式2.3 volatile修饰引用数据类型2.4 有了MESI协议,为啥还有vol…...
DialogFragment内存泄露问题能不能一次性改好
孽缘 自DialogFragment在Android3.0之后作为一种特殊的Fragment引入,官方建议使用DialogFragment代替Dialog或者AllertDialog来实现弹框的功能,因为它可以更好的管理Dialog的生命周期以及可以更好复用。 然而建议虽好,实用须谨慎,…...
java学习--多线程
多线程 了解多线程 多线程是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。 并发和并行 并行:在同一时刻,有多个指令在CPU上同时执行并发࿱…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
