Linux————网络基础
1.网络发展
1.1 独立模式
计算机之间相互独立。
1.2 网络互联
多台计算机连接在一起, 完成数据共享。
这其实相当于一个小型的局网:
1.3 局域网LAN
计算机数量更多了, 通过交换机和路由器连接在一起。
- 交换机:在同一局域网内工作,用于连接多台设备(如电脑、打印机),高效转发设备间的数据,让它们能相互通信。
- 路由器:在局域网内,路由器连接了不同由交换机组成的子网,让子网间的设备能够互相通信 。
1.4 广域网WAN
将远隔千里的计算机都连在一起。
在广域网场景下,路由器连接了分布在不同地区(如大阪、东京等)的各个局域网 。它通过选择最佳路径,将数据在不同局域网之间进行高效转发,实现跨地域、跨网络的数据通信。
所谓 "局域网" 和 "广域网" 只是一个相对的概念,比如, 我们有 "天朝特色" 的广域网, 也可以看做一个比较大的局域网。
2. 认识“协议”
2.1 本质
协议是一种“约定”,其表现形式为结构体。
2.2 作用
当数据传输距离增加时,信号需要经过众多设备的转发才能到达目的地,而这一过程中会出现不同类型的问题。为此,网络通信中设置了不同层级的协议,每层协议都有明确的分工,专门负责处理自身对应层级的特定问题,通过这种分层协作的方式,确保数据能够高效、稳定地完成远距离传输。
2.3 各层级需要解决的问题
- 应用层协议(如http、https、ftp、smtp等):解决“如何处理接收到的数据(如区分视频、网络数据等)”(应用问题)。
- TCP协议:解决“长距离传输中数据丢失”的问题(技术问题)。
- IP协议层:解决“数据转发时如何定位主机”(技术问题)。
- 数据链路层协议:解决“如何保证数据能准确到达下一个设备”(技术问题)。
如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 需要约定一个共同的标准, 大家都来遵守, 这就是网络协议。
3.网络协议初始
3.1 协议分层
网络协议之所以需要进行分层设计,本质上是因为现实中数据传输面临的问题本身就呈现出分层的特点。
在学习网络分层协议时,我们先从模型的选择说起。
OSI七层模型虽作为理论上的参考框架,对网络通信各环节进行了细致划分,但其中会话层和表示层的功能在实际应用中常与应用程序逻辑紧密结合,往往难以独立体现,这使得OSI模型在操作和学习中略显繁琐。因此,对于软件学习者而言,更适合从TCP/IP的5层模型入手,即物理层、数据链路层、网络层、传输层和应用层,TCP/IP模型为简化设计,将表示层和会话层的功能整合到了应用层,这种划分更贴合实际网络环境和开发需求。
3.2 TCP/IP五层模型
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
- 物理层:负责光/电信号的传递方式,比如现在的以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤、现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(用来放大信号)工作在物理层。
- 数据链路层:负责同一个局域网中设备之间的数据帧的传送和识别,例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网, 无线LAN等标准。交换机(Switch)工作在数据链路层。
- 网络层:负责地址管理和路由选择,例如在IP协议中通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由),路由器(Router)工作在网路层。
- 传输层:负责两台主机之间的数据传输,如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
- 应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。
3.3 网络协议栈
网络协议栈和操作系统的关系:
网络通信的本质:贯穿协议栈的过程。
4.局域网下的网络传输
4.1 什么是以太网?
两台主机进行长距离网络通信时,首先需要确保能与直接连接的局域网内主机通信,比如手机投屏到电视需连同一网络才能直接传输信息,这种局域网内的直接通信依赖特定的局域网协议来保障。历史上曾有以太网、令牌环网、无线LAN(WiFi)等多种局域网协议,经过技术发展和时代更迭,最终以太网和无线LAN成为主流的局域网协议。
以太网的名字听起来很独特,这得从历史上一个“假想物质”说起。19世纪,科学家们认为光(电磁波)需要类似声音传播依赖空气那样的介质,于是假设宇宙中充满一种看不见的“以太(Ether)” ,光通过它传播。虽然后来爱因斯坦证明以太并不存在,但这个概念成了科学史上的经典梗。20世纪70年代,以太网的发明者罗伯特·梅特卡夫借用“以太”概念来命名以太网,数据在网络中就如同在“无形的介质”里流动。网络中的设备通过电缆或无线连接,数据在其中自由穿梭,恰似以太无处不在。当时技术命名习惯用物理、神话概念,“以太”这个名字既符合潮流,又体现了以太网“无中心”的设计思想——多台电脑通过共享电缆通信,没有中心控制节点,数据自由传输 ,所以以太网就被赋予了这个富有深意的名字,一直沿用至今。
4.2 网络通信的具体流程
在网络协议的层状结构中,每一层都有对应的协议。
4.2.1 数据发送过程中各层的封装处理
1.应用层处理
- 操作:给原始数据(如 “你好”)添加应用层报头。
- 报头属性:基于双方预先规定的结构体(或固定格式字符串),需按规则填充字段。
- 结果:将原始数据与填充好的报头(含协议版本等属性)拼接,形成应用层报文。
2.传输层处理
- 核心功能:确保报文可靠传输,重点保证消息传输的有序性。
- 操作:为应用层传递的报文添加传输层报头。
- 报头关键信息:包含每条信息的序号,通过序号控制传输顺序。
3.网络层处理
- 核心任务:明确数据的来源(src)和目的地(dst)。
- 操作:为传输层传递的报文添加网络层报头,写入源和目的信息。
- 作用:接收方可通过解析网络层报头,知晓数据的发送方和接收方信息,形成网络层报文。
4.数据链路层处理
- 核心任务:明确数据在链路中的接收方,确保准确送达目标设备。
- 操作:在网络层传递的报文前添加数据链路层报头。
- 报头关键信息:包含接收方的标识信息。
4.2.2 数据接收初始阶段:网卡捕获、内存存储与解析顺序
- 接收起点:数据链路层的报文通过以太网传输到对方主机,由网卡(网络通信硬件外设)捕获数据。
- 数据存储:网卡将数据传递给操作系统,并存入内存(遵循冯・诺依曼体系结构,数据需先入内存才能被 CPU 处理)。
- 处理方向:数据按数据链路层、网络层、传输层、应用层的顺序逐层向上解析处理。
4.2.3 数据接收解析阶段:各层按协议分离报头与传递有效载荷
- 数据链路层:接收方依据该层协议约定的格式(明确报头结构和长度),分离报头与有效载荷,将有效载荷传递给网络层。
- 网络层:按自身协议分离报头和有效载荷,将有效载荷传递给传输层。
- 传输层:依据自身协议规则分离报头与有效载荷,将有效载荷传递给应用层。
- 应用层:按自身协议分离报头与有效载荷,将有效载荷(如 “你好”)传递给用户,完成消息接收。
通信的过程本质就是不断封装和解包的过程。
报文 = 报头 + 有效载荷
4.3 协议封装与分用的核心共性
有效条件
- 报头与有效载荷分离能力:几乎任何层的协议都需具备这一能力。
- 分用能力:几乎任何层的协议都需在报头中提供相关信息,以决定将有效载荷交付给上层的哪个协议。
以上两个条件是协议实现封装与分用时不产生困惑的关键,是大部分协议的共性,也是分层协议正常工作的基础(如TCP/IP、OSI模型各层协议均遵循此逻辑)。
4.4 以太网通信
4.4.1 局域网中 Mac 地址的作用
前提:每台主机在局域网上都要有自己唯一的编号。
- 局域网内主机通过网线连接,每台主机的网卡都有出厂时赋予的唯一 48 比特序列号(Mac 地址)。
- 主机启动后,操作系统读取网卡属性识别 Mac 地址(局域网内唯一即可)。
- 链路层报文包含源 Mac 地址(src)和目标 Mac 地址(dst),保障局域网内主机准确通信。
4.4.2 局域网内主机通信流程
- 当 H1 与 H10 通信时,H1 在数据帧报头填入自身 Mac 地址(M1)和 H10 的 Mac 地址(M10),拼接成完整数据帧发送。
- 局域网内所有主机接收数据帧后,分离报头与有效载荷,解析源和目标 Mac 地址。
- 非目标主机对比自身 Mac 地址与目标 Mac 地址,不一致则丢弃数据帧(数据链路层完成判断);H10 发现目标 Mac 地址匹配,将报文交付上层处理。
4.4.3 以太网数据碰撞问题
- 以太网中,多台主机同时发送消息可能发生数据碰撞,导致消息失效(类似多人同时用无线网络时变卡)。
- 发送主机会执行避免碰撞算法(核心为错峰发送)。
- 碰撞域指局域网内可能发生数据碰撞的所有主机所在范围。
4.4.4 局域网数据传输的安全风险
- 主机间发送数据时,局域网内其他主机可获取数据,若有意可捕获并传至上层。
- 正常情况下,网卡自动丢弃非自身应接收的报文;但开启 “混杂模式” 后,网卡会保留所有捕获数据并交上层,这是多数抓包软件的工作原理,可能引发安全问题。
- 解决办法:如在应用层对数据加密,防止他人查看内容。
4.4.5 交换机在局域网中的作用
- 一般不建议局域网范围过大,否则会降低数据传输效率。需扩大局域网范围时,可引入交换机。例如 H1 给 H7 发送数据,交换机判断两者在左侧,则无需转发到右侧,减少数据包碰撞概率。
- 若 H3 和 H10 发生数据碰撞,交换机可识别,避免出错报文扩散到左侧。
- 划分碰撞域是交换机的核心工作之一。
从资源共享与访问控制的角度理解局域网:
它相当于多台主机共享的一个临界资源,任何时刻原则上只允许一台主机发送消息,以此实现对这一“共享资源”的互斥访问。不过,这种互斥并非通过“加锁”机制实现,而是采用“出错重发”的策略——一旦发生数据碰撞等错误,相关主机会重新发送消息。此外,主机在网络中进行数据的读写操作,实际上也是通过进程来完成的,这些进程共同作用于局域网这一共享资源,实现主机间的通信与数据交互。
5.跨网络传输
跨网段的主机在文件传输时,数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。
5.1 前置知识
5.1.1 令牌环网原理
- 令牌的性质:如同特定凭证(类似教室中的水杯或瓶子),是主机获准发送消息的唯一依据。
- 发送权限规则:任意时刻,仅持有令牌对应标识数字的主机具备消息发送权限,其余主机无法发送消息。
- 工作流程:以主机 A 为例,获取标识数字(持有令牌)后获得发送权,发送完成后,将代表令牌的 “主机数据” 传递给下一台主机,自身失去发送资格;下一台主机接收令牌后获得发送权,以此循环,确保各主机有序收发消息。
5.1.2 IP 地址的基本概念与作用
- 引入原因:在以太网中,用于解决主机如何知晓数据需跨网络交给目标主机的问题。
- 核心功能:标识一台主机在全网中的唯一性(区别于 Mac 地址仅保证局域网内唯一性)。
- IPv4 的构成与属性:由 4 字节(32 比特位)组成,为整数形式。
5.2 跨网络通信的流程(微观)
5.2.1 主机 A 到主机 B 的数据封装过程(A 端)
- 应用层:用户发送 “你好”,FTP 客户接收并识别为 FTP 应用数据。
- 传输层:FTP 客户将数据交给 TCP,TCP 添加含端口的头部,封装成 TCP 段,保障可靠传输。
- 网络层:TCP 数据交给 IP,IP 添加含源 IP(srcip)和目的 IP(dstip)的头部,封装成 IP 数据报,确定网络传输路径。
- 数据链路层:IP 数据报交给以太网驱动,按以太网协议添加含 MAC 地址的头部,封装成以太网帧,适配以太网物理网传输。
在主机C端把数据交给路由器,本质上就是局域网通信,让C端和路由器通信。所以路由器的Mac地址必须被用户知道。
5.2.2 数据从主机 A 到路由器的传递(局域网内)
- 主机 A 的以太网驱动程序将封装好的以太网帧发送到以太网,会在以太网内广播 ,以太网中的所有主机都会接收到这个数据帧。
- 各主机分离 MAC 帧报头与有效载荷,对比自身 MAC 地址和目的 MAC 地址:不匹配则丢弃,路由器匹配 MAC 地址则接收。
- 路由器分离出有效载荷并提交给自身网络层,进入路由转发流程。
5.2.3 路由器的路由转发与令牌环帧封装
- 路由器网络层解析出目标 IP(指向主机 B),查询路由表确认主机 B 所在网络可通过令牌环链路抵达。
- 数据从网络层下传至令牌环驱动程序,驱动程序按令牌环协议添加报头,完成令牌环帧封装。
5.2.4 数据从令牌环网络到主机 B 的接收过程(B 端)
- 令牌环帧通过物理网络传输至主机 B 的令牌环驱动程序,驱动程序分离报头与有效载荷。
- 有效载荷逐层向上传递:经网络层(IP)、传输层(TCP)、应用层(FTP 服务器),最终送达主机 B 的用户层。
IP 协议及地址的关键特性
- IP 协议作用:屏蔽底层网络差异,依靠 IP 层路由器实现全球主机的软件虚拟层,所有数据以 IP 报文形式传输。
- IP 地址特点:目的 IP 一般不变,用于协助路径选择,标识主机在全网的唯一性。
- MAC 地址特点:出局域网后,源和目的 MAC 地址会被丢弃,由路由器重新封装。
5.3 网络通信的基本脉络(宏观)
路由器结构:通常配备两个网卡,可能分别对应以太网、无线 LAN 或令牌环网等不同网络类型。
数据包转发流程:
- 发起请求:用户在主机 A 发起网络请求(如刷抖音)后,数据包从应用层自顶向下,经传输层、网络层、数据链路层,通过网卡发送到相连路由器。
- 路由器处理:数据包到达路由器后,自底向上解包(经数据链路层到网络层处理),再自顶向下重新封包,通过另一网卡发往下一路由器。
- 重复转发:上述过程在后续路由器中重复,数据包经层层转发最终抵达主机 B。
- 完成交互:主机 B 接收后,数据包从数据链路层自底向上,经网络层、传输层到应用层,完成交互。
6.ifconfig命令
6.1 作用
用于查看和配置网络接口的信息,包括 IP 地址、MAC 地址等网络参数。
6.2 部分参数讲解
- inet:网卡IPv4地址,由4个字节的数字组成,以点作为分隔符,每个分隔符之间的数字的取值范围是0-255。
- ether:网卡的Mac地址,由6个字节的数字组成,以:作为分隔符,每个分隔符之间的数字。
- inet6:IPv6是为解决IPv4地址资源不足的问题而诞生的,由16个字节组成,是网卡的IPv6地址。目前,它在全球公网中的应用尚不广泛,但在我国,国家政策支持互联网公司在内网建设中采用IPv6。