【网络原理】TCP/IP协议(续)

news2025/3/1 14:26:31

目录

🔥网络层重点协议(IP 协议)

一、地址管理

1.如何解决上述地址不够用问题?

2.NAT 机制

2.1 NAPT

2.2 在 NAT 背景下如何通信?

3.IPv6

4.IP地址

4.1 ABCDE类

4.2 子网掩码

4.3 特殊的 IP 地址

二、路由选择

1.路由器

1.1 网关

1.2 路由

🌴数据链路层重点协议

1.以太网

1.1 认识以太网

1.2 以太网帧格式

2.MTU

2.1 认识MTU

2.2 MTU对IP协议的影响

2.3 MTU的值是几?


🌈🌈关于 TCP/IP协议的 应用层和传输层的重点知识,请看博客:【网络原理】TCP/IP协议

🔥网络层重点协议(IP 协议)

IP 协议做的两部分核心工作

1️⃣地址管理

每个网络上的设备,要能分配一个地址(唯一)

2️⃣路由选择

A 给 B 发消息,具体走哪条路线?

一、地址管理

协议头格式如下:

 🙈32位的整数,最多能表示多少个不同的地址呢?42亿9千万


显然上述地址是不够用的,那么应该怎么办?

在这里我们需要记住几个数:

一个字节:  0 ---->255                 -128 ----> +127

两个字节:  0 ----> 65535        -32768 ----> +32767

三个字节:  0 ----> 42亿9千万    -21亿 ----> +21亿

1.如何解决上述地址不够用问题?

1️⃣动态分配 IP 地址

✨设备上网才分配,不上网就不分配;此时就可以省下一大批 ip 地址。但是并没有增加 ip 的数量,只能一定程度的缓解,不能彻底解决问题

2️⃣NAT 机制

把IP地址分成“外网IP”’和“内网IP”,用一个外网IP代替N个内网IP

举个例子:
就好比你买了一个快递,地址写的XXX省XXX县XXX区XXX大学,不用写几号楼,几零几。但是一个大学里有好多人,那怎么确定是谁的包裹,所以我们就可以通过收件人和联系电话再来做进一步的区分。

2.NAT 机制

🌈把所有的 IP 地址分成两大类:

内网IP10.*         172.16.*-172.31.*        192.168.*

外网IP(公网):  剩下的ip

❗❗外网 IP 必须是唯一的;内网 IP 则可以重复出现(尤其是在不同的局域网中)

🔎内网设备如果要访问外网,会给他分配一个外网 IP ,但是这个外网 IP 不是这个设备独占的,而是这个内网中所有的设备都共用一个外网 IP

一个外网 IP 代表一系列的设备

❓❓IP 如何进行工作的

 假设现在有设备A和设备B要同时访问服务器的8080端口:

1):设备A =》路由器 =》 服务器

设备A发给路由器的IP数据报:
源IP 192.168.0.2 源端口:1000
目的IP:1.2.3.4 目的端口:8080

路由器正常是要把这个数据报原封不动的转发,但是此时触发了NAT机制,于是就产生了“移花接木”

路由器把IP数据报中的源IP进行了替换,替换成路由器的外网IP

路由器发给服务器的消息:
源IP:1.2.3.5 源端口:1000
目的IP:1.2.3.4 目的端口:8080

2):设备B =》 路由器 =》 服务器

设备B先给路由器发IP数据报:
源IP:192.168.0.3 源端口:1000
目的IP:1.2.3.4 目的端口:8080

此时路由器发给服务器是同样触发NAT机制,再次“进行替换”

路由器发给服务器的消息:
源IP:1.2.3.5 端口:1001(此时刚才的源IP:1.2.3.5 源端口:1000 已经被用过了,如果使用同样的,那么路由器无法区分出这个请求到底是哪个主机的)需要使用不同的端口
目的IP:1.2.3.4 目的端口:8080

 服务器看见两个请求,但是源端口不一样,所以服务器在返回数据时就可以根据源端口,来分别返回不同的数据。

具体图解:

NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
NAT路由器收到外部的数据时, 又会把目标IP从202.244.174.37替换回10.0.0.10;
在NAT路由器内部, 有一张自动生成的, 用于地址转换的表;
当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系

2.1 NAPT

        那么问题来了,如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机? 这时候 NAPT 来解决这个问题了。使用 IP+port 来建立这个关联关系。

主机 163.221.120.9 的端口号是 80,私网中有 2 个客户端 10.0.0.10 和 10.0.0.11 同时进行通信,并且这 2 个客户端的本地端口都是 1025。此时,仅仅转换 IP 地址为全局地址 202.244.174.37 ,会令转换后的数字完全一致。因此,为了区分这 2 个会话,只要将 10.0.0.11 的端口号转换为 1026 就可以解决问题。NAPT 路由器通过生成转换表,就可以正确地转换地址跟端口的组合,使客户端A、B能同时与服务器之间进行通信。这种关联关系也是由NAT路由器自动维护的。例如在TCP的情况下,建立连接时,就会生成这个表项; 在断开连接后,就会删除这个表项


2.2 在 NAT 背景下如何通信?

外网设备 -> 外网设备:不需要任何 NAT ,直接就能通信

内网设备 -> 其他内网设备:不允许

外网设备 -> 内网设备:不允许

内网设备 -> 外网设备:对应的内网设备的路由器,触发 NAT 机制进行 ip 替换,此时就会给这个网络数据报的源 ip 替换成路由器自己的 ip,此时一个外网 IP 就能代表一大批内网中的设备

当前,动态分配 + NAT 来解决 IP 不够用的问题的;但是并没有让 IP 地址变多,只是提高利用率的方式来解决问题;要想从根本上解决问题,需要提供更多的 IP 地址,则会有第三种解决方案:IPv6


3.IPv6

之前所学的 IP 协议叫做 IPv4使用4个字节,32位来表示 ip 地址

IPv6:是更新一些的 IP 协议,使用16个字节,128位来表示 ip 地址

2^128 = 2^32 * 2^32 * 2^32 * 2^32;这个数字巨大无比,相当于给地球上的每一粒沙子分配一个 ip 地址都是够用的

4.IP地址

概念IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。

作用 :IP地址是 IP 协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地 址,以此来屏蔽物理地址的差异。
格式IP地址是一个 32 位的二进制数,通常被分割为 4 “8 位二进制数 (也就是 4 个字节),如: 01100100.00000100.00000101.0000011

组成:IP地址分为两个部分,网络号主机号

网络号标识网段(表示一个局域网),保证相互连接的两个网段具有不同的标识;

主机号 标识主机(标识了一个局域网的主机) ,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;

 对于网络号主机号的划分,主要有两种分类方式:

4.1 ABCDE类

1️⃣IP 地址分类(ABCDE)简单了解

4.2 子网掩码

格式:子网掩码格式和IP地址一样,也是一个32位的二进制数。其中左边是网络位,用二进制数字“1”表示1 的数目等于网络位的长度右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。

计算方式:

IP 地址和子网掩码进行“按位与”操作(二进制相同位,与操作,两个都是1结果为1,否则为0),得 到的结果就是网络号

子网掩码二进制按位取反,再与 IP 地址位与计算,得到的就是主机号

4.3 特殊的 IP 地址

假定子网掩码是 255.255.255.0

1️⃣主机号为 0 的 ip       

例如:192.168.0.0 就是网络号,局域网里不应该存在某个主机,主机号是0 

2️⃣主机号全为1             

例如:192.168.0.255 广播地址——将IP地址中的主机地址全部设为1,就成为了广播地址。往这个地址上发送 udp 数据报,此时这个数据报就会被转发给整个局域网中的所有主机(TCP 不支持广播)

 3️⃣IP 为 172 开头的:127.*称为环回ip

127.0.0.1是最常用的

环回 ip 对应特殊的虚拟网卡 IO,通过环回 ip 传输的数据,走这个虚拟网卡(这个过程没有 IO 操作,纯内存操作),要比一般的这种普通 ip 的数据传输要快

4️⃣主机号为1

192.168.0.1  一般作为“网关ip”;网关即局域网的出入口

二、路由选择

描述的是:从 A 到 B 之间,具体线路怎么走(A 和 B 之间存在很多种不同的路线,具体走哪条路??路由选择要做的事情就是这个)

1.路由器

路由器主要有两个作用:

1.1 网关

路由器作为网关,可以划分公网和局域网,某些路由器还可以将局域网划分为多个子网(不同网段)

1.2 路由

所谓路由,即在复杂的网络结构中,找出一条通往终点的路线;网络通信(网络数据传输),路由器中的路由功能,就类似于规划路线,往哪个方向行进能更快到达目的地。

IP 数据报 在进行网络转发的过程中,就是一个“逐渐问路”的过程,每个路由器只能认识周围的情况,很可能问的目标并不知道(目的 ip 在路由表中,没有匹配结果),此时就会走路由器给指定的一条默认的路径(路由表中的“下一条表项”,就会把数据报指引更上一级的路由器,越上级的路由器就见多识广) 

🌴数据链路层重点协议

1.以太网

1.1 认识以太网

"以太网" 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了
一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等;
例如以太网中的网线必须使用双绞线;传输速率有10M,100M,1000M等;
以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等;

1.2 以太网帧格式

2.MTU

2.1 认识MTU

把上述数据链路层数据帧,最大荷载长度称为 MTU ;如果承载的数据长度超过MTU,就会在 IP 层进行分包,使每个分出来的结果都能在 MTU 之内

MTU相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层,产生的限制。

以太网帧中的数据长度规定最小46字节,最大1500字节 ,ARP数据包的长度不够46字节,要在后面补填充位;
最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);
不同的数据链路层标准的MTU是不同的;

2.2 MTUIP协议的影响

由于数据链路层MTU的限制,对于较大的IP数据包要进行分包

1.将较大的IP包分成多个小包,并给每个小包打上标签;

2.每个小包IP协议头的 16位标识(id) 都是相同的;
3.每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位来表示结束标记(当前是否是最后一个小包,是的话置为1,否则置为0);
4.到达对端时再将这些小包,会按顺序重组,拼装到一起返回给传输层;
5.一旦这些小包中任意一个小包丢失,接收端的重组就会失败。但是IP层不会负责重新传输数据;

虽然 IP 能拆包,仍然不能改变 UDP 最大长度是 64K 这样的现实(由于拆出的这些 IP 数据报中只有一份 UDP 首部,这个首部里就能够填写 UDP 长度的地方,页还是只有 2 个字节。则64K (即65535) 这个限制还是存在的)

2.3 MTU的值是几?

🙈如果面试中被问到,MTU的值是几?


🙉千万不要回答 1500!!!因为不同的数据链路层协议,MTU 不一样,只有以太网才是1500!!

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

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

相关文章

传统汽车保险丝盒与智能保险丝盒Efuse的应用

一、传统汽车保险丝盒 1、概述 电气盒是用于提供车辆电源分配和回路保护的电气枢纽。电气盒能简化线束的安装和整车的装配过程,改善系统的整体质量水平,降低成本和减少散乱。 一般传统电气盒分为PFB(预保险丝盒),UE…

公网使用SSH远程登录macOS服务器【内网穿透】

文章目录前言1. macOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接macOS3.1 macOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接macOS4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址5. 使用固定TCP端口地址ssh远程前言…

Nacos共享配置

本文介绍一下Nacos作为配置中心时,如何读取共享配置 我的环境 Windows10JDK8SpringCloud:Finchley.RELEASESpringBoot:2.0.4.RELEASEspring-cloud-alibaba-dependencies:0.2.2.RELEASENacos-server:1.0.1 本文的项目…

去互联网大厂卷还是去上升期创业型公司offer二选一?你怎么抉择?

上升期的创业型公司 vs 大厂 如何抉择? 最近总有一些粉丝特别“凡尔赛”的发几个 offer 问我选择哪个?其中比较典型的一个问题就是: “一个是处于上升期的创业型公司 ,一个行业大厂,薪资待遇差不多,到底该…

elastissearch——排序结果处理

排序 elasticsearch支持对搜索结果排序,默认是根据相关度算分(_score)来排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。 GET /hotel/_search { "query": { "match_all"…

DC插装式流量阀压力阀

Cartridge Valves 电磁阀 止回阀 运动控制阀 流量控制阀 溢流阀 压力控制阀 顺序阀 梭阀 方向阀 配件 Zero Profile Valves 止回阀 运动控制阀 流量控制阀 溢流阀 梭阀 In-Line Valves 止回阀和梭阀 方向阀 配件 微型系列 AB20S APIDC-30S C10B C10S C10S…

opengl 坐标系

概述 为了将坐标从一个坐标系统转换成另一个坐标,我们需要经历几个变换(1:模型 2:观察 3:投影)我们的顶点坐标起始于局部坐标,然后变成世界坐标,观察坐标,剪裁坐标 最后以…

BUUCTF-MD5强弱比较-MD5()的万能密码-tornado框架注入-中文电码

第六周 第三次 目录 学习到的知识 1.MD5强弱比较可以都可以使用数组绕过 2.基于MD5()的万能密码 ffifdyop WEB [BJDCTF2020]Easy MD5 ​编辑[护网杯 2018]easy_tornado Crypto 信息化时代的步伐 凯撒?替换?呵呵! Misc 神秘龙卷风 学习到的…

c/c++:数据类型,常量变量,标识符,有符号整型,无符号unsigned,字符类型,字符串类型,实数类型,浮点型,科学计数法

c/c:数据类型,常量变量,标识符,有符号整型,无符号unsigned,字符类型,字符串类型,实数类型,浮点型,科学计数法 2022找工作是学历、能力和运气的超强结合体&am…

C++ Primer 第7章 类 - 上(零基础学习C++,精简学习笔记)

🤖 作者简介:努力的clz ,一个努力编程的菜鸟 🐣🐤🐥 👀 文章专栏:C Primer 学习笔记 📔专栏简介: 本专栏是博主学习 C Primer 的学习笔记,因为…

【NX2023/1847】UG软件安装详细指南教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录安装包一、安装包内容检查二、安装步骤1.安装JAVA_WIN64.exe2.运行Launch.exe3.安装许可3.直接重启电脑(小白直接重启稳妥)4.重启后继续运行L…

网络威胁情报项目:为什么仍然很疯狂

大约五年前,向首席信息安全官( CISO)询问他们的网络威胁情报 (CTI) 计划时,得到了两种截然不同的回答。 资源丰富的大型企业正在投资他们的威胁情报计划,目的是为了战术、运营和战略目的更好地实施它。 规模较小、资…

Day942.独立编译调试 -系统重构实战

独立编译调试 Hi,我是阿昌,今天学习记录的是关于独立编译调试的内容。 当组件做 独立的版本演进时,如果开发在本地每次修改代码时,都需要进行集成打包验证,反而会影响日常的开发效率。所以如果能够让组件独立进行编译…

Object方法

私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版,配图更多,CSDN博文图片需要手动上传,因此文章配图较少,看不懂的可以去菜鸡博客参考一下配图! 系列文章目录 前端系列文章——传送门 JavaScript系列文章—…

Node.js -- 模块化

1.模块化的基本概念 模块化是指解决一个复杂问题时,自顶向下逐层吧系统划分成若干模块的过程。对于整个系统来说,模块是可组合,分解和更换的单元。 将代码进行模块化拆分的好处: 提高代码的复用性提高代码的可维护性可以实现按…

元宇宙:新的数字模式——元宇宙会场

一、引言 元宇宙是一个充满无限可能的虚拟空间,人们可以在其中创建和参与各种虚拟场景和体验。元宇宙技术的兴起,为传统的会场提供了一个新的方向。元宇宙会场将线下会场的物理空间转化为虚拟空间,通过数字技术和互联网实现了人们在虚拟环境…

我的第一台电脑的故事

第一台电脑啊,多么遥远的故事了,又似乎就在眼前。今天重回往事,就简单记录一下吧。 🌱缘起 那是初一,至今已13年,遂觉遥远,而又是立志我学习的起点,至今还在校园,又觉就…

断开连接图的 BFS

在上一篇文章中,仅对特定顶点执行 BFS,即假设所有顶点都可以从起始顶点到达。但是在断开连接的图或所有顶点都无法访问的任何顶点的情况下,之前的实现将不会给出所需的输出,因此在这篇文章中,在 BFS 中进行了修改。 所有顶点都是可达的。因此,对于上图,简单的BFS就可以…

【消息队列】细说Kafka消费者位移机制

什么是位移 位移说白了就是消费者消费对应的Topic的分区的消费位置,之前存储到ZK中,后来转移到Kafka默认的Topic中。结构是采用keyvalue形势存储的,key是groupIdtopic分区号,value是offset的值。 而上述的存储就在_consumer_offse…

微信小程序02

小程序tabBar 普通页面跳转到 带有tabBar页面的时候不能使用 wx.navigateTo() 小程序中跳转到选项卡页面使用 wx.switchTab()跳转 到底部 onReachBottom() 函数 ,, 在下拉刷新显示取消loading : wx.showNavigationBarLoading() wx.hideNavi…