盘锦建设小学网站asp.net网站开发实例
web/
2025/10/9 5:20:43/
文章来源:
盘锦建设小学网站,asp.net网站开发实例,微信公众号的h5网站开发,特色网站建设#x1f34e;作者#xff1a;阿润菜菜 #x1f4d6;专栏#xff1a;Linux系统网络编程 文章目录 一、协议初识和网络协议分层#xff08;TCP/IP四层模型#xff09;认识协议TCP/IP五层#xff08;或四层#xff09;模型 二、认识MAC地址和IP地址认识MAC地址认识IP地址认… 作者阿润菜菜 专栏Linux系统网络编程 文章目录 一、协议初识和网络协议分层TCP/IP四层模型认识协议TCP/IP五层或四层模型 二、认识MAC地址和IP地址认识MAC地址认识IP地址认识以太网和互联网 三、数据包封装和解包分用数据段数据报数据帧四、局域网和广域网的通信局域网通信跨网络通信 一、协议初识和网络协议分层TCP/IP四层模型
我们知道一台计算机里面有很多的硬件正是这些硬件之间互相配合协同工作才能让我们的计算机健康的运行当然这里面也离不开软件对硬件的管理。 假设我们脑洞大一点把计算机里面的各个硬件拉出来各自放到很远很远的地方而计算机依旧能正常运行靠的就是协议而协议本质就是一种约定硬件和硬件之间也有协议比如磁盘的HBA协议磁盘和内存IO时也有协议所以协议不仅仅是网络专属的计算机体系结构里面也有协议那计算机内部不就相当于一个小型的网络吗各个设备通过网线连接设备之间有协议约定所以各个设备能够正常通信以便于计算机为用户提供良好的服务所以网络和计算机是不分家的体系结构中有网络网络中有体系结构
认识协议
实际在网络中所有的网络问题本质都是传输距离变长了如果传输距离很短那还需要担心发送数据会丢失吗或者对方接收不到数据又或者对方没有接收到完整的数据这些问题自然就不用考虑了因为传输距离很短中间的障碍很少出错的概率很低。而当传输距离过长的时候就容易导致出现问题比如传输信号减弱从而导致数据丢失所以一旦长距离传输的时候就会引入新的通信问题而为了尽可能的减少通信的成本就需要定制协议 我们提前做好约定达成双方的共识让通信的两台主机之间约定好协议而协议就会降低通信的成本。
所以说 “协议”本质就是一种约定通信双方只要曾经做过某种约定之后就可以使用这种约定来完成某种事情。而网络协议是通信计算机双方必须共同遵从的一组约定因此我们一定要将这种约定用计算机语言表达出来此时双方计算机才能识别约定的相关内容 。
那协议该由谁来定制呢 计算机生产厂商那么多操作系统厂商也有那么多磁盘厂商也有很多其他硬件设备的厂商也有很多那如果每个厂商都有自己的协议生产出来的各式各样的计算机还如何通信呢只能一个厂商里面的计算机才能通信这显然是不行的所以此时就需要一个人站出来定制统一的网络协议标准这个网络协议就是TCP/IP协议1983年TCP/IP协议正式替代NCP成为大部分因特网共同遵守的网络协议标准。
正所谓“一流的企业做标准二流的企业做品牌三流的企业做产品”。但是标准的定制有一部分是公益性、开源性的它制定标准的目的是为了让我们的世界变得更好而标准的定制还有一部分是具有一定盈利性质的当你需要使用这项技术时就会收取部分专利费此时就能将曾经做的技术投入进行变现。
所以在1977年国际标准化组织提出了OSI七层网络模型那为什么要进行分层呢 因为在网络数据传输的过程中需要面临很多方面的问题比如物理层驱动层软件层用户层等等都有各自需要解决的网络传输问题而分层其实就是进行解耦每一层都是功能比较集中高内聚的模块用于处理该层面临的网络传输问题层与层之间是低耦合的。 并且每一层都有自己匹配的协议每一层协议都用于处理当前层的传输问题。 虽然是七层模型但实际使用时将上三层压为一层统称为应用层所以我们平常所说的都是TCP/IP四层或五层模型物理层我们不考虑。
TCP/IP五层或四层模型
TCP/IP是一组协议的代名词它还包括许多协议共同组成了TCP/IP协议簇。TCP/IP通讯协议采用了五层的层级结构每一层都呼叫它的下一层所提供的网络来完成自己的需求。
物理层负责光/电信号的传递方式。比如现在以太网通用的网线双绞线、早期以太网采用的同轴电缆现在主要用于有线电视、光纤现在的WiFi无线网使用的电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器Hub就是工作在物理层的。数据链路层 负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步、冲突检测如果检测到冲突就自动重发、数据差错校验等工作。数据链路层底层的网络通信标准有很多如以太网、令牌环网、无线LAN等。交换机Switch就是工作在数据链路层的。**网络层**负责地址管理和路由选择。例如在IP协议中通过IP地址来标识一台主机并通过路由表的方式规划出两台主机之间数据传输的线路路由。路由器Router就是工作在网络层的。传输层 负责两台主机之间的数据传输。例如传输控制协议TCP能够确保数据可靠的从源主机发送到目标主机。应用层 负责应用程序间沟通。比如简单电子邮件传输SMTP、文件传输协议FTP、网络远程访问协议Telnet等。我们的网络编程主要就是针对应用层的。 可以看到它们的下面几层几乎是没有区别的操作系统对应的是传输层和网络层数据链路层和物理层都是对应在驱动层的而TCP/IP协议当中的应用层就对应到OSI七层协议当中的应用层、表示层和会话层。
一般而言
对于一台主机它的操作系统内核实现了从传输层到物理层的内容。对于一台路由器它实现了从网络层到物理层的内容。对于一台交换机它实现了从数据链路层到物理层的内容。对于集线器它只实现了物理层的内容。
其实现在的网络各层设备早已突破了先前TCP/IP五层模型的限制。
二、认识MAC地址和IP地址
先来看看什么是报头 一般数据在实际发送的时候都会多发一部分数据这部分数据称为协议报头由于模型的每层都有自己的协议而数据在向下传递时必须携带上该层的协议报头以便于数据流向到最底层的物理层之后将数据传输给对方主机对方主机将数据向上交付时对方主机的每层都能看懂我的协议所以数据在发送的时候一定是需要报头的而具体的数据内容我们喜欢叫做报文。就相当于报纸报头是该报刊社的协议规定例如剧中排版新华社报刊什么的类似协议这些东西一般都会放在报纸的第一行而且是字体放大的那种很醒目也就是报头。 同时协议报头阐述了该层协议的内容。
认识MAC地址
在局域网中的两台主机是可以直接通信的因为每一台主机都有自己的名字每一台主机都有自己的网卡而网卡都有自己的地址这个地址就是MAC地址。MAC地址是48位的二进制数据也就是6字节大小的数可以用16进制来解释该MAC地址。例如我的网卡物理地址就是16进制表示的。
MAC地址用来识别数据链路层中相连的节点。长度为48位及6个字节一般用16进制数字加上冒号的形式来表示例如08:00:27:03:fb:19。在网卡出厂时就确定了不能修改。MAC地址通常是唯一的虚拟机中的MAC地址不是真实的MAC地址可能会冲突也有些网卡支持用户配置MAC地址。
所以说MAC地址是数据链路层的地址用于在同一网络中的主机之间进行通信。如果目标主机和发送主机在同一个网络中那么数据包就可以直接发送到目标主机的MAC地址所以MAC地址是在本地网络中分配的。不同的网络可能使用相同的MAC地址。
认识IP地址
IP地址是网络层的地址用于在不同的网络之间进行路由和寻址以便于不同网络之间的数据传输。 如果目标主机和发送主机不在同一个网络中那么发送主机需要先将数据包发送到一个特定的路由器路由器会通过路由表以及发送主机的ip地址确定出数据包的下一跳位置在哪里路由表中记录了不同网络和主机的ip地址以及如何到达这些ip地址的信息。 那么ip地址在哪里呢ip地址实际就在数据报的报头中报头中的第三层网络层协议中包含了该数据报的ip地址位置而路由器的核心工作位置也是在网络层所以路由器可以看懂网络层的IP协议确定发送主机的数据报下一跳应该发送到哪个网络当中。
传输层以上的协议都使用IP地址来标识主机的位置IP地址是因特网上分配给主机的标识符他是全球唯一的可以在全球范围内进行路由寻址。而MAC地址是在本地网络中分配的并且不同的网络可能使用相同的MAC地址因此在跨网络的通信场景下无法使用MAC地址另外由于MAC地址是48比特位的比32位比特位的IP地址长2个字节这是不利于在通信协议中进行使用的所以传输层向上的协议通常都使用IP地址来标识主机的位置因为IP地址是跨网络的而MAC地址仅仅是本地网络分配的。常见使用IP地址标识主机位置的协议有HTTP、FTP、SMTP、SSH等在这些协议中app之间通过IP地址来建立连接和交换数据路由器使用IP地址进行数据报的转发和路由以此来实现跨网络的通信。
上面说了这么多跨网路不同的网络等等概念那什么是不同的网络呢该怎么分辨呢 IP地址由网络地址和主机地址两部分构成如果两个主机的ip地址中的网络地址相同那么这两个主机就是在同一网络中否则就不在同一网络中。子网掩码是一个与IP地址配对的掩码用于将IP地址分为上述两部分如果两个主机的IP地址和子网掩码进行按位与之后的结果相同则两个主机就是在同一网络中。需要注意的是不同的网络有不同的子网掩码和IP地址配对使用。
认识以太网和互联网
1.以太网是什么 以太是古希腊神话中的宇宙空间,它常被认为是一切事物存在的基础。 以太网是使用电磁信号在以太中传播的数据链路层协议它使用MAC地址来标识本地网络上的各个设备每一块以太网卡在出厂时都会被assigned一个唯一的MAC地址作为该以太网卡的永久标识。 以太网的数据传输依靠空气和电缆作为传输介质这两种介质统称为以太。以太网线缆包括黑频线缆和同轴电缆这两种电缆。这些线缆可以将计算机和其他网络设备连接起来如交换机和路由器以此实现局域网内的互联。例如使用UTP(未纠错双绞线)将计算机与交换机连接然后交换机再相互连接形成局域网。 在局域网中如果是需要高自由移动性和easier部署的环境中还可以选择使用WIFI技术无线信号通过空气(以太)作为传输媒介将数据映射到高频电磁波上传播。例如WiFi IEEE 802.11a等标准以及BlueToothZigBee紫峰(与蓝牙类似) 有线以太通过电缆实现稳定高速的连接无线以太可提供高自由和便捷性。
以太网是互联网的物理基础互联网是由许多的局域网和广域网互连而成的局域网中最常见的连接技术就是以太网。以太网定义了物理层和数据链路层的标准通过以太电缆或以太无线信号为互联网提供高效的本地数据传输也就是局域网内的数据传输。互联网在以太网建立好的局域网基础之上通过路由器等设备实现不同局域网之间的互联。而TCP/IP提供了网络层和传输层以太网和TCP/IP协同工作实现了互联网。互联网使用IP地址标识网络设备以太网使用MAC地址标识设备两者通过ARP(Address Resolution Protocol)协议进行对应实现互联网(因特网)的通信。
认识本地环回地址 127.0.0.1是一个类IP的特殊地址叫做本地环回地址。他是IPV4地址段保留的特殊IP地址只能用于当前计算机本身其他计算机无法访问此地址。所以127.0.0.1就是计算机自己对于访问该地址的请求数据包会从发送主机走一圈协议栈然后又返回到主机自己本身。一般用于本地测试网络代码或本地访问apache Web服务器软件。
三、数据包封装和解包分用数据段数据报数据帧
在传输层一般将数据包叫做数据段网络层叫数据报数据链路层叫数据帧应用层叫请求与响应。数据在向下经过协议栈封装成帧之后会通过传输介质网线(很多种类)发送到目标主机目标主机会剥离层层协议的报头根据报头的信息再将有效载荷发送到上层指定的协议进行处理。 下图是封装和解包分用的示意图尤其是解包分用的示意图很形象的体现出协议报头的作用即数据包向上该如何交付交付给哪个协议。 实际上每个协议都要提供一种方法让我们获取到报头的大小这样我们才能在解包时将报头与有效载荷进行分离。
四、局域网和广域网的通信 局域网通信
首先需要明确的是同一个局域网内的主机是能够直接进行通信的因为最初局域网设计的目的就是为了让局域网内的主机能够进行通信。
当用户要将文件传输给另一台主机前该文件数据需要先通过网络协议栈进行封装
文件数据先交给应用层应用层添加上对应应用层协议的报头信息后将数据再交给传输层。传输层收到数据后再添加上对应传输层协议的报头信息并将数据继续向下进行交付。网络层收到数据后再添加上对应网络层协议的报头信息接着将数据再交给链路层。链路层收到数据后最后再添加上对应链路层协议的报头信息至此数据封装完毕。
数据封装完毕后就可以通过局域网将其发送给对端主机了而当对端主机收到数据后对应也需要通过网络协议栈对该数据进行解包与分用
链路层收到数据后先将数据中对应链路层协议的报头信息提取出来然后将剩下的数据交给网络层。网络层收到该数据后再将数据中对应网络层协议的报头信息提取出来然后将剩下的数据继续向上进行交付。传输层收到该数据后再将数据中对应传输层协议的报头信息提取出来然后将剩下的数据再交付给应用层。应用层收到数据后最后将数据中对应应用层协议的报头信息提取出来至此便完成了数据的解包与分用。
也就是说任何一台主机在发送数据之前该数据都要先自顶向下贯穿协议栈来完成数据的封装在这个过程中每一层协议都会添加上对应的报头信息而任何一台主机收到数据后都要先自底向上贯穿协议栈来完成数据的解包和分用在这个过程中每一层协议都会将对应的报头信息提取出来。
深入了解 下面是简易的一个局域网内部的主机通信图例如MAC1主机问MAC7吃了没只有MAC7才会收到对应的消息并作出响应而其他的主机虽然收得到消息但他们并不会做出响应这是为什么呢是因为MAC1发出的数据包中的以太网协议报头信息中包含了目标主机的MAC地址其他收到该数据报的主机都会甄别自己的MAC地址是否与协议报头的地址相同如果相同则会进行数据包的解包分用如果不相同则什么都不会做。
局域网内传输数据时该局域网内的所有主机都能收到 实际当主机1想要发数据给主机7的时候该局域网内的其他主机也都收到了该数据只不过除了主机7B以外其他主机识别到该数据并不是发给自己的此时其他主机就把收到的数据丢弃了。
也就是说在局域网以太网通信时该局域网内所有的主机在底层其实都收到了任何数据只不过经过筛选后只提交上来了发给自己的数据。 什么是数据碰撞 当主机1在向主机7发送数据时其他主机彼此之间可能也正在进行通信甚至主机1在和主机7通信的同时也在和其他主机进行通信。 但同一局域网中的所有主机在通信时使用的都是一个共同的通信信道因此如果局域网内的多台主机同时进行通信此时这些数据之间就可能会相互干扰。 每一个局域网都可以看作是一个碰撞域如果某个主机发送出去的数据与其他主机发送的数据之间产生了干扰我们就称这两台主机在该碰撞域中发生了碰撞。 如何判断发送出去的数据是否发生了碰撞如何避免 因为发送到局域网当中的数据是所有主机都能够收到的因此当一个主机将数据发送出去后该主机本身也是能够收到这个数据的。当该主机收到该数据后就可以将其与之前发送出去的数据进行对比如果发现收到的数据与之前发送出去的数据不相同则说明在发送过程中发生了碰撞。 也就是说主机实际是能够通过某种方式知道曾经发送出去的数据是否发生了碰撞的。
当一个主机发现自己发送出去的数据产生了碰撞此时该主机就要执行“碰撞避免”算法。“碰撞避免”算法实际很简单具体实现其实蛮复杂的我们就不深入学习了当一个主机发送出去的数据产生了碰撞那么该主机可以选择等一段时间后再重新发送该数据。这就像现实生活中的两个人同时想要说话此时对方就都会说“你先说吧”这实际上就是一种碰撞避免。 需要注意的是实际在网络通信压力不大的时候发生碰撞的概率是不大的我们不要太小瞧计算机的处理速度也不要太小瞧网线传播数据的速度。
那每个主机如何判断该数据是否是发送给自己的
在局域网中发送的数据实际叫做MAC数据帧在这个MAC数据帧的报头当中会包含两个字段分别叫做源MAC地址和目的MAC地址。
每一台计算机都至少配有一张网卡而每一张网卡在出厂时就已经内置了一个48位的序列号我们将这个序列号称之为“MAC地址”这个MAC地址是全球唯一的。
在局域网中进行通信的时候每一个主机在收到一个MAC数据帧后都会提取该MAC数据帧的报头找到对应的目的MAC地址与自己的MAC地址进行比对。如果该MAC地址与自己的MAC地址不匹配则直接将该MAC数据帧丢弃只有MAC地址匹配时该主机才会将该数据帧的有效载荷继续向上进行交付处理。
扩展一下
单向数据发送 主机发送数据帧时将数据帧当中的目的MAC地址指定为某一台主机此时每台主机对数据帧进行识别后最终只有那台指定的主机会将该数据帧向上交付进行处理。局域网内进行数据广播 主机发送数据帧时将数据帧当中的目的MAC地址设置为全1此时所有主机收到该数据帧后都会对该数据帧进行处理。
跨网络通信
那跨局域网的两台主机之间是如何进行通信的呢
其实每个局域网之间都是通过路由器连接起来的因此一个路由器至少能够横跨两个局域网。而这些被路由器级联局域网都认为该路由器就是本局域网内的一台主机因此路由器可以和这些局域网内的任意一台主机进行直接通信。
比如局域网1当中的主机A想要和局域网2当中的主机H进行通信那么主机A可以先将数据发送给路由器然后路由器再将数据转发给局域网2当中的主机H。 那路由器为什么能够“认路”呢 一个路由器可能会级联多个局域网当路由器需要将一个局域网的数据转发到另一个局域网时路由器如何知道该数据应该转发到哪一个局域网的呢
路由器其实是通过IP地址来确定数据的转发方向的因特网上的每台计算机都有一个唯一的IP地址而在数据向下进行封装时在网络层封装的报头当中就会包含两个字段分别是源IP地址和目的IP地址。
当路由器需要将一个局域网的数据转发到另一个局域网时在路由器的链路层会先将数据的在当前局域网对应的底层报头去掉然后将剩下的数据向上交付给网络层此时在网络层就可以获取到该数据对应的目的IP地址然后路由器就可以根据该IP地址在路由表当中进行查找最终就能够确认该数据应该发送到哪一个局域网。
下面是需要通过路由器参与进行ip地址路由的网络通信示意图你可以暂时将其理解为广域网通信但实际这是不准确的后面的文章会详细解释这个地方或者你可以理解为局域网和局域网之间进行通信的示意图。
网络层之上的传输层和应用层与同一局域网内的通信过程相同与其不同的是发送主机的数据包在到达数据链路层时无法将数据包直接交付给目标主机的以太网协议因为发送主机和目标主机并不在同一个网段内无法通过MAC地址确认出数据包的下一跳位置所以数据包首先要进行以太网协议层的解包分用将数据包交付给网络层的路由器路由器会通过自己的路由表确定出数据包要发送的主机的ip地址然后再向下进行封装将数据包向下交付给指定ip地址的目标主机的数据链路层令牌环驱动程序之后的工作还是进行数据包向上的解包分用直到数据包传输到应用层目标主机拿到对应的数据。 网络层的路由器进行了数据包的解包分用和重新封装目的就是屏蔽不同局域网的底层的网络差异为用户提供更为快速稳定健康的网络通信。例如在下面的通信过程中发送主机和目标主机底层使用的协议分别是以太网协议和令牌环网协议但路由器可以在网络层屏蔽掉下层不同协议之间的差异怎么屏蔽呢通过ip地址确定不同网段的主机位置来屏蔽。值得注意的是目前令牌环网已经使用的很少了数据链路层通常使用的都是Ethernet
比如像平常生活中的同一个wifi下的几个设备进行聊天时是不会经过路由器的仅仅通过以太网协议MAC地址就可以确定不同设备的位置。 本节完
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/89458.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!