【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 网络,屏蔽

最底层网络的差异

相关推荐
飞雪20071 小时前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
路溪非溪1 小时前
关于Linux内核中头文件问题相关总结
linux
木易双人青1 小时前
01-Docker-简介、安装与使用
运维·docker·容器
专注API从业者3 小时前
Python + 淘宝 API 开发:自动化采集商品数据的完整流程
大数据·运维·前端·数据挖掘·自动化
Lovyk4 小时前
Linux 正则表达式
linux·运维
Fireworkitte5 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9005 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char5 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
中科米堆7 小时前
中科米堆CASAIM自动化三维测量设备测量汽车壳体直径尺寸
运维·自动化·汽车·视觉检测
淮北也生橘127 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习