【Linux】网络基础

本文涉及的产品
轻量应用服务器 2vCPU 1GiB,适用于搭建电商独立站
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
轻量应用服务器 2vCPU 4GiB,适用于搭建Web应用/小程序
简介: TCP/IP五层模型是网络通信的基础框架,将复杂的数据传输过程分为物理层、数据链路层、网络层、传输层和应用层,每层各司其职,协同完成远程通信。该模型确保了不同设备和网络之间的互联互通,是现代互联网运行的核心机制。

一、TCP/IP五层模型

为什么要有TCP/IP?

单个计算机内部,硬件和硬件之间通过线路直接连接完成通信,那两台相隔长距离的计算机之间也会需要通信。


而长距离通信的数据传输,又会有以下问题:


靠什么传播?

传播到哪里(目的地)?

传到目的地之间要经过哪里?

传播过程中出现丢包(错误)?

传到了以后,怎么处理?

TCP/IP就是针对上述问题的解决长距离传输问题的解决方案!


TCP/IP五层模型是网络通信的框架(所有OS都要遵守,是标准),它将复杂的网络通信过程分为五个层次,每一层都有特定的功能。


image.png

下面用通俗易懂的方式介绍每一层的作用,并举例说明:


1. 物理层(Physical Layer)

作用:负责实际的比特流(0和1)传输,通过物理介质(如电缆、光纤、无线电波)传递信号。

例子:


就像快递员搬运包裹时使用的“交通工具”(卡车、飞机、自行车),物理层就是网络数据的“车轮”,负责把数据从A点搬到B点。

比如你家的Wi-Fi信号、网线的电流、光纤里的光脉冲都属于这一层。

2. 数据链路层(Data Link Layer)

作用:


将比特流组织成“帧”(Frame),并检查传输错误(如丢包、干扰)。

通过MAC地址(如00-1A-2B-3C-4D)在局域网内直接通信。

例子:

就像快递员在小区内送货时,根据“门牌号”(MAC地址)把包裹投递到具体的家庭。

比如你家的路由器通过Wi-Fi将数据传给手机时,就是通过MAC地址找到你的设备。

3. 网络层(Network Layer)

作用:


通过IP地址(如192.168.1.1)在不同网络之间路由数据包。

核心协议是IP(Internet Protocol)。

例子:

就像快递公司的“分拣中心”,决定包裹从北京到上海要走哪条高速公路(路由选择)。

比如你访问百度时,数据包会经过多个路由器跳转,最终到达百度的服务器。

4. 传输层(Transport Layer)

作用:


确保数据可靠传输(如TCP协议会重传丢失的数据包)或快速传输(如UDP协议)。

通过端口号(如80用于网页)区分不同应用程序。

例子:

就像快递员把包裹送到你家后,还要确认是给“爸爸”(端口443)还是“孩子”(端口80)的。

比如你刷视频(UDP)和网上付款(TCP)对可靠性的要求不同,传输层会分别处理。

5. 应用层(Application Layer)

作用:直接面向用户,提供具体的网络服务(如网页、邮件、文件传输)。

例子:


就像你使用的“快递服务内容”:网购(HTTP)、发邮件(SMTP)、视频通话(WebRTC)。

比如你打开浏览器访问网页时,用的就是HTTP协议(属于应用层)。

6. 总结:网购类比

物理层:快递卡车在路上跑。

数据链路层:卡车司机按“门牌号”(MAC地址)把包裹送到你家小区。

网络层:快递公司决定包裹从杭州到北京走哪条路线(IP地址)。

传输层:确保包裹完整送到,如果丢了就重发(TCP),或直接扔给你不管是否完整(UDP)。

应用层:你拆开包裹,看到买的是一本书(HTTP)或一件衣服(FTP)。

这样分层的好处是:每一层只需专注自己的任务,其他层的变化不会影响整体。


7. 每层所处的位置

image.png

image.png

协议


所谓协议,就是通信双方都认识的结构化的数据类型(共识)

比如一个int占4个字节,因为我们知道它占4个字节,所以我们&拿到最低字节的地址也能访问整个int,这就是一种协议!

假设在传输层定义了一个协议(结构体),传输的时候,两台主机都按这个协议标准,则 B 收到 A 发来的结构体,自然就知道里面是什么内容。


对于不同的操作系统,他们的网络协议栈一定是一样的


8. 广域网和局域网

从主机 A 传输到主机 B ,整个过程,靠的是广域网,遵循的是TCP/IP。

但是中途,从一个路由器到另一个路由器(或者从一个主机到一个路由器),靠的是局域网(局域网的标准不只一个),广域网可连接多个局域网。


二,局域网网络传输流程(以太网为例)

1. 认识MAC地址

对于每一个主机,在出厂的时候,每个网卡上都会有一个标识唯一的地址——MAC地址(不能修改)


MAC地址的特点


用来识别数据链路层中相连的节点

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

2. 局域网通信

当多个主机连接同一个以太网时,一个主机往网络里面发信息,所有主机都能收到。但是,信息中会标识接收主机的mac地址,每个主机将自己的mac地址与之比较。如果相同则处理信息,不相同则丢弃信息。

image.png

以太网有以下规定:


以太网中,任何时刻,只允许一台机器向网络中发送数据(类似:线程互斥)

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

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

比如,碰撞检测发现碰撞了,就sleep等一下发(碰撞避免)

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

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

其他局域网


无限LAN的原理和以太网相同,不过是无线。

令牌环网的原理:只允许拿着令牌的主机发(互斥锁)

3. 以两台主机通信为例

当两台主机在以太网内通信,实际上,发送信息的是协议栈的应用层。

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


image.png

image.png

数据要通过协议栈发送到网络上,(自顶向下时)每层协议都要加上一个数据首部(本协议层的报头),我们称为封装

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

数据到达目标主机以后,(自底向上时)每层协议再剥掉相应的首部(解包),根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理(分用)

image.png

  • 除了报头,剩下的叫做有效载荷
  • 报文 = 报头 + 有效载荷
  • 任何一层都只关注自己层的报头(都认为自己在和对方同层的协议直接通信,实际上是经过了自顶向下的封包和自底向上的解包和分用的)

数据封装

image.png

image.png

三,跨网络传输流程

1. 认识IP地址

IP地址是分配给连接到计算机网络的设备的唯一标识符

比如两个主机连接了同一个WIFI,则会被分配对应的IP地址(内网IP),它是设备在网络中的 “门牌号”

IP 协议有两个版本, IPv4 和 IPv6(默认指IPv4)

IPv4 来说, IP 地址是一个 4 字节, 32 位的整数。例如 192.168.0.1,用点分割的每一个数字表示一个字节, 范围是 0 - 255

我们可以把IP地址看做是“最终地址”(逻辑地址),而MAC地址是“下一站地址”(物理地址)

IP地址网络层有效,MAC地址数据链路层有效

2. 跨网络传输流程

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


以下图为例,A 的数据要通过以太网和令牌网两个不同的网才能传到B。

image.png

首先,用户 A 的数据经过层层封包到了网络层,网络层给数据加上 IP 头部

src(源IP):192.168.2.2(用户 A 的局域网 IP)

dst(目标IP):172.168.2.2(用户 B 的 IP,属于另一个网段,通过前缀判断)

然后,主机 A 网络层对比目标 IP 和自身所在的网段,发现:数据不是发给本网段主机的,必须通过路由器转发到其他网段

如果发现和自身所在网段相同,那其实就是往局域网里发

所以,网络层数据需要向下传递到数据链路层,封装MAC头部

源MAC:主机A的

目标MAC:路由器的局域网侧 MAC

接着,数据帧会通过 网卡 从主机 A 发送到 路由器(通过 MAC 地址)

路由器收到数据帧以后,会解包向上传,在网络层检查目标 IP,发现网段对应的出口是路由器的另一块网卡

于是,又会把数据往下传递到数据链路层,重新封装MAC头部

源MAC:路由器外网侧网卡的 MAC

目标MAC:主机 B 的

最后,封装后的数据帧通过路由器外网侧网卡发送,最终到达用户 B 的网卡


目录
相关文章
|
2月前
|
安全 Linux 网络安全
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
97 0
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
|
3月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
231 18
|
3月前
|
网络协议 关系型数据库 Linux
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
在App Service for Linux环境中,无法像Windows一样直接使用网络排查工具抓包。本文介绍了如何通过TCPDUMP在Linux环境下抓取网络包,包括SSH进入容器、安装tcpdump、执行抓包命令及下载分析文件的完整操作步骤。
200 5
|
4月前
|
网络协议 Linux 开发者
深入Linux中UDP网络通信机制编程探索
以上步骤概述了Linux中UDP网络通信的编程机制。在实现时,因关注细节和上下文环境可能有所调整,但大致流程是一致的。这些知识片段旨在帮助开发者快速上手Linux下的UDP编程,并提供可靠的信息作为编程的基础。在编程实践中,应结合实际业务需求,设计合适的数据传输协议,确保数据的正确性和实时性。
127 0
|
6月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
192 18
|
6月前
|
Linux 数据安全/隐私保护
使用Linux命令行接入无线网络Wi-Fi的示例。
现在,你已经使用命令行成功地连接到 Wi-Fi 网络了。这两个示例涵盖了用 `nmcli` 和 `wpa_supplicant` 连接无线网络的常见场景,让你能够不依赖图形化界面来完成这个任务。在日常使用中熟练掌握这些基本操作能增强你对 Linux 系统的理解,帮助你更有效地处理各种问题。
448 12
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
433 2
|
6月前
|
安全 Ubuntu Linux
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
216 0
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
|
8月前
|
Ubuntu Linux
Linux系统管理:服务器时间与网络时间同步技巧。
以上就是在Linux服务器上设置时间同步的方式。然而,要正确运用这些知识,需要理解其背后的工作原理:服务器根据网络中的其他机器的时间进行校对,逐步地精确自己的系统时间,就像一只犹豫不决的啮齿动物,通过观察其他啮齿动物的行为,逐渐确定自己的行为逻辑,既简单,又有趣。最后希望这个过程既能给你带来乐趣,也能提高你作为系统管理员的专业素养。
1273 20
|
8月前
|
JSON 运维 Ubuntu
Linux下如何使用Curl进行网络请求
希望这篇文章能帮助您在Linux下更好地使用Curl进行网络请求。如有疑问,请随时提问!
430 10

热门文章

最新文章

下一篇
oss云网关配置