【Linux】网络基础

一、TCP/IP五层模型
为什么要有TCP/IP?
单个计算机内部,硬件和硬件之间通过线路直接连接完成通信,那两台相隔长距离的计算机之间也会需要通信。

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

靠什么传播?
传播到哪里(目的地)?
传到目的地之间要经过哪里?
传播过程中出现丢包(错误)?
传到了以后,怎么处理?
TCP/IP就是针对上述问题的解决长距离传输问题的解决方案!

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

 

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

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. 每层所处的位置

 

协议

所谓协议,就是通信双方都认识的结构化的数据类型(共识)
比如一个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地址与之比较。如果相同则处理信息,不相同则丢弃信息。

 

以太网有以下规定:

以太网中,任何时刻,只允许一台机器向网络中发送数据(类似:线程互斥)
如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞
所有发送数据的主机要进行碰撞检测和碰撞避免
比如,碰撞检测发现碰撞了,就sleep等一下发(碰撞避免)
没有交换机的情况下,一个以太网就是一个碰撞域
局域网通信的过程中,主机对收到的报文确认是否是发给自己的,是通过目标mac地址判定
其他局域网

无限LAN的原理和以太网相同,不过是无线。
令牌环网的原理:只允许拿着令牌的主机发(互斥锁)
3. 以两台主机通信为例
当两台主机在以太网内通信,实际上,发送信息的是协议栈的应用层。
在网络传输的过程中,数据不是直接发送给对方主机的,而是先要自定向下将数据交付给下层协议,最后由底层发送,然后由对方主机的底层来进行接受,在自底向上进行向上交付

数据要通过协议栈发送到网络上,(自顶向下时)每层协议都要加上一个数据首部(本协议层的报头),我们称为封装
首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息
数据到达目标主机以后,(自底向上时)每层协议再剥掉相应的首部(解包),根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理(分用)

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

数据解包

三,跨网络传输流程
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。

首先,用户 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 的网卡
我们可以发现:目的 IP 是一种长远目标,Mac 是下一阶段目标,目的 IP 是路径选择的重要依据,mac 地址是局域网转发的重要依据

网络通信宏观流程。
————————————————
版权声明:本文为CSDN博主「愚润泽」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tan_run/article/details/148472524

阅读剩余
THE END