网络层IP协议(TCP)

IP协议:

        在了解IP协议之前,我们市面上看到的"路由器"其实就是工作在网络层。如下图:

那么网络层中的IP协议究竟是如何发送数据包的呢?

IP报头:

IP协议的报头是比较复杂的,作为程序猿只需要我们重点理解几个点。

4位版本:

        当今的IP的版本有两种:IPv4和IPv6。

        现如今IPv4是主流的版本。

4位首部长度:

        IP协议报头的长度是可变的。IP报头的长度 = 0-15 * 4 KB.

        (4位的取值范围就是0-15)

8位服务类型:

        3位优先权字段(已经弃⽤), 4位TOS字段, 和1位保留字段(必须置为0) . 4位TOS分别表⽰: 最⼩延时, 最⼤吞吐量, 最⾼可靠性, 最⼩成本 . 这四者相互冲突, 只能选择⼀个。
对于ssh/telnet这样的应⽤程序, 最⼩延时⽐较重要; 对于ftp这样的程序, 最⼤吞吐量⽐较重要。

16位总⻓度(total length):

        IP数据报整体占多少个字节(64KB)

16位标识(id): 

        唯⼀的标识主机发送的报⽂. 如果IP报⽂在 数据链路层被分⽚ 了, 那么每⼀个⽚⾥⾯的这个id都是相同的.
需要注意的是IP数据报会自动完成拆包和组包。

3位标志字段:

        第⼀位保留(保留的意思是现在不⽤, 但是还没想好说不定以后要⽤到). 第⼆位置为1表⽰禁⽌分⽚, 这时候如果报⽂⻓度超过MTU, IP模块就会丢弃报⽂. 第三位表⽰"更多分⽚", 如果分⽚了的话, 最后⼀个分⽚置为1, 其他是0. 类似于⼀个结束标记.

13位分片偏移:

        13位分⽚偏移(framegament offset): 是分⽚相对于原始IP报⽂开始处的偏移. 其实就是在表⽰当前分⽚在原报⽂中处在哪个位置. 实际偏移的字节数是这个值 * 8 得到的. 因此, 除了最后⼀个报⽂之外, 其他报⽂的⻓度必须是8的整数倍(否则报⽂就不连续了).

8位⽣存时间(Time To Live, TTL):

数据报到达⽬的地的 最⼤报⽂跳数. ⼀般是64. 每次经过 ⼀个路由, TTL -= 1 , ⼀直减到0还没到达, 那么就丢弃了. 这个字段主要是⽤来防⽌出现路由循环。
可以假设构造了一个IP数据报,该数据包中的目的IP写了一个不存在的,此时这样的数据包将无限传输,但是设置了TTL,约定了传输上限,只要达到上限,数据包会自动丢弃。

8位协议:

        IP数据报传输过程中里面携带的载荷肯定是传输层的相关协议,8位协议里面的数值就代表着传输层的哪一个协议。

16位首部检验和:

        检验IP报头中数据是否出错。这里不需要检验载荷中传输层协议的正确性。

地址管理:

        路由器工作在网络层,现在的路由器都有自动分配IP的功能DHCP

       在IPv4的报头中我们也可以观察到,IP一共是32位,也就是一共42亿9千万个,但是随着时代的发展,这么多的IP地址已经不够用了,那么该如何解决以上的问题呢?


方案1:

        动态分配IP,一个设备上网就分配一个IP,不上网就不分配。

方案2:


        NAT网络地址转换。

        可不可能使用一个IP代表一大波设备?

        把IP地址分为两大类:

        1.公网IP\外网IP

        2.私网IP\内网IP  

 要求公网IP必须是唯一的,私网IP是允许重复的(在不同的局域网中是可以重复的)

一个设备在上网的时候,IP数据包中的IP地址会被NAT设备(通常是路由器)进行自动修改。

那么就会有以下几种4种情况:
1.同一个局域网内:主机A访问主机B

2.公网的设备A访问公网的设备B

3.一个局域网中的主机A,访问另一个局域网中的主机B

4.局域网中的设备A,访问公网中的设备B

一共有以上的4种访问情况,究竟哪种情况会触发NAT机制?

首先第一种:同一个局域网下的设备互相访问,不会触发NAT机制。

其次第二种:公网之间相互访问的设备,不会触发NAT机制。

再其次第三种,第三种这种访问时不被允许的,所以也谈不上NAT机制。

所以只有第四种情况才会触发NAT机制。

那么究竟是怎样出发的呢?

如下图:

那么此时一个路由器可能关联着许多设备,那么这么多设备如果同时发送QQ消息,此时发送给QQ服务器的IP地址都是一样的了。

结论:此时就相当于一个公网IP地址代表着一大波设备!!

但是此时还是有问题,此时QQ服务器给我返回响应,最后通过路由器传回客户端,那么这个端口号应该怎么填写:

例如:

此时在经过路由器的时候,路由器不仅进行了NAT,其实还将端口号进行了一个修改定制:

此时所有设备在经过路由器的时候,相当于路由器这边会自动生成一个表记录IP和端口号的键值对,最后都已新的IP和端口号发送给对端。

之后等服务器相应过来的数据,经过路由器,对应查表之后发送给不同的客户端。

方案3:

        使用IPv6解决IP不够用的问题.

        IPv4使用的是32位4个字节。

        IPv6使用的是128位16个字节. 

IPv6是16个字节,可以说,能够表示的IP数量够地球上每一粒沙子拥有一个独立的IP。

 网络号&主机号:

        那么理解完IP的协议和地址管理之后,问题又来了,IP中的数字是什么含义?

        IP地址一共是32位,可以一分为二,左半部分表示网络号,右半部分表示主机号。

        例如:

这里的一半并不代表均分,至于左半部分占的多还是右半部分占的多,就和主机上面的子网掩码有关。

网络中规定:

        同一个局域网下,网络号必须相同,但是主机号一定不同

        两个相邻的局域网,网络号必须不同

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

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

相关文章

Xcode

info.plist Appearance Light 关闭黑暗模式 Bundle display name 设置app名称,默认为工程名 Location When In Use Usage Description 定位权限一共有3个key 1.Privacy - Location When In Use Usage Description 2.Privacy - Location Always and When In U…

【CSS in Depth 2 精译_079】第 13 章:渐变、阴影与混合模式概述 + 13.1:CSS 渐变效果(一)——使用多个颜色节点

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 13 章 渐变、阴影与混合模式】 ✔️ 13.1 渐变 ✔️ 13.1.1 使用多个颜色节点(一) ✔️13.1.2 颜色插值13.1.3 径向渐变13.1.4 锥形渐变 文…

地下管线三维建模,市面上有哪些软件

1. 地下管线:城市“生命线” 地下管线是城市的重要基础设施,包括供水、排水、燃气、热力、电力、通信等管线,它们如同城市的“生命线”,支撑着城市的正常运转。如果缺乏完整和准确的地下管线信息,施工破坏地下管线的事…

说说你对java lambda表达式的理解?

大家好,我是锋哥。今天分享关于【说说你对java lambda表达式的理解?】面试题。希望对大家有帮助; 说说你对java lambda表达式的理解? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Java Lambda 表达式是 Java 8 引入的一项重要特性&#…

网易云信荣获“HarmonyOS NEXT SDK星河奖”

近日,鸿蒙生态伙伴 SDK 开发者论坛在北京举行。 网易云信凭借在融合通信领域的技术创新和鸿蒙生态贡献,荣获鸿蒙生态“HarmonyOS NEXT SDK星河奖”。 会上,华为鸿蒙正式推出 SDK 生态繁荣伙伴支持计划,旨在为 SDK 领域伙伴和开发…

电压调整电路汇总

目录: 一、LDO线性稳压器 1、LM1117 2、NCV33275 3、TLE42764 4、TPS7B67xx-Q1 5、总结 二、DCDC转换器 1、LM2576 2、MC34063A 3、总结 原文件下载移步:LDO-DCDC的仿真与Altium原理图 一、LDO线性稳压器 1、LM1117 LM1117 是一款在 800mA 负…

2024美亚杯资格赛复现

参考: 2024“美亚杯”第十届中国电子数据取证大赛资格赛参考WP 2024美亚杯个人资格赛WP 第十届美亚杯个人赛内存和优盘解答 2024年美亚杯个人赛 资格赛 wp_2024美亚杯个人赛-CSDN博客 历年赛题及解析 - 美亚杯 第一次打,感觉就是题量很大&#xff…

练12:双指针

欢迎大家订阅【蓝桥杯Python每日一练】 专栏,开启你的 Python数据结构与算法 学习之旅! 文章目录 前言1 同向扫描2 反向扫描3 同向扫描与反向扫描的对比4 例题分析2.1 回文判定2.2 美丽的区间2.3 挑选子串 前言 双指针是一种常用于数组和链表类问题中&a…

360智脑张向征:共建可信可控AI生态 应对大模型安全挑战

发布 | 大力财经 人工智能的加速发展,有力推动了社会的数智化转型;与此同时,带来的相关安全风险也日益凸显。近日,在北京市举办的通明湖人工智能开发与应用大会上,360智脑总裁张向征以“大模型安全研究与实践”为主题&…

6.数据建模和数据检索及权限检查

总学习目录请点击下面连接 SAP ABAP开发从0到入职,冷冬备战-CSDN博客 目录 1.数据建模和ABAP字典的透明表 现实产品到数据库数据过程 飞行数据模型 做一个简单的引用。 从旅行社来看: 对于开发人员: 透明表 结构体和透明表 在系统中…

反复出现 idf.py: command not found 的解决办法

版本:ESP-IDF v4.4.8 1. 问题描述 当我们需要经常使用 ESP-IDF 时,总要反复安装编译链、设置环境,不然就会显示 idf.py: command not foundESP-IDF 是乐鑫官方的物联网开发框架,适用于ESP32、ESP32-S、ESP32-C 和ESP32-H 系列S…

IIC 通信协议

IIC 通信协议 参考:CSDN-Projectsauron、B站-江协科技 IIC Overview IIC协议(Inter-Integrated Circuit,可简写为 I2C),是一种用于各种电子设备之间进行通信和数据交换的串行通信协议。它是由飞利浦(Phil…

【图像处理】利用numpy、opencv、python实现车牌检测

| 利用opencv实现车牌检测 整体流程涉及5个部分 图像通道转换对比度增强边缘连接二值化边界区域裁剪 图像通道转换 将RGB图像转换为HSV图像,仅保留V通道。V通道表示颜色的明暗,常用于图像对比度拉伸、直方图均衡化等流程。 原图像: V通…

linux切换用户异常

1、报错现象 报错su: failed to execute /bin/bash: Resource temporarily unavailable 2、解决方案 vim /etc/security/limits.d/20-nproc.conf

UE5安装Fab插件

今天才知道原来Fab也有类似Quixel Bridge的插件,于是立马就安装上了,这里分享一下安装方法 在Epic客户端 - 库 - Fab Library 搜索 Fab 即可安装Fab插件 然后重启引擎,在插件面板勾选即可 然后在窗口这就有了 引擎左下角也会多出一个Fab图标…

Java、鸿蒙与嵌入式开发:技术选择与职业发展分析

在当今快速发展的科技领域中,Java、鸿蒙和嵌入式开发代表着不同的技术方向和职业机遇。每个方向都有其独特的市场价值和发展前景,让我们深入分析这三个领域的特点、发展趋势和职业规划。 Java开发方向已经发展了二十多年,仍然在软件开发领域…

synchronized 锁升级实现原理

synchronized 锁升级实现原理 对象的内存结构 在HotSpot虚拟机中,对象在内存中存储的布局可分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充 我们需要重点分析MarkWord对象头 MarkWord …

vue3实现页签

效果 注意点 useStore涉及的部分是pina的缓存,需要改成自己的;userStore.tabStore是获取缓存里的页签,userStore.$patch(state > { state.tabStore tabStoreList.value }) 是存储改变的页签注意我的页签是根据路由path来判断的&#xf…

dfs算法搜索(详细)

目录 算法简介: 枚举方式: 1.每一个数都有两种状态,也就是选或不选,时间复杂度也就是2^n,每一个数都有选和不选两种状态。 2.生成给定集合所有可能排列的方法,与之不同的是同样是1 2 3三个数字&#xff0…

【机器学习】解构概率,重构世界:贝叶斯定理与智能世界的暗语

文章目录 条件概率与贝叶斯定理:深入理解机器学习中的概率关系前言一、条件概率与贝叶斯定理1.1 条件概率的定义与公式1.1.1 条件概率的定义1.1.2 条件概率的实例讲解 1.2 条件概率的性质与法则1.2.1 链式法则1.2.2 全概率公式1.2.3 贝叶斯定理的推导 1.3 贝叶斯定理…