【Linux】网络基础 - 实践

news/2025/9/26 18:44:37/文章来源:https://www.cnblogs.com/slgkaifa/p/19114067

【Linux】网络基础 - 实践

目录

一. 计算机网络背景

二. 协议

1. 网络协议

2. OSI 七层模型

3. TCP/IP 五层模型

三. 网络传输基本流程

1. TCP/IP 协议

2. MAC 地址

3. 内容封装和分用

4. 认识 IP 地址

三. 认识端口号

1. 端口号划分

2. 端口号与进程 ID的关系

4. 理解 socket

四. 传输层的典型代表

1. TCP 协议

2. UDP 协议

五. 网络字节序

总结:


一. 计算机网络背景

在早期,计算机体积庞大价格昂贵,一台计算机仅能供少数人在固定的地点进行运用,无法进行不同设备之间的数据互通,是一座巨大的信息孤岛。在 1950 年代,美国军方和科研机构开始尝试进行“点对点连接”,将多台终端电话线连接到一台中心计算机,实现“多终端共享单机资源”,本质是“集中式连接”。到了 20 世纪初,由文顿・瑟夫(Vint Cerf)和罗伯特・卡恩(Robert Kahn)设计的TCP/IP 协议,形成了互联网雏形,TCP 主要对资料进行“打包”,IP 负责寻址和路由,由此实现了网络互通。1990 年,万维网出现,将互联网从军事领域的专业工具,变成了大众服务,提出了三大科技,URL统一资源定位符用于定位资源,HTTP 万物互联时代,就是用于传递文字图片链接等资源,HTML 可以构建可视化网络界面。再后来,就4G/5G出现让互联网从连接人,到连接物体设备等等。


在最开始进行软件开发的时候,每一台主机完成一个业务机制,开发效率低等待时间长。如下图, 业务 B 必须等待业务 A 创建完毕后才能开始进行,主机间的数据无法互相传递,这就导致开发效率极致低下。

后来,随着发展,我们开始使用终端服务器的途径,将一台主机作为终端服务器,主机 ABC 之间可以相互切换,共享数据由终端服务器进行管理,提升了开发效率

就有了路由器和交换机。这些计算机就组成了最初的局域网。就是再后来,开发主机越来越多,切换频率越来越高,我们便在其中加上一层中间层,将寻找主机切换主机的任务分离解耦出去,于

随着局域网不断增加,如何将这些一个一个的局域网连接在一起呢?按照上面的手段,我们只要求更多更大的路由器交换机即可。一个一个的局域网相连接便有了广域网。

二. 协议

协议本质是一种约定,在计算机中,协议就是对于信息传输的语法语义时序等一系列的统一规则,只有彼此之间达成了共识,我们才能搞定通信。就好比两个语言不互通的人无法进行交流,语言不互通无法知道对方想要表达的内容。

1. 网络协议

由上述可得出,计算机之间要通信,就需要有人站出来制定一个规则,大家必须遵守这个规则进行通信,于是便有了网络协议

我们用打电话的例子进行类比

我们网络通信就像是打电话,在上层通信的两人必须使用共同的语言才能进行交流,下方的设备之间也要遵循共同的设备协议才能进行通信传输,网络的层状结构将每一层进行了解耦划分,每一层遵循每一层的协议,提高了可维护性。

网络是一个层状结构,是操作系统的一部分,经过层状结构,对每一个重要部分进行解耦,各个部分各司其职,涉及到软硬件互相通信

2. OSI 七层模型

OSI 七层模型(Open Systems Interconnection Reference Model,开放系统互连参考模型)是由国际标准化组织(ISO)在 1984 年提出的网络通信分层规范,它将复杂的网络通信过程划分为 7 个独立的功能层级,每一层专注于解决特定的通信难题,通过标准化的接口建立层间协作。在 OSI 模型中,素材从发送方到接收方的传输遵循 “封装→传输→解封装” 的流程,每一层会对数据添加本层的 “头部信息”(类似快递包裹的标签)。

OSI 七层模型是理论上的理想模型,而实际互联网中广泛使用的是TCP/IP 四层模型(或简化为五层模型)。

3. TCP/IP 五层模型

TCP/IP协议是互联网核心通信协议套件,采用分层结构,每层结构负责协议特定功能,层与层之间通过接口协作,形成通信流程。下面我们就从下到上的了解每层结构

物理层:负责光/电信号的传输,通过光电信号的“频率”和“强弱”来表示数据0和1,从而达到数据传输的效果。物理层的能力决定了数据传输的最大速率最大距离抗干扰性强弱。

数据链路层:与物理硬件直接对接的一层,主要进行设备间的内容帧的传送和识别,他会将上层传下来的数据进行打包,做成数据帧。它会负责将帧进行封装发往相邻路由器,认识 MAC 地址,进行冲突控制,差错修复等问题。交换机工作在此处

网络层:负责地址管理和路由选择,决策数据的传输方向路由器工作在此处。

传输层:负责两台主机之间的数据传输,保证数据的可靠性。

应用层:负责应用程序间沟通,为用户进程提供服务,针对不同的应用将数据传输到此处后进行不同的处理。

大家用快递运输的例子来便捷理解一下这几层,我们从上到下的理解

应用层,我们确定了要寄什么物品;传输层保证我们将物品安全的送到快递站;网络层相当于快递站为我们的快递确定好运输线路怎么运输;数据链路层决定了我们的快递最后一公里怎么运输,将地址确定到我们的小区;物理层负责将快递运输出去。

三. 网络传输基础流程

我们硬件内部的东西,通信成本小,问题也少。就是在计算机的内部都是存在协议的,我们的各种硬件都会遵循着不同的协议,我们进行本地通信时,这些协议都

当我们主机之间距离变远了,网络通信就会带来新问题。

在传输的过程中,彼此的传输信号会被干扰导致数据损坏的问题,传输数据时谁来接收这份数据,怎么传输这份数据等等。

1. TCP/IP 协议

TCP/IP协议本质是一种解决方案,解决数据怎么发,发到哪,如何确保送达等问题。

IP 相当于地址的地址导航,给每一份联网的设备分配唯一一份 IP 地址,并负责在复杂网络中选择数据传输的路径。TCP 协议相当于运输保障系统,负责与收数据的对象交互确认,将数据拆分重组。

2. MAC 地址

mac 地址用来识别数据链路层中的节点;长度为 48 位,6 个字节,一般用 16 进制数字加冒号形式来表示(08:00:27:03:fb:19)

mac 地址是网络设备出厂时固化在网卡中的唯一物理标识,相当于网络中的身份证号码,用于在数据链路层识别和通信。它的核心作用就是确保在“近距离”网络中,确保素材精准传递到目标设备而不会发送给其他设备。

在以太网中,任何时刻只允许一台机器向网络中发送数据(锁使用),当同时有多台设备发送时就会产生资料干扰,我们称之为数据碰撞,所有发送主机都要进行碰撞检测和碰撞避免。发送数据时,每份主机都会受到这样一份材料,主机通过 mac 地址进行判定,该数据是否是发送给自己的,若不是发送给自己的,主机就不进行接收。

3. 数据封装和分用

明白了局域网通信原理,我们来看一个网段内两台主机发送信息的过程

数据由上层用户进行传输,进行一层一层的封装,借助硬件设备传到主机2当中,接着从下至上进行数据的解包,最后用户 B 成功的拿到了内容。

每层协议在拿到上一层打包的数据后,都会对该层素材进行报头添加;将数据传输到设备后,会将报文进行解析,一步一步的进行拆解最后上层解包拿到数据。相当于每一层都解析对应的报头,这也对应了我们上面说的层状结构的解耦

简单说,传递的数据信息就是有效载荷,经过每一层加工进行报头添加,有效载荷和报头就组成了报文。

4. 认识 IP 地址

IP 协议分两种,一个是 IPv4 另一个是 IPv6,在市面上较为常用的是 IPv4 协议。IPv6 由于与 IPv4 不兼容,迁移成本高的原因其流通速度和普及速度相对较慢。所以我们后续所讲的 IP 地址默认为 IPv4

0 - 255就是IPv4 是一个 4 字节,32位整数的地址。大家通常用“点分十进制”的字符串来表示该地址(192.168.0.1),每一个数字范围

一种长远目标就是IP 地址Mac 地址是下一阶段目标。IP 地址负责规划好起点和终点,Mac 地址负责从每一个阶段的起点和终点。

三. 认识端口号

一个2字节16位的整数,端口号用来标识进程,告诉操作系统当前数据要交给谁进行处理,就是端口号(port)是传输层协议的内容,端口号IP 地址 + 端口号 能够标识网络上某一台主机的某一个进程,一个端口号只能被一个进程所占用

1. 端口号划分

固定端口号。1024 - 65535 操作系统动态分配的端口号,用与客户端程序端口号。就是0 - 1023 知名端口号,一般

2. 端口号与进程 ID的关系

一个进程可以绑定多个端口号。就是一个端口号只能绑定一个进程,但当一个进程上有多个端口号时,后端服务器行同时监听多个端口。

4. 理解 socket

有了上面的知识我们得知,IP 地址能标识互联网中唯一一台主机,port 端口号能标识主机中唯一一个进程,那么IP + port 的形式就能标识互联网中唯一一个进程进程间通信,我们将就是,那么网络通信的本质就IP + port 的组合叫做套接字 socket

socket 的英文翻译就是插口插座的意思,类似网络通信,用插线连接起两边的插口。

四. 传输层的典型代表

1. TCP 协议

可以分片重组的。就是TCP 协议是传输层协议,是由系统调用的。它是有连接的,需要三次握手四次挥手,安全性高;它是可靠传输;面向字节流的,传输

2. UDP 协议

可靠传输;面向数据报传输,将一份一份完整的数据报进行传输就是UDP 协议也是传输层协议,由系统调用。它是无连接的,直接发送数据,速度快效率高;它不

五. 网络字节序

网络字节序时 TCP/IP 协议中规定的统一数据字节排序方式,用于解决不同计算机架构在多字节数据传输时的字节顺序冲突问题。在 TCP/IP 中统一采用大端字节序,即低地址高字节的方式。为了保证输出主机和接收主机字节序一致,我们使用体系接口进行大小端转换。

函数名功能适用场景
htons()主机字节序 → 网络字节序(16 位整数)端口号(16 位)转换
ntohs()网络字节序 → 主机字节序(16 位整数)从网络接收端口号后转换
htonl()主机字节序 → 网络字节序(32 位整数)IP 地址(32 位)转换
ntohl()网络字节序 → 主机字节序(32 位整数)从网络接收 IP 地址后转换

总结:

至此,我们已系统梳理了网络编程中的四大核心支柱 ——端口号与进程 ID 的关联逻辑、TCP 与 UDP 的传输特性差异、网络字节序的统一标准,以及常用 Socket接口的采用规范。这些概念并非孤立存在,而是相互衔接、共同支撑起网络通信的完整流程:从进程通过Socket绑定端口获取通信 “身份”,到遵循网络字节序解决跨架构数据解析难题,再根据业务需求选择TCP 的可靠传输或UDP 的实时高效,最终利用标准化的接口实现数据的发送与接收。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/918681.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

需求的系统规划 3

如何将系统的需求具体化、结构化 通过画业务流程图信息孤岛形成的原因、常用处理方式 1.人为原因:供应商不愿别人访问自己系统的数据,数据有特殊性,程序无法解读 2.编码差异:完全相同的数据,不同的软件系统采用不…

找人做网站毕业设计企信网企业信用信息系统

1.transformer的优化策略 1)GQA,减少推理过程中的KV缓存大小,增加上下文长度(KV 缓存(即 Key-Value 缓存)用于加速 Transformer 模型在推理过程中处理长序列时的计算。要减少 KV 缓存的大小) 2&…

430亿美元押注英国,Salesforce 加码 AI 投资

近日,英国与多家美国科技公司签署 “科技繁荣协议(Tech Prosperity Deal)”,宣布未来将有 430 亿美元 投入英国人工智能领域,目标是把英国打造为全球 AI 超级大国。 这笔投资是在此前 440 亿美元承诺的基础上再次…

C# 中 ref 和 out 的学习笔记

一句话搞懂区别​ref​:传进去的时候​必须有值,方法里可以改它,改完外面也能看到。 ​out​:传进去的时候​不用有值​(甚至不能有值),方法里​必须给它赋值,赋完值外面就能用。为什么需要它们? C# 默认是“…

NXP - 在MCUXpresso IDE中编译调试Smoothieware固件工程 - 思路 - 教程

NXP - 在MCUXpresso IDE中编译调试Smoothieware固件工程 - 思路 - 教程2025-09-26 18:37 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: aut…

C# 序列化三种方式

序列化是啥? 就是把一个 C# 对象(比如 Person、Order)变成一串能存文件、能发网络的“字符串”或“字节”。 反序列化就是反过来,把这串东西变回对象。 为啥要干这事?存到文件(比如保存游戏进度) 发给别的程序(…

网站标题一样高端品牌运动鞋

目录 一.简介 二.常用接口 三.实战演练 1.径向渐变 2.QSS贴图 3.开关效果 4.非互斥 一.简介 QRadioButton控件提供了一个带有文本标签的单选按钮。 QRadioButton是一个可以切换选中(checked)或未选中(unchecked)状态的选项…

织梦网站添加视频教程莱芜新闻电视台节目表

目录 1、divmod函数: 1-1、Python: 1-2、VBA: 2、相关文章: 个人主页:非风V非雨-CSDN博客 divmod函数在Python中具有广泛的应用场景,特别是在需要同时处理除法的商和余数的情况下。常见的应用场景有&a…

VMware+RockyLinux+ikuai+docker+cri-docker+k8s 自用 实践笔记(一) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

区别:Modbus RTU 和 Modbus TCP

区别:Modbus RTU 和 Modbus TCP Modbus RTU 常用函数,如下://打印数组数据 static void printArray(const QString& title, qint64 dataLen, const uint8_t* data) {QString strPrint;for (int i = 0; i < d…

记录安装机器/深度学习环境(conda、CUDA、pytorch)时的一些问题

1. 正确查看自己的CUDA版本CUDA分为两种,驱动API和运行API。 驱动API指的是显卡驱动支持的最高cuda版本,我们运行程序时用的是运行API。nvidia-smi显示的是驱动所能支持的最大运行API版本。 nvcc --version查看的是C…

详细介绍:大数据毕业设计选题推荐:基于Hadoop+Spark的全球能源消耗数据分析与可视化系统

详细介绍:大数据毕业设计选题推荐:基于Hadoop+Spark的全球能源消耗数据分析与可视化系统pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importa…

5G车载市场新格局:国产崛起,从破局者到引领者的升维之战 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

python组合类型和组合可空类型

python组合类型和组合可空类型 漫思

深入解析:自动化接口框架搭建分享-pytest

深入解析:自动化接口框架搭建分享-pytestpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

手撕深度学习之CUDA并行规约算法(上篇):硬核揭秘200%性能提升的GPU优化之道,从硬件特性到算法实现的完整进阶指南

本文为CUDA并行规约系列文章的上篇,本系列将会介绍CUDA编程的一些基础软硬件知识,然后给出7种规约算法的实现,并从硬件的角度对它们进行分析和优化,最终给出一个开箱即用的模板代码。 本文主要介绍了CUDA编程的基础…

网络运营者中国seo第一人

1、ORACLE快速遍历树 2、join基表很大&#xff0c;性能问题 转载于:https://www.cnblogs.com/stevenlii/p/8631708.html

实战需求分析

需求获取的方法 1.制作调查问卷 2.单据分析(单据时客户填写的纸质单据) 3.报表分析(报表时客户对产品的反应的各种数据的整理) 如何分析报表:使用常识判断、听客户讲解、研习客户文档、研习电子表格公式

完整教程:实战:基于 BRPC+Etcd 打造轻量级 RPC 服务——高级特性与生产环境深度实践

完整教程:实战:基于 BRPC+Etcd 打造轻量级 RPC 服务——高级特性与生产环境深度实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; …

哪里可以做网站优化网站怎么做配置文件夹

首先我们需要下载ssh&#xff0c;因为我们没有安装 sshd 命令意思是开启ssh 下载完以后要设置密码&#xff0c;我设置得是 123456 开启服务&#xff0c;查看ip 电脑连接 ssh 刚刚得ip -p 8022 后面就连接上了 我可以在这里启动我手机上的vnc