平台网站建设外包,网站制作专业的公司有哪些,wordpress标签选项卡,廊坊网站建设咨询青橙网络引言#xff1a;
北京时间#xff1a;2023/8/9/13:04#xff0c;昨天在摆烂中把网络基础相关知识的博客更新#xff0c;依然还是上不了C站热榜#xff0c;我估计是因为我账号热度不够没有上榜资格#xff0c;也可能是因为前段时间没有积极更新#xff0c;导致周榜被甩出…引言
北京时间2023/8/9/13:04昨天在摆烂中把网络基础相关知识的博客更新依然还是上不了C站热榜我估计是因为我账号热度不够没有上榜资格也可能是因为前段时间没有积极更新导致周榜被甩出100名开外反正应该是因为更新文章不够积极导致现在怎样都上不了热榜不然像以前只要文章一发热榜前20唾手可得哈哈哈所以为了恢复我们在C站的热榜地位这个星期我们一定要积极更新。耳根的小说《我欲封天》听了一些玄幻总是那么令人无法自拔文中作者频繁使用文言文和省略号来设置悬念以及伏笔作者对文言文的使用非常优秀当玄幻和文言文配合使用你就会发现这个玄幻小说非常牛因为你不怎么看得懂哈哈哈通过对该小说的简易理解我明白了耳根常年霸榜网文五大至尊之一的原因总体感觉耳根的玄幻小说文笔比辰东要强从前年开始更新的《深空彼岸》可以看出当然因为风评不好所以没看毕竟书友的眼睛是雪亮的本来当时刚出的时候想追的可是更新太慢就没追一眨眼都更完了本来辰东出名必属精品可惜好了不谈那么多了今天让我们继续来学习一下有关网络基础相关的知识吧 TCP/IP网络协议栈的五层结构
上篇博客由于时间原因所以有关TCP/IP网络协议栈的五层结构我们并没有了解完只是大致了解了一下有关协议栈中物理层相关的知识当然由于我们对于物理层并不怎么关系所以简单了解就行该篇博客中不再强调与回顾所以接下来我们就再来看看有关网络协议栈或只能够其它的四层结构吧
回顾网络体系结构
在学习TCP/IP网络协议栈其它四层结构之前我们先来回顾一下有关网络与体系结构的知识。在上篇博客中我们谈了数据是如何从局域网传输到其它子网中也谈到了我们在进行数据网络传输时需要满足网络协议然后也谈了为什么网络协议需要被设计成层状结构并且了解了OSI网络协议栈模型和TCP/IP网络协议栈模型最后重点谈到TCP/IP网络协议栈模型与体系结构之间的关系搞懂了网络协议栈中每一层功能在体系结构中由谁实现然后发现原来网络协议栈和体系结构密不可分只不过由于不同操作系统之间设计方案不同对应体系结构与网络协议栈之间存在一定的区别但我们明白无论操作系统如何设计只要需要进行网络数据传输就要符合网络协议栈原则如Linux系统中对网络的管理依然需要满足网络协议栈对物理层的管理和我们以前学习对文件系统的管理一样本质是因为“一切皆文件这个抽象”我们只有把网卡驱动程序封装成一个设备文件此时才可以通过函数指针的形式去调用与网卡驱动程序对应网卡的读写功能所以此时明白由于对网络协议栈中物理层的管理需要通过文件系统进行那么网络协议栈整体也就离不开文件系统想要实现对网络管理即对网络协议栈管理以后肯定就会用到管理文件系统那一套如文件描述符表的管理等…并且对于网络协议中其它功能的实现在操作系统内核代码中同理进行了管理且提供了相应的系统调用接口供给上层使用。
TCP/IP其它四层结构理解
上述我们明白了网络协议栈在体系结构中是怎样的一个存在并且在上篇博客中我们了解了目前主流的网络协议栈是相对于OSI七层模型改变之后的TCP/IP五层网络协议如下图所示 数据链路层 首先明白数据链路层存在于网卡驱动程序中所以同理数据链路层就是用来提供物理网络设备网卡对应的接口然后根据网卡接口和其自身的协议来管理数据的传输负责将操作系统中的数据封装成特定的数据帧然后传输给网卡接收反之同理具体数据传输和接收过程有待深入学习。并且明白在数据链路层中不仅只可以有一种协议也可以是其它协议如以太网、令牌环网、无线LAN其中以以太网使用最为广泛也就是说在数据链路层上协议可能是不同的可能是以太网协议也可能是无线LAM协议那么此时就会存在一个问题不是说网络协议需要保持一致吗原因是因为我们以前说的网络协议保持一致代表的是TCP/IP协议需要保持一致此时并不要求数据链路层的协议也保持一致TCP可以通过一些接口或者配置选项来调整和配置数据链路层的协议意思也就是在TCP/IP协议中可以兼容任何一种数据链路层协议所以只要保持TCP/IP协议的一致性就是在保持整个网络协议栈的一致性同理此时还有一个问题就是为什么数据链路层的协议需要涉及多种呢也直接像TCP/IP一样强制成只有一种协议不行吗想要明白这个问题此时需要明白交换机本质是工作在数据链路层当中的因为当交换机从网卡中获取到数据帧之后它需要根据数据帧中的目标MAC地址找到接收数据的那个网卡所以导致交换机是工作在数据链路层因为上述我们说了数据链路层就是网卡驱动程序只有通过网卡驱动程序我们才能获取到网卡的MAC地址意思也就是只有在数据链路层上的协议才支持获取MAC地址所以想让交换机获取到数据帧中的目标MAC地址此时就需要依赖于数据链路层上的协议所以交换机工作在数据链路层此时明白这点之后我们还能明白因为交换机工作在数据链路层而交换机除了直接连接路由器将数据发送到别的子网中之外它还可以直接在本局域网内进行数据传输所以此时明白数据链路层中的协议就是局域网内的通信标准可用于小范围内的数据传输协议。明白了这点之后我们就能解决为什么不能将数据链路层中的协议给规定死了这是因为不同的物理介质和网络技术需要不同的数据链路层协议来进行数据的传输怎么理解呢其实很好理解也就是我们上篇博客所说有关物理层通信的知识本质也就是网线和无线电之间的原因一个通过电信号实现数据传输一个通过无线电波实现数据传输而我们的数据链路层又是交换机的工作场所同样需要利用数据链路层中的协议那么此时如果将数据链路层的协议定死就会导致通过网线传输的数据和通过无线电波传输的数据只能有一样可以被协议识别导致世界只能用网线或者WIFI其中之一所以需要让数据链路层的协议允许不同从而实现数据链路层的协议与外设匹配使用如你使用的是网线那么你的数据链路层协议就是以太网如果你使用的是无线电那么你的数据链路层协议就是WIFI。明白了这点之后此时有的同学又有疑问他说我的电脑好像即可以支持网线也可以支持WIFI耶好神奇你的结论是错的那我只想笑一笑之所以现在的电脑可以支持这两种方式原因是因为在电脑中并不只有一种网卡一般有两种网卡普通网卡和无线网卡。此时通过两个网卡的知识此时我们还能明白数据链路层的协议和网卡是分不开的也就是数据链路层的协议一般就是由网卡和相关的网络设备决定的交换机因为交换机也分为接收无线电波和电信号的嘛对吧最后注意明白上述知识这个注意点只是逻辑上的推理而已也就是如果在同一个局域网环境下你使用的数据链路层协议与另一台该局域网下主机的数据链路层协议不同那么你就无法对其发送数据那此时有的同学就有疑问了那我记得好像可以耶我还成功过举一个场景好比你带着自己的笔记本电脑去学校机房上课你之所以可以将自己电脑中的数据传递到机房的电脑前提看到同一份资源具体由应用层实现那是因为此时并不是局域网了你们并没有使用同一个交换机所以此时就算你数据链路层协议不同也没有关系因为本质你们的TCP/IP协议是一致而TCP/IP协议会对数据链路层协议进行兼容从而让我们实现数据传输。明白了这点之后此时还能明白你只要有一根自己的网线学校机房的局域网应该是不会阻拦你的笔记本电脑没试过当然这也就是为什么让有的黑客如果连接了你的局域网你就会完蛋的原因所以对于局域网的保护非常重要防火墙的概念由然而生边界防火墙当然对于某些更厉害的黑客使用无线电也可能直接入侵你的局域网当然这就涉及网络安全相关的知识了我们也只是随便了解一下谁让每个小伙伴从小都有一个黑客梦所以最后明白无论是交换机的生产厂商还是网卡的生产厂商它们都可以有各种不同的协议但是在有各种协议的同时它们一定需要遵守TCP/IP协议否则就会倒闭。
网络层 上述搞定了有关数据链路层相关的知识对于网络层我们知道由于其工作于操作系统内核代码在网络协议栈中其遵守的是IP协议主要功能是将数据进行分组数据包和封装然后根据地址管理和路由选择定位到目标主机。当然具体为什么网络层具有地址管理和路由选择的功能那是因为路由器工作于网络层。注意这里有一个误区当然在上述讲有关交换机工作在数据链路层时我们有谈到但是没重点区分这里我们需要明白就是数据一定是按照网络协议栈一层一层向下传递或者向上传递的也就是交换机或者路由器想要获取到数据一定是通过网卡获得的而不是当数据还在网络层的时候路由器就拿到数据了或者在数据链路层的时候交换机就拿到数据了这都是不对的在开始进行数据传输时经过网络层或者数据链路层本质起不到定位IP地址、定位MAC地址的能力因为交换机和路由器都还没有从网卡中拿到数据所以同理为什么说路由器工作在网络层而网络层具有管理地址和路由选择的能力那是因为当初在将目标地址写入数据的时候是在网络层进行的遵守的是网络层的协议所以万事有因就有果也就是当后面路由器拿到数据之后它想要获取IP地址就必须根据网络层的协议IP协议来获取数据格式不同所以说路由器工作在网络层并不是它直接从网络层拿数据的意思本质其实是它需要遵守网络层协议。明白了这点之后我们来谈谈路由器的地址管理和路由选择功能当然网络层具体如何进行数据分组和封装由操作系统内核代码决定这里我们先不详谈。我们要明白电脑内部并没有自带IP地址IP地址是在我们联网时操作系统通过对应的代码向路由器申请的当然你可以自己配置IP地址当然同理为什么你可以向路由器申请IP地址那前提是你获取到了路由器的接口也就是联网了以太网/WIFI此时路由器不仅会分配一个IP地址给你的主机会记录而且路由器内部会提供一个它自己的IP地址给你使用注意这个位置两个IP地址是不同的一个是路由器通过网络中的DHCP协议向网络中申请的IP地址主机IP地址一个是路由器自带的生产厂商已经设置好的IP地址因为只有当你获取到了这个IP地址在你以后将数据传给交换机之后交换机同理才能根据数据链路层中的协议获取到需要发送路由器的IP地址当然本质你是如何获取到交换机的IP地址呢同理因为你的电脑连接了路由器并且路由器提供了你一个与它交互的IP地址接口当然因为路由器中天生就不止一个IP地址而是多个IP地址任何网络设备想要与该路由器交互前提是你拿到了人家其中一个IP地址所以路由器天生就会分配一个自己的IP地址给交换机使用所以路由器天生就知道交换机的IP地址是那个所以最后路由器再把交换机的IP地址提供给电脑使用此时电脑不就找到了交换机吗然后交换机不就可以拿到路由器提供给电脑使用的IP地址吗最后不就实现了数据从网卡到交换机再到路由器当然最后交换机是否需要访问路由器此时就需要对数据中的目标MAC地址进行判断当然此时具体该局域网下有那么MAC地址就需要设定了不能直接获取到最后如果发现交换机MAC地址表中没有目标MAC地址此时交换机同理根据数据链路层协议识别数据中的路由器IP地址找到对应路由器。当然本质目标IP地址是通过应用层写入到数据之中的也就是你自己的电脑想要访问那个IP地址事先你是需要知道的所以这也就是为什么存在链接的概念因为本质链接就是一个IP地址可以手动输入也可以保存在文件中当然如果你想和我谈谈微信那么刚好本质微信中的用户肯定是不存在IP地址的只能把微信这个软件看成是一个IP地址也就是在安装微信的时候你默认就配置好了微信这个软件的IP地址当然此时服务器的概念就出来了服务器本质就是一个大一点的IP地址你发送的数据首先就是通过路由器访问到微信服务器的IP地址然后让人家微信服务器通过对用户的管理水很深找到你要发送的目标用户然后将你的数据发给人家这也就是上层的封装啦这种封装就比那种直接用链接访问IP地址高级多了。明白了上述知识之后此时搞定路由器等于晒晒水啦明白路由器肯定不止一个IP地址也就是不止只有提供给外界访问的IP地址它更存在内部IP地址管理也就是需要对连接该路由器的网络设备分配IP地址供其使用所以因为路由器中IP地址有限所以连接该路由器的网络设备就有限但可以通过子网划分来解决具体有待深入当然这也就是为什么当一个路由器被多个网络设备连接之后就会变卡交换机有限、带宽有限、数据处理能力有限。当然如果路由器需要找到目标IP地址此时就需要依赖于路由器中的路由表路由表就具有管理其它路由器IP地址的能力并且路由表一般都会采用自动路由协议对路由表进行更新反正最后就是将数据传递给一个一个路由器最后传递到目标IP地址中当然这里有一个网关的概念也就是如果路由表中没有我可以使用的路由器IP地址此时数据就会被传到网关上去具体有待深入。
传输层 同理传输层代码也是在操作系统内核实现其遵守的协议是TCP协议主要功能就是将数据分割成适合网络传输的大小确保数据传输的可靠性和完整性。这个点重点强调数据传输的可靠性当然具体如何让数据传输变得更加可靠有待深入学习这里不过多了解。
应用层 这层在TCP/IP协议中包含了OSI模型中会话层、表示层和应用层的功能具体就是用来对获取到的数据进行使用如何使用也有待深入学习。
网络传输基本流程
搞定了上述知识此时我们学习网络传输的流程成本就没有那么高啦本质还是那个道理想要进行网络数据传输就需要遵守网络协议栈的规则如此时最简单的一个场景两个主机在同一局域网下进行数据传输此时主机一想要将数据传输给同局域网下的主机二那么此时具体是一个怎样的过程呢
首先两个主机肯定都遵守网络协议栈并且因为网络协议栈中每一层都有不同的协议所以此时明白不同的协议就会有不同的数据传输格式所以在进行数据传输时最后想要让该数据对应的信息被识别在封装数据时就需要根据协议对特定的识别信息进行封装并且对应被封装的识别信息我们就称为协议报头真正被传输的数据我们就称为有效载荷/有效数据。根据这一原理因为每一层的协议都不相同所以每一层都需要向有效载荷中封装自己的报头也就导致当数据从网卡传输到交换机时该数据就包含了应用层、传输层、网络层、数据链路层以及物理层所有协议的特定识别信息从而让数据被交换机根据MAC地址找到另一台电脑的网卡时该网卡可以根据该数据中有关物理层协议的识别信息和自己本身就存在的物理层协议信息交互从而识别最后同理一层一层的将数据向上传输并且因为每层所能识别的协议不同所以在向上传输的过程中需要完成解包过程将对应该层的协议从封装数据中去除然后根据被去除该层协议后的下一层协议找到对应的上层最终让另一台电脑的应用层接收到该数据对该数据进行处理和使用。具体如下图所示 理解封装和分用 所以此时我们根据上述描述和上图所示我们就可以很好的理解什么是数据的封装和什么是数据的解包及分用了封装也就是如上述所述在应用层自顶向下传输数据时需要对每一层协议的报头封装到传输数据中因为只有这样另一台电脑在接收数据时才能根据对应的报头和该层所对应的协议识别到对应的信息从而完成数据的传输同理在对报头进行识别的过程中因为每一层协议的不同此时识别完报头之后就需要完成解包过程也就是将该层协议对应的报头去除最后再根据协议自底向上完成数据传输并且此时根据协议向上传输数据的过程我们就称为分用。
局域网通信原理
在上述学习有关数据链路层的知识时我们对局域网通信原理已经有了一定的理解只不过此时我们需要再来深入学习一下在上述数据链路层中我们说道在同一局域网中我们发送数据给交换机时交换机会直接根据MAC地址表找到目标地址然后将数据发送给另一台电脑。但是明白这是一般情况此时在局域网中还存在其它两种特殊状态一种是如果我将我的数据设置为广播状态那么此时该局域网内的所有电脑都能接收到该数据只不过因为对应的网卡只会接收发送给自己的数据包而丢弃其它目标MAC地址的数据包所以不会接收到我们的数据然后在局域网中还存在另一种情况它可以实现抓包功能也就是如果将网卡设置为“混杂模式”状态那么该网卡就不会对其它目标MAC地址的数据包进行丢弃而是直接根据协议栈进行解包和分用功能将数据显示到应用层当中获取到该局域网中所有的数据。并且明白在局域网通信中还可能存在数据包碰撞也就是当同一时间内多个设备同时发送数据包给交换机此时就有可能导致数据碰撞发生这也就是为什么当同一个网络被多人使用时会变卡的主要原因。
总结有关TCP/IP协议栈、数据传输流程以及局域网通信的知识我们就学到这里下篇博客我们重来来看看有关广域网方面的知识