ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux网络(01):网络基础概念

Linux网络(01):网络基础概念 如果你在阅读过程中有任何疑问或想要进一步探讨的内容欢迎在评论区畅所欲言我们一起学习、共同成长~ 如果你觉得这篇文章还不错不妨顺手点个赞、加入收藏并分享给更多的朋友噢~1. 网络的位置从计算机架构理解协议栈1.1 协议栈各层位置面试高频考察形式笔试选择协议栈各层归属哪个态 / 驱动、面试问答socket 在哪一层、二面追问为什么不同 OS 能互通。联动《Linux系统03进程概念》2. 操作系统OS我们了解了计算机四层架构和操作系统定位本章学习网络通信子系统TCP/IP 协议栈。协议栈层级所处的计算机架构位置应用层协议应用层用户态传输层、网络层系统层内核态——准确来说位于操作系统内核数据链路层驱动层物理层硬件层 核心要点传输层、网络层属于狭义操作系统的范畴与进程管理、内存管理地位对等。2. 计算机网络背景2.1 网络发展阶段【冷门了解】最早每个计算机相互独立各干各的活、各存各的数据➡ 网络互联少数电脑连到同一台共享服务器上把要共享的数据集中管理➡ 局域网 LAN一片区域的电脑组网交换机负责网内转发、路由器负责网间互连➡ 广域网 WAN大量路由器一级一级串联各局域网形成跨城/跨国的广域网2.2 认识 协议【必考核心】什么是网络协议答协议就是通信双方共同遵守的约定并且必须用计算机语言结构化数据表达双方才能互相识别。比如// 约定type1存库、type2写日志 → 这就是协议 struct { uint8_t type; char data[8]; } msg {2, hello};对方收到后读 type 字段按约定执行对应操作。为什么不同厂商设备能互通答互通的前提是都遵守同一套国际标准报文格式一致即可解析。比如华为、英特尔不同厂商的网卡只要都遵循以太网标准就能互相识别通信不用管内部实现差异。3. 网络协议初始3.1 协议分层的原因/好处【必考核心】解耦层与层之间只通过接口调用每层可独立开发、独立替换如换掉链路层协议其他层不动可维护性出问题先定位到层再进层排查可扩展性单层可演进如 IPv4→IPv6不影响其他层本质是软件工程上的高内聚、低耦合也降低了整体开发难度。3.2 同层对等通信通过「同层对等通信」的宏观逻辑抽象视角理解协议栈通信双方同层之间可以认为自己在直接通信实际数据是逐层自上而下封装、经物理介质传输、再逐层自下而上解包。比如两人通电话都觉得在直接和对方说话实际上语音数据必须经过完整的协议栈处理。3.3 TCP/IP 五层或四层模型【必考核心】联动我们本章前面学习的协议栈分层就是 TCP/IP 五层或四层模型。协议栈分层职责典型协议应用层应用程序间沟通按业务需求处理数据HTTP/HTTPS/SSH/SMTP/FTP/Telnet传输层主机间数据可靠传输TCP、UDP网络层地址管理与路由选择IP、ICMP数据链路层相邻节点间数据帧传输与识别以太网、无线 LAN物理层比特流与电 / 光 / 电磁波信号的转换传递双绞线 / 光纤 / 电磁波五层模型的数据链路层 物理层 四层模型的「网络接口层」工程面试常按五层作答。应用层处理「业务细节」其余下层处理「通信细节」。3.3.1 设备实现层级【必考核心】考察形式笔试选择高频、面试基础问答设备完整实现范围工作在哪一层即最高功能层核心特征主机传输层物理层传输层内核完整实现 TCP/IP 协议栈路由器网络层物理层网络层维护路由表跨网段转发交换机数据链路层物理层数据链路层维护 MAC 地址表网内精准转发集线器仅物理层物理层无 MAC 地址表广播式转发⚠️ 高频易错点笔试常见陷阱「交换机只包含链路层功能」实际同时包含物理层功能常规问「工作在哪一层」答最高层即可。3.4 OSI 七层模型OSIOpen System Interconnection七层模型比 TCP/IP 五层或四层模型提出时间更早。层自上而下核心功能典型协议应用层针对特定应用的协议HTTP/HTTPS/FTP/SMTP/DNS/SSH表示层数据格式转换、加密、压缩SSL/TLS、JPEG、ASCII会话层建立 / 管理 / 断开通信会话RPC、NetBIOS传输层端到端可靠传输、端口寻址TCP、UDP网络层地址管理与路由选择IP、ICMP数据链路层相邻节点间帧的传送与识别以太网、MAC物理层比特流与电 / 光信号转换双绞线、光纤记忆口诀自上而下「应表会传网数物」。3.4.1 OSI 的价值与缺陷【必考核心】✅ 优点把服务、接口、协议三个概念明确分离理论完整❌ 缺点复杂且不实用会话层、表示层难以落地到操作系统所以工程上采用 TCP/IP 模型。3.4.2 OSI 七层模型对比 TCP/IP 四层模型OSI 七层模型TCP/IP 四层模型应用层 表示层 会话层应用层传输层传输层网络层网络层数据链路层 物理层网络接口层区别OSI 理论完整但复杂不实用TCP/IP 是工程落地模型。4. 网络传输基本流程4.1 同局域网通信以太网为例【必考核心】「以太网」是最主流的一种局域网标准这里用以太网为例分析。同局域网通信的核心逻辑同一个局域网里主机之间靠网卡自带的MAC 地址互相定位数据是只发给目标主机、还是全网所有主机都收到取决于中间的组网设备集线器 / 交换机。4.1.1 MAC 寻址我们先了解什么是 MAC 地址 —— 每块网卡出厂时都带一个全球唯一的物理地址叫做MAC 地址它就是主机在局域网数据链路层的 “身份牌号”。同一个局域网里主机之间MAC 地址互相定位。接下来了解数据帧结构——以太网数据帧的头部包含源 MAC 地址标记是谁发的数据帧和目的 MAC 地址标记要发给谁。然后了解 MAC 帧匹配规则——主机网卡收到一个数据帧后提取其目的 MAC 地址与自身网卡 MAC 地址比对✅ 匹配确认是发给自己的把数据帧里的有效数据向上交给网络层❌ 不匹配不是发给自己的直接丢弃这个数据帧4.1.2 两种帧类型单播与广播【高频易错】按目的 MAC 地址区分单播帧目的 MAC 为某一具体主机地址仅目标主机会接收处理广播帧目的 MAC 为FF:FF:FF:FF:FF:FF全 1局域网内所有主机都会接收处理4.1.3 两种组网设备的转发差异【高频易错】数据是只发给目标主机、还是全网所有主机都收到取决于中间的组网设备集线器 / 交换机。场景 1集线器组网早期共享介质主机A 主机B 主机C 主机D │ │ │ │ └──────┴──────┴──────┘ 集线器共享总线原理所有主机共享同一条传输通道任何一台主机发数据信号会传遍所有端口结果局域网内所有主机底层都能收到数据靠各自网卡比对 MAC 地址筛选不是自己的就丢弃场景 2交换机组网现代主流主机A 主机B 主机C 主机D │ │ │ │ └──────┴──────┴──────┘ 交换机维护MAC地址表原理交换机内部维护MAC 地址 - 端口映射表能记住每个端口连接的主机 MAC结果数据帧只转发到目标主机对应的端口其他端口收不到⚠️ 面试坑若是普通单播帧交换机只转发到目标端口只有目的 MAC 是广播地址FF:FF:FF:FF:FF:FF时交换机才会向所有端口广播。4.2 数据跨层传输封装与分用【必考核心】数据跨层传输的核心逻辑全程依靠封装发送端加头和分用接收端剥头 分发两套动作完成这是所有网络协议通用的处理范式。4.2.1 封装发送端自上而下逐层加头发送数据时从最上层应用程序开始每向下一层协议就给数据头部加上该层的控制信息报头。协议栈层级嵌套结构封装后整体称为应用层[应用数据]传输层[TCP/UDP头][应用数据]段segment网络层[IP头][TCP/UDP头][应用数据]数据报datagram数据链路层[以太网头][IP头][TCP/UDP头][应用数据][帧尾]帧frame4.2.2 分用接收端自下而上逐层剥头分发主机接收数据帧后从最底网络层的网卡开始每向上一层协议就剥掉对应层的报头再读取报头里的「上层协议标识字段」把数据交给正确的上层协议 / 进程。面试核心考察的三级分用逻辑协议栈层级读取报头里的「上层协议标识字段」数据上交数据链路层以太网层读取以太网头的「帧类型」字段分发给上层的 IP 协议或 ARP 协议网络层IP 层读取 IP 头的「协议」字段分发给上层的 ICMP (1)、TCP (6) 或 UDP (17)传输层TCP/UDP 层读取传输层头的「端口号」字段分发给对应的应用进程4.2.3 核心概念辨析名词搭配【高频易错】各层封装后的名称严格对应笔试常考错误搭配传输层TCP/UDP层[TCP/UDP头]→ 段segment网络层IP 层[IP头]→ 数据报datagram数据链路层以太网层[以太网头]→ 帧frame✅ 正确搭配 —— TCP 段IP 数据报以太网帧 / 链路帧。报头与有效载荷【必考核心】报头对应协议层的控制字段结构体由位段实现承载寻址、控制、校验等信息完整报文 对应层报头 有效载荷上层报头在下层看来只是自身有效载荷的一部分报头与载荷的分离方法【进阶拔高】要实现分用首先要能把报头和载荷分开我们了解两种通用方式定长报头报头长度固定按固定长度切割即可比如以太网头固定 14 字节、标准 IP 头固定 20 字节标准 TCP 头固定20 字节自描述字段报头里包含长度字段动态标识报头长度4.2.4 所有协议的共性两要素【必考核心】从封装分用的逻辑可以提炼出学习任何一层网络协议都先抓两个核心点协议必须有办法分离自身的报头与有效载荷报头必须包含上层协议标识字段用于接收端分用4.3 跨网络通信路由器【必考核心】前面我们学习了同局域网通信这里我们学习跨网络通信——当通信的两台主机不在同一个局域网时仅靠交换机和 MAC 地址已经无法完成端到端寻址此时就需要路由器来实现跨网段中转。由 3.3.1 设备实现层级 可知路由器工作在网络层能识别 IP 地址并完成路由选择级联多个局域网对每个局域网而言路由器就是本网段内的一台主机。4.3.1 跨网转发的完整过程数据从源局域网 ➡ 路由器 ➡ 目标局域网路由器内部接收链路帧路由器出接口收到当前网段的以太网帧链路层解包剥掉当前网段的以太网帧头把内部的 IP 数据报上交网络层网络层选路读取 IP 数据报的目的 IP 地址若目的 IP ≠ 路由器自身出接口地址查询本地路由表确定出接口和下一跳 IP 地址链路层重新封装针对下一跳所在网段重新封装以太网帧头 —— 源 MAC 改成路由器出接口目的 MAC 改成下一跳节点下一台路由器或目标主机的 MAC 地址转发重新封装好的以太网帧从出接口发送到下一网段4.3.2 地址变化规律【高频易错 | 笔试 / 场景题核心】这是跨网通信最核心的考点我们用完整场景对比每一跳的地址变化。场景源主机 AIP192.168.2.2MACmacA➡ 路由器 R ➡ 目标主机 BIP172.168.2.2MACmacB跳转阶段帧源 MAC帧目的 MAC源 IP 地址目的 IP 地址第一跳源主机 A → 路由器 RmacAmacR路由器入口192.168.2.2172.168.2.2第二跳路由器 R → 目标主机 BmacR路由器出口macB192.168.2.2172.168.2.2源 IP、目的 IP 全程不变IP 地址是端到端的最终目标是路由选择依据源 MAC、目的 MAC 每经过一跳就变化一次MAC 地址是当前网段内的下一跳目标是链路层转发依据4.3.3 IP 层屏蔽底层差异【进阶拔高】跨网络通信中不同局域网可以是完全不同的链路标准比如以太网、令牌环、WiFi但 IP 层网络层及以上完全感知不到这些差异 —— 因为路由器会把旧链路层的帧头完全剥掉再按新链路的标准重新封装。 这就是「IP 网络」的核心含义只要上层统一使用 IP 地址底层无论是什么链路技术都能通过路由器实现互通。5. 网络中的地址管理5.1 进一步认识 IP 地址【必考核心】IPv44 字节32 位整数日常以点分十进制表示每段取值 0~255例如192.168.0.1IPv6128 位地址用于解决 IPv4 地址枯竭问题面试阶段只需记住位数即可 IP 地址核心作用唯一标识网络中的主机且 IP 地址有层次结构是路由器转发的依据。5.2 进一步认识 MAC 地址【必考核心】联动在 4.1.1 MAC 寻址 我们已经初步了解 —— MAC 地址是每块网卡自带的唯一物理地址作为主机在数据链路层的 “身份牌号”用于局域网内定位主机。本节我们进一步学习。格式总长 48 位6 字节日常通常用「十六进制数 冒号分隔」的形式表示例如08:00:27:03:fb:19特性物理网卡出厂时固化写入理论上全球唯一但虚拟机、云服务器的 MAC 地址由软件模拟生成可能出现地址冲突查看命令Linux 系统中可通过 ifconfig输出中 ether 字段后即 MAC 地址inet 字段后即 IPv4 地址或 ip addr输出中 link/ether 字段后即 MAC 地址inet 字段后即 IPv4 地址查看本机 MAC 地址和 IP 地址。5.3 IP 与 MAC 的配合 ARP【必考核心】联动在 4.3.2 地址变化规律 我们已经得到核心结论端到端传输全程源 IP、目的 IP 保持不变而源 MAC、目的 MAC 每经过一跳就更新一次。那么为什么 IP 地址、MAC 地址需要同时存在面试必考每一跳的下一跳 MAC 地址是如何获知的两套地址体系又是如何协同完成完整传输的二者分工不同分别适配不同范围的寻址场景缺一不可IP 地址负责跨网络路由具备层次结构、可修改、可规划适合大范围跨网段的路由寻址是端到端传输最终目标的依据MAC 地址负责局域网内链路层转发扁平无层次、网卡出厂固化适合链路层硬件快速转发只负责当前网段内的下一跳。ARP 协议的核心作用就是根据已知的 IP 地址解析出对应节点的 MAC 地址让两套寻址体系协同工作。ARP 工作过程同局域网场景主机 A 先查询本地 ARP 缓存表确认是否有目标 IP 对应的 MAC 地址若缓存中没有就在本网段内广播 ARP 请求目的 MAC 为广播地址FF:FF:FF:FF:FF:FF询问「谁的 IP 是 x.x.x.x」目标主机收到请求后单播回复 ARP 应答报文中携带自己的 MAC 地址双方都将对方的「IP-MAC」映射写入本地 ARP 缓存缓存条目有固定老化时间到期自动失效。那跨网络通信时 ARP 如何工作结合 4.3.2 场景源主机 AIP192.168.2.2MACmacA➡ 路由器 R ➡ 目标主机 BIP172.168.2.2MACmacB理解第一跳A→RA 判断目标 IP 跨网段在本网段 ARP 解析网关路由器 IP对应的 MAC得到路由器入口即第一跳目的 MAC。第二跳R→BR 查路由表确定出口网段在出口网段 ARP 解析目标主机 B 的 IP对应的 MAC得到 macB即第二跳目的 MAC。⚠️ 核心易错点ARP 仅在本网段内广播只能解析当前网段节点的 MAC跨网时不会直接解析最终目标主机的 MAC只会逐跳解析当前网段内下一跳节点的 MAC——这正是「MAC 地址每跳一变」的根本原因。5.4 端口号【必考核心】解决了跨主机的寻址之后数据到达目标主机还需要精准交付给对应的应用进程这就靠传输层的端口号来标识主机内的不同进程。基本概念端口号是传输层概念为 2 字节16 位整数作用是标识主机内的应用进程唯一标识「IP 端口号」可以全网唯一标识一个进程一次网络通信通过四元组{源IP, 源端口, 目的IP, 目的端口}唯一定位网络通信的本质就是跨主机的进程间通信分用逻辑数据到达主机后传输层根据端口号完成分用交付给对应进程和前文 4.2.2 节的三级分用逻辑联动。【进阶追问】为什么不用PID标识进程PID 是操作系统内部概念复用、动态变化会使网络协议与进程管理强耦合端口号是独立的网络概念可与标准服务固定绑定、支持跨主机协商且通信无需知晓对方 PID。端口范围与规则【高频易错】范围划分0~1023 为知名端口固定绑定标准服务如 HTTP 80、HTTPS 443、SSH 22、FTP 211024~65535 为动态端口客户端发起连接时由操作系统随机分配占用规则一个端口同一时间只能被一个进程绑定但一个进程可以同时绑定多个端口。5.5 网络字节序【高频易错】地址、端口号等数值信息要在网络中传输还需要统一的二进制格式约定否则不同主机的存储方式差异会导致地址解析错误这就是网络字节序。统一规定TCP/IP 协议栈规定网络数据流一律使用大端字节序低地址存储高字节发送方按内存地址从低到高依次发送数据转换逻辑小端架构的主机发送数据前必须先将主机字节序转换为网络字节序大端架构主机可原样发送转换函数头文件#include arpa/inet.hhtonl/htons主机字节序→网络字节序l 对应 32 位用于 IP 地址s 对应 16 位用于端口号ntohl/ntohs网络字节序→主机字节序。学习总结章节速览一条主线分层骨架1~3 节→ 数据流动的封装 / 分用4 节→ 三套地址体系 IP/MAC/ 端口5 节三个必背① 协议栈位置与各层职责② 封装 / 分用全流程与三级分用③ IP/MAC/ 端口各自作用与配合ARP、四元组一个实操闭环ip addr→route -n→ping 127.0.0.1/本机/网关/外网→arp -a→ss -lntp
返回列表