【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.定义:
OSI(Open 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协议?
- ⾸先,即便是单机,你的计算机内部,其实都是存在协议的,⽐如:其他设备和内存通信,会有内存协议。其他设备和磁盘通信,会有磁盘相关的协议,⽐如:SATA,IDE,SCSI等。只不过我们感知不到罢了。⽽且这些协议都在本地主机各⾃的硬件中,通信的成本、问题⽐较少。
- 其次,⽹络通信最⼤的特点就是主机之间变远了。任何通信特征的变化,⼀定会带来新的问题,有问题就得解决问题,所以需要新的协议咯。
所以,为什么要有TCP/IP协议?本质就是通信主机距离变远了
什么是TCP/IP协议?
- TCP/IP协议的本质是⼀种解决⽅案
- TCP/IP协议能分层,前提是因为问题们本⾝能分层
TCP/IP是对“怎么让不同计算机通信”这一整套问题的解决方案。因为问题本身可以分层,所以方案也分层。
TCP/IP协议与操作系统的关系(宏观上,怎么实现的)
截⽌到⽬前,我们还没接触过任何协议,但是如何朴素的理解协议就可以试试了,OS源代码⼀般都是⽤C/C++语⾔写的
所以究竟什么是协议?我们看图
问题:主机B能识别data,并且准确提取a=10,b=20,c=30吗?
回答:答案是肯定的!因为双⽅都有同样的结构体类型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协议, 没有特殊说明的, 默认都是
指 IPv4
- IP 地址是在 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层的核心价值)。
