news 2026/4/23 21:07:50

【Linux】别只懂 “连 WiFi”:局域网通信 + TCP/IP + 跨网传输的硬核逻辑

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux】别只懂 “连 WiFi”:局域网通信 + TCP/IP + 跨网传输的硬核逻辑

一、什么是 TCP/IP 协议

TCP/IP协议的本质是一种解决方案。

TCP/IP协议能分层,前提是因为问题们本身能分层。

问题:TCP/IP协议与操作系统的关系(宏观上,怎么实现的)?

截止到目前,我们还没接触过任何协议,但是如何朴素的理解协议,我们已经可以试试了。

OS源代码一般都是用C/C++语言写的。

问题:主机B能识别data,并且准确提取a=10, b=20, c=30 吗?

答:答案是肯定的!因为双方都有同样的结构体类型struct protocol。也就是说,用同样的代码实现协议,用同样的自定义数据类型,天然就具有”共识“,能够识别对方发来的数据,这不就是约定吗?

关于协议的朴素理解:所谓协议,就是通信双方都认识的结构化的数据类型,因为协议栈是分层的,所以,每层都有双方都有协议,同层之间,互相可以认识对方的协议。

二、局域网(以太网为例)通信原理

首先回答,两台主机在同一个局域网,是否能够直接通信?

答:是的

原理类似上课,老师在讲台上喊李四,所有同学的都能听到老师叫李四,然后只有李四回答老师,其他同学屏蔽这个消息。那么每个人都有名字,名字是在教室里面是唯一性的,所以老师喊李四,只有李四回答。

每台主机在局域网上,要有唯一的标识来保证主机的唯一性:mac地址。

1)认识 MAC 地址

MAC地址用来识别数据链路层中相连的节点;

长度为 48 比特位,即6个字节,一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)。

MAC 地址在网卡出厂时就确定了,不能修改。mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址,可能会冲突;也有些网卡支持用户配置mac地址)

windows>ipconfig /all

以太网中,任何时刻,只允许一台机器向网络中发送数据。

如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞。

所有发送数据的主机要进行碰撞检测和碰撞避免。

没有交换机的情况下,一个以太网就是一个碰撞域。

局域网通信的过程中,主机对收到的报文确认是否是发给自己的,是通过目标mac地址判定。

这里可以试着从系统角度来理解局域网通信原理。

初步明白了局域网通信原理,再来看同一个网段内的两台主机进行发送消息的过程。

而其中每层都有协议,所以当我进行进行上述传输流程的时候,要进行封装和解包。

报头部分,就是对应协议层的结构体字段,我们一般叫做报头。

除了报头,剩下的叫做有效载荷。

故,报文=报头+有效载荷。

然后,我们在明确一下不同层的完整报文的叫法:

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。

应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。

首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。

数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的“上层协议字段” 将数据交给对应的上层协议处理。

两台计算机通过TCP/IP协议通讯的过程如下所示:

TCP/IP通讯过程:

在网络传输的过程中,数据不是直接发送给对方主机的,而是先要自定向下将数据交付给下层协议,最后由底层发送,然后由对方主机的底层来进行接受,在自底向上进行向上交付,下面是一张示意图。

数据包封装和分用:

下图为数据封装的过程:

下图为数据分用的过程:

三、跨网络传输流程图

网络中的地址管理-认识IP地址:

IP协议有两个版本,IPv4 和 IPv6,本博客中凡是提到IP协议,没有特殊说明的,默认都是指IPv4。

IP 协议中,用来标识网络中不同主机的地址;

IP地址是在对于IPv4来说,IP|地址是一个4字节,32位的整数;

我们通常也使用"点分十进制"的字符串表示IP地址,例如192.168.0.1,用点分割的每一个,数字表示一个字节,范围是0 - 255;

跨网段的主机的数据传输,数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。

下面是一张示意图:

首先理解一下IP地址的意义:

为什么要去目标主机,先要走路由器?

目的IP的意义。

然后结合封装与解包,体现路由器解包和重新封装的特点:

对比 IP 地址和 Mac 地址的区别:

IP地址在整个路由过程中,一直不变。

Mac地址一直在变。

示例:我的目的:从广西去北京,这个在 IP 地址,而我从广西,到贵州,到河北,到石家庄等这个不断变化的地址就是 MAC 地址。

目的IP是一种长远目标,Mac是下一阶段目标,目的IP是路径选择的重要依据,mac地址是局域网转发的重要依据。

提炼IP网络的意义和网络通信的宏观流程:

IP网络层存在的意义:提供网络虚拟层,让世界的所有网络都是 IP网络,屏蔽最底层网络的差异。


未完待续!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 6:27:14

WorkshopDL:无需Steam客户端的创意工坊模组下载终极方案

WorkshopDL:无需Steam客户端的创意工坊模组下载终极方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为无法访问Steam创意工坊而烦恼?WorkshopDL…

作者头像 李华
网站建设 2026/4/23 7:55:54

ResNet18物体识别实战:从环境配置到WebUI部署详细步骤

ResNet18物体识别实战:从环境配置到WebUI部署详细步骤 1. 引言:通用物体识别的工程价值与ResNet-18优势 1.1 为什么选择通用图像分类? 在AI应用落地过程中,通用物体识别是构建智能视觉系统的基础能力。无论是内容审核、智能相册…

作者头像 李华
网站建设 2026/4/22 22:06:19

空洞骑士模组管理终极指南:Scarab管理器完整教程

空洞骑士模组管理终极指南:Scarab管理器完整教程 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab Scarab是一款专为《空洞骑士》设计的现代化模组管理器&#xff0c…

作者头像 李华
网站建设 2026/4/23 7:55:31

R3nzSkin游戏换肤工具终极使用指南

R3nzSkin游戏换肤工具终极使用指南 【免费下载链接】R3nzSkin Skin changer for League of Legends (LOL).Everyone is welcome to help improve it. 项目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin 在追求个性化游戏体验的时代,R3nzSkin作为一款基…

作者头像 李华
网站建设 2026/4/23 7:54:35

G-Helper:华硕笔记本用户的终极性能调校神器

G-Helper:华硕笔记本用户的终极性能调校神器 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: https:…

作者头像 李华
网站建设 2026/4/23 7:54:31

ResNet18优化教程:减少模型加载时间的技巧

ResNet18优化教程:减少模型加载时间的技巧 1. 背景与挑战:通用物体识别中的ResNet-18 在现代AI应用中,通用物体识别是计算机视觉的基础能力之一。基于ImageNet预训练的ResNet-18模型因其结构简洁、精度稳定和推理高效,成为边缘设…

作者头像 李华