【Linux】:Linux网络协议

再识协议

上面的内容,我们只是懂了一些基本概念,还是达不到我们的目标,下面我们再次重

新理解协议和协议分层。 为什么要有 TCP/IP 协议?

• 首先,即便是单机,你的计算机内部,其实都是存在协议的,比如:其他设备和

内存通信,会有内存协议。其他设备和磁盘通信,会有磁盘相关的协议,比如:

SATA,IDE,SCSI 等。只不过我们感知不到罢了。而且这些协议都在本地主机各自

的硬件中,通信的成本、问题比较少。

其次,网络通信最大的特点就是主机之间变远了。任何通信特征的变化,一定会

带来新的问题,有问题就得解决问题,所以需要新的协议咯

所以,为什么要有 TCP/IP 协议?本质就是通信主机距离变远了

什么是 TCP/IP 协议?

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

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

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

所以究竟什么是协议?

比特就业课

比特就业课

11 / 26

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

以试试了。

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

下面,仔细看看下面的图

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

回答:答案是肯定的!因为双方都有同样的结构体类型 struct protocol。也就是说,

用同样的代码实现协议,用同样的自定义数据类型,天然就具有"共识",能够识别

对方发来的数据,这不就是约定吗?

关于协议的朴素理解:所谓协议,就是通信双方都认识的结构化的数据类型

因为协议栈是分层的,所以,每层都有双方都有协议,同层之间,互相可以认识对

方的协议。

• 网络购物,快递单的例子

网络传输基本流程

局域网网络传输流程图

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

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

• 原理类似上课

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

认识 MAC 地址

MAC 地址用来识别数据链路层中相连的节点; • 长度为 48 位, 及 6 个字节. 一般用 16 进制数字加上冒号的形式来表示(例如:

08:00:27:03:fb:19) • 在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的(虚拟机中的 mac 地

址不是真实的 mac 地址, 可能会冲突; 也有些网卡支持用户配置 mac 地址). 后面我们详细谈论数据链路层的时候,会谈 mac 帧协议,此处我们做一个了解即可。

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

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

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

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

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

mac 地址判定

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

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

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

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

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

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

• 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做

数据报 (datagram),在链路层叫做帧(frame). • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部

(header),称为封装(Encapsulation). • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是

什么等信息. • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理. 最后,在整体复盘一下:

在网络传输的过程中,数据不是直接发送给对方主机的,而是先要自定向下将数据交

付给下层协议,最后由底层发送,然后由对方主机的底层来进行接受,在自底向上进

行向上交付,下面是一张示意图。 数据包封装和分用

下图为数据封装的过程

跨网络传输流程图

网络中的地址管理 - 认识 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 网络的意义和网络通信的宏观流程

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

最底层网络的差异

相关推荐
FMsunyh5 分钟前
安装python3.10 基于ubuntu
linux·运维·ubuntu
CrazyDragon_King15 分钟前
简易屏幕共享工具-基于WebSocket
网络·websocket·网络协议
Code_Geo40 分钟前
TCP 链接与 HTTP 链接的区别
网络协议·tcp/ip·http
老家大门口的的猴子1 小时前
如何编写 Linux PCI 驱动程序
linux·服务器·驱动开发·嵌入式硬件·信息与通信
OopspoO1 小时前
Linux性能测试简介
linux·运维·性能优化
千禧年@1 小时前
Gateway服务网关
java·运维·gateway
努力成为DBA的小王1 小时前
order by语句执行顺序
linux·运维·数据库·mysql
dessler2 小时前
Docker-Harbor部署指南
linux·运维·docker
塞尔维亚大汉3 小时前
【OpenHarmony】 鸿蒙网络请求库之axios
网络协议·harmonyos·arkts
C182981825753 小时前
String str = “i“; 和 String str = new String(“i“);一样吗
运维·服务器