【网络原理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上同时执行并发࿱…...
90后阿里P7技术专家晒出工资单:狠补了这个,真香...
最近一哥们跟我聊天装逼,说他最近从阿里跳槽了,我问他跳出来拿了多少?哥们表示很得意,说跳槽到新公司一个月后发了工资,月入5万多,表示很满足!这样的高薪资着实让人羡慕,我猜这是税后…...
2023美赛C题:Wordle筛选算法
Wordle 规则介绍 Wordle 每天会更新一个5个字母的单词,在6次尝试中猜出单词就算成功。每个猜测必须是一个有效的单词(不能是不能组成单词的字母排列)。 每次猜测后,字母块的颜色会改变,颜色含义如下: 程…...
SpringBoot 集成 Kafka
SpringBoot 集成 Kafka1 安装 Kafka2 创建 Topic3 Java 创建 Topic4 SpringBoot 项目4.1 pom.xml4.2 application.yml4.3 KafkaApplication.java4.4 CustomizePartitioner.java4.5 KafkaInitialConfig.java4.6 SendMessageController.java5 测试1 安装 Kafka Docker 安装 Kafk…...
OpenCV 图像金字塔算子
本文是OpenCV图像视觉入门之路的第14篇文章,本文详细的介绍了图像金字塔算子的各种操作,例如:高斯金字塔算子 、拉普拉斯金字塔算子等操作。 高斯金字塔中的较高级别(低分辨率)是通过先用高斯核对图像进行卷积再删除偶…...
【自学Linux】Linux一切皆文件
Linux一切皆文件 Linux一切皆文件教程 Linux 中所有内容都是以文件的形式保存和管理的,即一切皆文件,普通文件是文件,目录是文件,硬件设备(键盘、监视器、硬盘、打印机)是文件,就连套接字&…...
CUDA C++扩展的详细描述
CUDA C扩展的详细描述 文章目录CUDA C扩展的详细描述CUDA函数执行空间说明符B.1.1 \_\_global\_\_B.1.2 \_\_device\_\_B.1.3 \_\_host\_\_B.1.4 Undefined behaviorB.1.5 __noinline__ and __forceinline__B.2 Variable Memory Space SpecifiersB.2.1 \_\_device\_\_B.2.2. \_…...
为什么重写equals必须重写hashCode
关于这个问题,看了网上很多答案,感觉都参差不齐,没有答到要点,这次就记录一下! 首先我们为什么要重写equals?这个方法是用来干嘛的? public boolean equals (Object object&#x…...
< 每日小技巧:N个很棒的 Vue 开发技巧, 持续记录ing >
每日小技巧:6 个很棒的 Vue 开发技巧👉 ① Watch 妙用> watch的高级使用> 一个监听器触发多个方法> watch 监听多个变量👉 ② 自定义事件 $emit() 和 事件参数 $event👉 ③ 监听组件生命周期常规写法hook写法ὄ…...
数据结构与算法之二分查找分而治之思想
决定我们成为什么样人的,不是我们的能力,而是我们的选择。——《哈利波特与密室》二分查找是查找算法里面是很优秀的一个算法,特别是在有序的数组中,这种算法思想体现的淋漓尽致。一.题目描述及其要求请实现无重复数字的升序数组的…...
训练自己的中文word2vec(词向量)--skip-gram方法
训练自己的中文word2vec(词向量)–skip-gram方法 什么是词向量 将单词映射/嵌入(Embedding)到一个新的空间,形成词向量,以此来表示词的语义信息,在这个新的空间中,语义相同的单…...
wordpress 内容隐藏/seo网站推广软件 快排
I、数据库使用版本信息 neo4j 3.1.0 社区版本 neo4j 4.0.9 社区版本 neo4j 4.2.11 企业版本 II、Neo4j 4.2.11企业版本 主要用作性能测试: 参考:Database management - Neo4j Cypher Manual III、数据库操作 0、数据库browser 查询结果配置 显示所有配…...
清城区做模板网站建设/网站建设找哪家公司好
《Java程序设计》试卷三一、选择题(2分*2550分)1、下列关于栈的叙述正确的是A) 栈是非线性结构B) 栈是一种树状结构C) 栈具有先进先出的特征D) 栈具有后进先出的特征2、下列不是InputStream子类的是A) 文件输入流FileInputStreamB) 对象输入流ObjectInpu…...
江苏网站建设要多少钱/网络营销推广专员
在以前,作为一个刚开始使用Python的开发者,我时常为布设一个有效的开发环境感到困扰。找到一套自己能顺畅使用的环境且为此培养一个正确的习惯是很困难的。 之前我一直没有意识到这些事情对我的工作效率影响有很大的影响,我甚至不知道一些我现…...
网站开发合同 中英文/网站收录查询平台
新建数据库连接类MysqlDatabase.class.php1,数据库连接需要用到的属性<?php /*** Created by PhpStorm.* User: Administrator* Date: 2018/3/3 0003* Time: 下午 2:57*/class MysqlDatabase{//数据库连接信息private $dbConfigarray(host>localhost,port>3306,user&…...
网站建设的好处/信息流推广渠道
dp[i][j]dp[i-a[i][j]dp[i-a[i]][j-1]; 其中前一项j不变表示j这一项无限取转载于:https://www.cnblogs.com/linkzijun/p/6288364.html...
优质网站建设方案/如何推广一款app
该文章同步在个人博客shymean.com上,欢迎关注 前言 之前对于代码中的console.log一直是比较嫌弃的,以致于提交代码前一般会通过eslint检测是否包含了log输出。 最近一直在处理一个chrome插件的需求,需要打开某个url标签页,然后根据…...