【Linux】网络基础(1)--之局域网、广域网、OSI,网络协议、TCP/IP结构模型、网络传输等知识详解

【Linux】网络基础(1)--之局域网、广域网、OSI,网络协议、TCP/IP结构模型、网络传输等知识详解 一.计算机网络的发展背景1.网络的定义网络是指将多台计算机或其他设备通过通信线路、传输协议和网络设备连接起来形成一个能够相互通信、共享资源和协同工作的系统。2.网络发展历史1网络怎么来的阿帕网1969年美国军方怕核弹打下来通信全断搞了个分散的网络断几个点还能通。变成互联网1980年代从军用转民用大学研究所都连上了统一用TCP/IP这个“普通话”。商业化1990年代万维网浏览器出来普通人也能上网了谷歌亚马逊这些公司冒出来。2中国网络怎么来的1994年全功能接入国际互联网正式上网了。1990年代末新浪、搜狐、网易三大门户QQ也出来了。2000年代淘宝、京东电商起来了。2010年后4G智能手机普及移动互联网爆发微信、抖音、移动支付全民用。现在5G全球领先AI、6G也在搞。补充互联网发展的三个角色运营商移动电信联通修路收过路费你上网得用它的网。互联网公司腾讯阿里字节在路上开店卖东西微信、淘宝、抖音赚钱。通信设备商华为中兴卖修路的工具基站、路由器给运营商。通俗理解运营商找设备商买工具修路互联网公司在运营商修的路上跑业务赚钱以前运营商和互联网公司在利益分配上有矛盾现在开始互相合作了比如联通和腾讯合资华为这种设备商也开始自己做云、做手机往上游走。1独立模式独⽴模式: 计算机之间相互独⽴;2网络互联⽹络互联: 多台计算机连接在⼀起, 完成数据共享;在没有网络的时代数据也可以传输。一种方式是通过数据线将两台设备如计算机、手机或存储设备直接连接实现点对点传输另一种方式是借助磁带、光盘等物理媒介进行数据交换但这种方式成本较高。如下图的例子以业务①、②、③为例当时使用的服务器包括小松专用计算机小竹专用计算机小梅专用计算机每个人使用各自独立的计算机可以在业务①、②、③之间随时自由切换。而共享数据则由服务器进行集中管理。3.局域网LAN局域网LAN是相对于广域网WAN而言的一个概念主要是指在相对较小的物理范围内构建的计算机互联网络。这个“物理范围”包括是一个宿舍、一栋办公楼或是一所学校。局域网的主要特点是传输速度快、延迟低并且通常用于连接同一组织内部的计算机和设备。举例子说明你家路由器连着几台设备——台式机、笔记本、智能电视、手机通过Wi-Fi这些设备之间可以互相传文件、投屏这就是一个小型局域网。4.广域网WAN广域网 WAN就是互联网覆盖范围很大跨城市、跨国、跨洲。它由多个局域网比如你在大阪、东京、福冈、名古屋、洛杉矶的各家公司分部互相连接而成。广域网的作用是让远隔千里的电脑能连在一起实现远程办公、数据共享、协作。它利用公共网络传输数据特点是范围大、但速度比局域网慢、延迟也更高。5.比较局域网和广域网局域网 vs 广域网公网、外网 广域网WAN私网、内网 局域网LAN本质区别局域网和广域网没有绝对的界限只是一个相对的概念。比如大家常说的“天朝特色”的广域网从全球互联网的角度看它本质上也是一个比较大的局域网。反过来一个大公司的跨国局域网如果从它内部员工的角度看也算是一个“广域”的范围。所以区分它们关键不在大小而在“是否需要通过路由器跨出去也就是说不需要路由器就能直接连通的是局域网需要经过路由器才能跨过去的 是广域网。6.拓展城域网 MAN城域网是指覆盖一个城市范围的计算机网络用来连接这个城市里不同位置的机构、公司或校园网络。它可以通过光纤、无线通信等方式把各个分散的网络设施串联起来。城域网的特点是覆盖范围比局域网大、传输距离更长一般用于满足城市内互联网接入需求或者连接企事业单位之间的网络通信。个人区域网 PAN个人区域网是指以个人为中心构建的小范围网络覆盖半径通常只有几米。它不需要路由器或交换机设备之间直接通过蓝牙、红外、USB等方式连接。个人区域网的特点是范围极小、连接简单、方便携带一般用于个人设备之间的短距离数据交换比如手机连蓝牙耳机、电脑连无线鼠标、手表和手机同步数据。存储区域网 SAN存储区域网是专门为服务器和存储设备比如磁盘阵列、磁带库打造的高速专用网络。它不传普通文件而是传更底层的数据块服务器访问SAN就像直接插了一块本地硬盘一样快。存储区域网的特点是速度极快、延迟极低、不占用普通网络带宽一般用于企业数据中心的核心业务比如银行的交易系统、电商平台的订单数据库。和SAN对应的是NAS网络附加存储NAS通过普通网络共享文件成本低适合家庭或小公司。虚拟专用网 VPN虚拟专用网是在公共网络比如互联网上搭建的一条加密隧道用来连接两个或多个异地网络。它不是一个实体的物理网络而是借用了现有网络基础设施。VPN的特点是加密传输保安全、可以隐藏真实地址、能连接分散在不同地方的局域网一般用于远程办公在家连公司内网、跨地域企业互联。需要提醒的是在国内用VPN翻墙访问境外被屏蔽的网站是违法的合法的VPN主要用于企业远程办公。范围大小排序互联网 广域网 城域网 局域网 个人区域网。存储区域网和VPN不在这个序列里SAN是按功能分的VPN是按连接方式分的。网络基础设施通过网络用户可以远程通信、获取信息、共享文件和资源。网络基础设施包括协议、路由器、交换机、光纤等它们协同工作确保数据能在不同计算机之间传输和交换。二.协议1.协议的概念协议就是一种约定。在网络中协议就是计算机之间通信时共同遵守的一套规则。比如数据怎么打包、怎么发送、怎么校验、怎么解包都得按约定好的来否则两台设备就没法沟通。就像打电话时双方约定好了电话铃响几声代表什么意思谁先说话谁后说话说完怎么结束。这些虽然没有明文写出来但大家都按这个规矩办这就是协议。2.协议的本质计算机之间的传输媒介是光信号和电信号. 通过 频率 和 强弱 来表⽰ 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双⽅的数据格式.思考: 只要通信的两台主机, 约定好协议就可以了么?答定好协议但是你⽤频率表⽰01我⽤强弱表⽰01就好⽐我⽤中国话你⽤葡萄⽛语⼀样虽然⼤家可能遵守的⼀套通信规则但是语⾔不同即是订好了基本的协议也是⽆法正常通信的。所以完善的协议需要更多更细致的规定并让参与的⼈都要遵守。比如计算机⽣产⼚商有很多;计算机操作系统, 也有很多;计算机⽹络硬件设备, 还是有很多;那么如何让这些不同⼚商之间⽣产的计算机能够相互顺畅的通信? 就需要有⼈站出来, 约定⼀个共同的标准, ⼤家都来遵守, 这就是⽹络协议也成为TCP/IP。协议这玩意儿说白了就是一层软件它的作用是让两台设备之间通信的时候更顺、更快。你看一台电脑里头有CPU、显卡、网卡这些零件它们之间是用电路连着的。这么一看电脑内部其实就像一个小型网络零件之间也有自己的规矩比如驱动想指挥硬件干活就得按协议来。假设你把这根线拉长把硬盘放到几百公里外那你存个文件就不是存本地了而是通过网络传到远处去写。再把CPU、内存也挪到远处就相当于你把一台电脑拆散了分成好几台机器用网络把它们串起来。所以得出一个结论计算机里头藏着网络的逻辑网络本身也像一台散装的计算机。为什么需要协议因为多台主机之间的距离较远通信成本高、容易出错、速度慢。为了减少通信成本、提高通信效率、保证数据能正确到达所以需要有协议的存在。通信的复杂问题本质上跟距离成正相关。距离越近越简单距离越远越复杂越需要一套完善的协议来兜底。理解不了就想异地恋和那个道理一样3.协议分层分层指将通信功能划分为多个逻辑层次每一层建立在下一层之上并为上一层提供服务。为什么协议分层降复杂度一个大问题拆成几个小问题每层只管一小块不操心别的。解耦各层之间只认接口里面怎么改是它自己的事不影响隔壁。灵活想换哪一层就换哪一层别的不动就行。标准化各家做各家的只要接口对得上就能一起用。协议本质也是软件在设计上为了更好的进⾏模块化解耦合也是被设计成为层状结构的举例理解打电话)语言层双方都说汉语或英语这是“应用层”的约定。只要语言对得上这层就能通。通信设备层双方用电话机或无线电这是“物理/设备层”的约定。只要设备能对上这层就能通。从这个例子感受分层的好处只改语言层从汉语换成英语通信设备层电话机不用换。电话机还是那个电话机只管传声音不管你说的是哪国话。只改通信设备层从电话机换成无线电语言层汉语不用改。你继续说汉语底下用什么设备传跟你没关系。分层的好处是啥我们把软件拆成模块就能解耦。比如换通信设备电话换无线电语言层不用改换语言汉语换英语设备层也不用动。改任何一层都不影响其他层。分层的依据把功能比较集中、耦合度较高的模块放在同一层也就是高内聚。每一层都只解决特定的问题不掺和别的层的活。同时层与层之间要保持低耦合也就是互相依赖尽可能少只通过接口通信。这样某一层内部怎么改其他层不用管。咱们简单理解就是分层依据 就是高内聚同一层的事放一起 低耦合不同层少互相牵扯4.数据传输的条件从一台计算机发信息到另一台计算机要解决这些问题对方能识别数据应用层数据传过去了对方得知道这是什么、怎么用。这是应用层的事。数据不丢失传输层发出去的东西对方有没有收到没收到就得重发。这是传输层的事。能找到对方网络层全世界那么多主机怎么确定发给哪一台得有地址、能定位。这是网络层的事。能一跳一跳传过去数据链路层两台机器离得远不能直接发到底得先传给下一台再下一台像接力一样。这是数据链路层的事。出错能纠正物理层信号在线上传可能受干扰出错得能发现并重新传。这是物理层的事。当然这些东西也缺不了都得有要有物理通道和介质网线、光纤、Wi-Fi要有收发设备电脑、手机、服务器要有协议双方约定好的规则要有地址IP、MAC确保送到正确的目标要有时钟同步或编码机制接收方知道怎么解读信号我自己最简单的理解就是协议栈后面会讲就是把这些复杂问题拆开每一层解决一个。每一层都有自己的协议各管各的事合起来才能保证数据不丢、找对人、传得到、能读懂。三.OSI七层模型1.定义OSIOpen System Interconnection开放系统互连七层⽹络模型称为开放式系统互联参考模型是⼀个逻辑上的定义和规范;2.功能和优点OSI 七层模型是⼀种框架性的设计⽅法其最主要的功能使就是帮助不同类型的主机实现数据传输;它的最⼤优点是将服务、接⼝和协议这三个概念明确地区分开来概念清楚理论也⽐较完整.通过七个层次化的结构模型使不同的系统不同的⽹络之间实现可靠的通讯;把网络从逻辑上分为了 7 层。每一层都有相关、相对应的物理设备比如路由器交换机OSI七层模型的表格从下到上物理层到应用层序号分层名称功能每层功能概述解决的问题7应用层针对特定应用的协议针对每个应用的协议如HTTP、FTP、SMTP数据过去了对方怎么识别、怎么用6表示层设备固有数据格式和网络标准数据格式的转换接收不同表现形式的数据文件如文字流、图像、声音等数据格式不统一怎么办5会话层通信管理。负责建立和断开通信连接。管理传输层以下的分层何时建立连接、何时断开连接以及保持多久的连接什么时候开始传、什么时候结束4传输层管理两个节点之间的数据传输。负责可靠传输确保数据被可靠地传送到目标地址是否有数据丢失丢包怎么办怎么保证数据完整到达3网络层地址管理与路由选择经过哪个路由传递到目标地址全世界那么多主机怎么找到对方2数据链路层互联设备之间传送和识别数据帧数据帧与比特流之间的转换下一跳怎么传过去1物理层用‘0’和‘1’表示高低电压比特流与电子信号的转换、连接器与网线的规格信号出错怎么办记忆口诀从下往上物、数、网、传、会、表、应其实在⽹络⻆度OSI定的协议7层模型其实⾮常完善但是在实际操作的过程中会话层、表⽰层是不可能接⼊到操作系统中的所以在⼯程实践中最终落地的是5层协议。但是要理解上⾯的话需要我们学习完⽹络才可以理解后续会一一讲解这⾥就知道就可以。对应我在上面的数据传输的一些问题对应的层面问题对应OSI层对方怎么识别数据应用层、表示层丢包怎么办传输层TCP怎么找到目标主机网络层IP下一跳怎么传数据链路层MAC信号出错怎么办物理层四.TCP/IP五层(或四层)模型TCP/IP是⼀组协议的代名词它还包括许多协议组成了TCP/IP协议簇TCP/IP通讯协议采⽤了5层的层级结构每⼀层都呼叫它的下⼀层所提供的⽹络来完成⾃⼰的需求.物理层:负责光/电信号的传递⽅式. ⽐如现在以太⽹通⽤的⽹线(双绞 线)、早期以太⽹采⽤的的同轴电缆(现在主要⽤于有线电视)、光纤, 现在的wifi⽆线⽹使⽤电磁波等都属于物理层的概念。物理层的能⼒决定了最⼤传输速率、传输距离、抗⼲扰性等. 集线器(Hub)⼯作在物理层.数据链路层: 负责设备之间的数据帧的传送和识别. 例如⽹卡设备的驱动、帧同步(就是说从⽹线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就⾃动重发)、数据差错校验等⼯作. 有以太⽹、令牌环⽹, ⽆线LAN等标准. 交换机(Switch)⼯作在数据链路层.⽹络层:负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识⼀台主机, 并通过路由表的⽅式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)⼯作在⽹路层.传输层:负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到⽬标主机.应⽤层:负责应⽤程序间沟通如简单电⼦邮件传输SMTP、⽂件传输协议FTP、⽹络远程访问协议Telnet等. 我们的⽹络编程主要就是针对应⽤层.物理层我们考虑的⽐较少我们只考虑软件相关的内容. 因此很多时候我们直接称为 TCP/IP四层模型.⼀般⽽⾔对于⼀台主机, 它的操作系统内核实现了从传输层到物理层的内容;对于⼀台路由器, 它实现了从⽹络层到物理层;对于⼀台交换机, 它实现了从数据链路层到物理层;对于集线器, 它只实现了物理层;但是并不绝对. 很多交换机也实现了⽹络层的转发; 很多路由器也实现了部分传输层的内容(⽐如端⼝转发);数据链路层中网卡层属于驱动程序的一部分负责驱动硬件收发数据帧。网络层和传输层是在操作系统内部自己实现的。所有操作系统Windows、Linux、macOS等都遵循相同的TCP/IP协议规范所以全球的主机都能互联互通。正是因为网络层和传输层的实现方式统一不同厂商、不同系统、不同国家的设备才能相互通信。网络协议栈传输层和网络层是操作系统的一部分。操作系统内置了TCP/IP协议的实现所以不同系统之间能互联。对应到OS中在应用层和传输层之间存在系统调用接口主要是文件类的系统调用接口如 socket、read、write、close 等。应用程序通过调用这些接口才能把数据交给底层协议栈去处理。TCP 和 IP 分别是传输层和网络层最具代表性的两个协议。整个协议栈被命名为 TCP/IP 模型足以看出这两个协议的重要性。而它们的重要性本质上是操作系统赋予的——操作系统内核实现了 TCP 和 IP 协议并提供给上层应用使用。五.再识协议为什么要有TCP/IP协议⾸先即便是单机你的计算机内部其实都是存在协议的⽐如其他设备和内存通信会有内存协议。其他设备和磁盘通信会有磁盘相关的协议⽐如SATAIDESCSI等。只不过我们感知不到罢了。⽽且这些协议都在本地主机各⾃的硬件中通信的成本、问题⽐较少。其次⽹络通信最⼤的特点就是主机之间变远了。任何通信特征的变化⼀定会带来新的问题有问题就得解决问题所以需要新的协议咯。所以为什么要有TCP/IP协议本质就是通信主机距离变远了什么是TCP/IP协议TCP/IP协议的本质是⼀种解决⽅案TCP/IP协议能分层前提是因为问题们本⾝能分层TCP/IP是对“怎么让不同计算机通信”这一整套问题的解决方案。因为问题本身可以分层所以方案也分层。TCP/IP协议与操作系统的关系(宏观上怎么实现的)截⽌到⽬前我们还没接触过任何协议但是如何朴素的理解协议就可以试试了OS源代码⼀般都是⽤C/C语⾔写的所以究竟什么是协议我们看图问题主机B能识别data并且准确提取a10b20c30吗回答答案是肯定的因为双⽅都有同样的结构体类型struct protocol。用同样的代码实现协议用同样的自定义数据类型天然就具有“共识”能够识别对方发来的数据——这不就是约定吗关于协议的朴素理解所谓协议就是通信双方都认识的结构化数据类型结构体。双方都按照同样的格式来打包、解析数据自然就能读懂对方。因为协议栈是分层的所以每一层都有自己对应的协议。同层之间互相可以认识对方的协议——传输层认识传输层网络层认识网络层。每一层只管自己和对方那一层之间的约定不需要关心其他层在做什么。接下来举个例子 ⽹络购物快递单的例⼦收货人和发货人都默认这个快递单的信息进行双方的连接六.⽹络传输基本流程1.⽹络传输流程局域网中同一个网段内的两台主机是可以直接进行通信文件传输的不需要经过路由器。跨⽹段的主机的数据传输. 数据从⼀台计算机到另⼀台计算机传输过程中要经过⼀个或多个路由器.在⽹络传输的过程中数据不是直接发送给对⽅主机的⽽是先要⾃定向下将数据交付给下层协议最后由底层发送然后由对⽅主机的底层来进⾏接受在⾃底向上进⾏向上交付前面说的那个分层的结构每一层都有自己的规矩这个规矩最后都体现在一个东西上叫做报头。我们也举了个生活中的快递单的例子也可以用到这里比如你在网上买东西商家要把货发给你但他们不是自己送而是交给快递公司。这就是分层的意思。你收到包裹的时候里面不光是你要的东西还有个快递盒和一张快递单。这个多出来的快递单就是报头。同样你在网上发数据的时候实际发出去的数据比你原来想发的要多一点多出来的那部分就是报头。那这个快递单是给谁看的给快递员看的。快递单是快递公司自己定的规矩他们整个系统里每个快递员都看得懂这张单子。所以协议说白了就是靠报头来体现的。每一层的数据都要加上这一层自己的报头。客户在应用层发送数据时为了确保数据的安全、完整以及路径选择等问题数据必须自顶向下逐层经过应用层、传输层、网络层、数据链路层最后通过物理层发送给对方。每一层都有自己的协议每一层协议都有对应的协议报头。数据从上往下交付的过程中每一层都会在数据前面加上自己的报头这个过程叫做封装。对方收到数据后会自下而上逐层解包每一层去掉对应的报头最终拿到原始数据。一个设备至少要连接两个网络才能把数据包从一个网络转发到另一个网络。所以路由器必须横跨两个网络也就是说它至少要有两张网卡。路由器就像一个中转站得有两条路两个出口才能把东西从一条路转到另一条路。前面我们提到了报头接下来一一介绍1报头a. 什么是报头在网络通信中报头是数据包前面的一段固定结构里面装的是关于这个数据包的一些说明信息。你可以把它理解成快递单——它本身不是你要寄的东西但记录了这东西从哪来、到哪去、怎么处理。报头通常分成好几个字段每个字段记录一种信息常见的包括目标地址数据要发给谁可以是MAC地址物理地址或IP地址逻辑地址源地址数据从谁那里发出来的协议类型告诉设备这个数据包用的是TCP还是UDP等协议长度整个数据包有多大报头数据校验和用来检查数据在传输过程中有没有出错服务质量说明这个数据的优先级比如要不要快一点、能不能丢标记字段存一些额外的控制信息给特定协议或设备使用简单说报头就是你收到的数据包里多出来的那部分说明信息。b. 报头的作用报头之所以重要是因为它承载了传输过程中需要用到的各种说明信息。具体作用有标识和定位通过源地址和目标地址告诉设备这个数据从哪来、要到哪去确保能送到正确的地方数据处理和路由通过协议字段告诉网络设备这个数据包是按什么协议封装的设备就知道该怎么处理和转发错误检测和纠正通过校验和接收方可以检查数据在传输过程中有没有损坏有些情况下还能修复服务质量管理通过服务质量字段告诉网络这个数据优先级高不高网络拥堵时优先照顾谁满足特定协议需求有些协议需要额外的控制信息标记字段就是用来装这些的网络设备通过读取报头里的这些信息就知道怎么处理这个数据包是转发、是检查错误、还是重组数据。报头的作用就是确保数据包能被正确地传输和处理。c.为什么要加报头识别数据报头里记录了数据的类型、长度、协议等信息接收方看了就知道该怎么解析遵循协议规范各种传输协议都规定了报头的格式和内容按规矩加报头才能保证通信不出错检查数据完整性报头里带着校验和之类的信息接收方能验证数据有没有损坏或被篡改控制数据流和处理错误报头里还可以带序列号、确认号等信息用来控制发送速度、处理丢包和重传让传输更可靠2局域⽹(以太⽹为例)通信原理:局域网中同一个网段内的两台主机是可以直接进行通信文件传输的不需要经过路由器。原理类似上课老师点名回答问题老师喊一个学生的名字目标MAC地址而不是喊“那个穿红衣服的同学”因为名字是唯一的。学生听到点名只有被点到名的学生站起来回答只有目标MAC地址匹配的设备接收数据其他同学听着但不回应其他设备丢弃数据包。传纸条你想把纸条传给教室对角线的同学。如果直接扔可能被其他人截获或丢失。所以你会让旁边的同学帮忙传递交换机/路由器转发每个经手的同学只看纸条上写的“最终收件人”目标MAC地址然后决定传给下一个。每台主机在局域⽹上要有唯⼀的标识来保证主机的唯⼀性mac地址认识MAC地址MAC地址⽤来识别数据链路层中相连的节点;⻓度为 48 ⽐特位, 即 6 个字节. ⼀般⽤ 16 进制数字加上冒号的形式来表⽰(例如:08:00:27:03:fb:19)在⽹卡出⼚时就确定了, 不能修改. mac地址通常是唯⼀的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些⽹卡⽀持⽤⼾配置mac地址).后⾯我们详细谈论数据链路层的时候会谈 mac 帧协议此处我们做⼀个了解即可以太⽹中任何时刻只允许⼀台机器向⽹络中发送数据如果有多台同时发送会发⽣数据⼲扰我们称之为数据碰撞所有发送数据的主机要进⾏碰撞检测和碰撞避免 没有交换机的情况下⼀个以太⽹就是⼀个碰撞域局域⽹通信的过程中主机对收到的报⽂确认是否是发给⾃⼰的是通过⽬标mac地址判定 这⾥可以试着从系统⻆度来理解局域⽹通信原理初步明⽩了局域⽹通信原理再来看同⼀个⽹段内的两台主机进⾏发送消息的过程⽽其中每层都有协议所以当我进⾏进⾏上述传输流程的时候要进⾏封装和解包下⾯我们明确⼀下概念报头部分就是对应协议层的结构体字段我们⼀般叫做报头除了报头剩下的叫做有效载荷故报⽂ 报头 有效载荷然后我们在明确⼀下不同层的完整报⽂的叫法不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在⽹络层叫做数据报(datagram),在链路层叫做帧(frame).应⽤层数据通过协议栈发到⽹络上时,每层协议都要加上⼀个数据⾸部(header),称为封(Encapsulation).⾸部信息中包含了⼀些类似于⾸部有多⻓, 载荷(payload)有多⻓, 上层协议是什么等信息.数据封装成帧后发到传输介质上,到达⽬的主机后每层协议再剥掉相应的⾸部, 根据⾸部中的 上层协议字段 将数据交给对应的上层协议处理.3以太网和令牌环网a. 以太网以太网就是最常见的一种局域网你家里、公司里用的基本就是它。以太网的通信方式有点像用大喇叭喊话你发一条消息同一个网络里的所有设备都能听到。但只有被喊的那个设备会收下其他设备听一下发现不是喊自己就扔了不管。问题是这个网络就像一个单车道同一时间只能有一辆车跑。如果两台电脑同时发消息两股数据就会撞在一起互相干扰谁也收不到。这叫碰撞。一旦发生碰撞大家就都停下来各自等一个随机的时间再重发。所以从系统的角度看网络这个资源是临界资源——同一时刻只能被一台主机占用。简单来说以太网就是一群人用喇叭喊话一次只能一个人喊同时喊就乱套得等一会儿再喊。b. 令牌环网令牌环网的解决思路不一样它不让人抢着喊而是发一个“令牌”在大家手里轮流传。谁拿到令牌谁就有资格发消息。发完之后把令牌传给下一个人。没拿到令牌的人只能闭嘴等着。这就像学校里只有一个话筒谁拿到话筒谁讲话讲完传给下一个。绝对不会出现两个人同时讲话的情况。简单来说令牌环网就是排队拿话筒拿到的人说话没拿到的等着永远不会抢。2.数据包封装和分⽤数据包封装和分用假设现在两个人在用电子邮件通信站在他们的角度会觉得他们是在应用层直接聊天但实际上数据是要先向下打包封装到了对方那里再向上拆包分用才能完成通信。数据包封装数据往下传的时候每一层都会加上自己的报头。报文就等于报头加上有效载荷然后继续往下传。数据包分用数据往上解的时候因为同一层用的协议是一样的所以能认出报头。每一层把自己这一层的报头拆掉再把剩下的有效载荷往上传。可以看到左边某一层发出的报头和有效载荷跟右边同一层收到的是一模一样的。左边怎么发的右边就怎么收到。所以可以认为同层协议之间是在直接通信。它的流程是这样的数据经过路由器时如果要从以太网转到令牌环网路由器会重新封装加上令牌环协议的报头。这样一来两边的链路层报头就不一样了但这不影响上面几层的对称性。由此可以得出IP层的作用就是屏蔽底层网络的差异。对于不同网段的两台计算机通信过程跟上面说的差不多唯一的不同就在路由器那一块。把数据从顶到底一层层往下交付的过程叫做封装。封装就是一层层加报头。解包的本质就是一层层去掉报头反过来看。不同层对数据包的叫法不一样传输层叫数据段网络层叫数据报链路层叫数据帧。应用层的数据往下传的时候每一层都会在前面加一个头叫报头这个动作就叫封装。这个头里写着这层的头有多长、真正的数据有多长、上一层用的是什么协议等等。数据被包成帧之后从网线或Wi-Fi发出去。到了对方的机器每一层再把对应的头拆掉根据头里写的“上一层用的啥协议”把剩下的数据交给对应的那一层去处理。下图为数据封装的过程下图为数据分⽤的过程六、网络中的地址管理MAC地址主要是在局域网里用的IP地址主要是在广域网比如互联网上用的。1. 认识IP地址IP 协议有两个版本, IPv4 和 IPv6 . 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指 IPv4IP 地址是在 IP 协议中, ⽤来标识⽹络中不同主机的地址;对于 IPv4 来说, IP 地址是⼀个 4 字节, 32 位的整数;我们通常也使⽤ 点分⼗进制 的字符串表⽰ IP 地址, 例如 192.168.0.1 ; ⽤点分割的每⼀个数字表⽰⼀个字节, 范围是 0 - 255 ;之前我们讲过跨⽹段的主机的数据传输. 数据从⼀台计算机到另⼀台计算机传输过程中要经过⼀个或多个路由器.下⾯是⼀张⽰意图为什么要去目标主机先要走路由器因为你的主机和目标主机可能不在同一个局域网。如果在同一个局域网直接通过MAC地址就能找到对方不需要路由器。但如果不在同一个网络比如你在中国服务器在美国你根本不知道对方在哪。这时候就必须先把数据发给路由器让路由器帮你看一下目标IP然后路由器判断该往哪个方向转一跳一跳地传过去。简单来说路由器就是网络的指路人。你看不到目标就先问指路人。目的IP的意义目的IP就是目标主机的“门牌号”。这个门牌号是全球唯一的在公网范围内不管目标主机在哪只要有了它的IP路由器就能一层层地找到它。IP地址的意义在于屏蔽了底层的物理位置差异。你不需要知道对方是插在哪个交换机上、用的是网线还是Wi-Fi、中间经过几个国家你只需要知道它的IP剩下的路由器帮你搞定。然后结合前面说的封装与解包体现路由器解包和重新封装的特点2.比较IP地址 和 MAC地址IP地址在整个路由过程中一直不变目前先这样理解后面再修正MAC地址一直在变每一跳都会换成下一站的MAC各自的作用目的IP是路径选择的重要依据。路由器根据目的IP决定往哪个方向转。MAC地址是局域网转发的重要依据。在一个局域网内设备靠MAC地址来确定数据该发给谁。举个例子说明唐僧取经从哪里来到哪里去源IP目标IP地址上一站从哪里来下一站去哪里源MAC地址目标MAC地址补充先有MAC地址再有IP地址简单来说IP是长远目标一直不变MAC是下一阶段目标每跳都变。七.⽹络的意义和⽹络通信的宏观流程1⽹络通信的宏观流程2.⽹络的意义IP⽹络层存在的意义提供⽹络虚拟层让世界的所有⽹络都是 IP ⽹络屏蔽最底层⽹络的差异对应网络层IP层以下不管底下是以太网、令牌环网、Wi-Fi还是光纤到了IP层上面都感觉不到区别。这就是IP层的核心价值。