Linux-网络基础

1. 网络发展的历史

  1. 独立模式:计算机之间互相独立。

  2. 网络互联:多台计算机连接在一起,完成数据共享。

  3. 局域网:计算机数量更多了,凭借交换机和路由器连接在一起。

  4. 广域网:将远隔千里的计算机都连在一起。

2. 什么是协议?

2.1 概念

协议就是一种约定

一个比喻:想象一下你和另一个人打电话

  1. 建立连接:你第一要求拨打对方的号码,对方接听,你们会说喂?。这是一种连接协议——双方确认通信渠道已建立。

  2. 约定语言:你们必须运用同一种语言(比如中文或英语)。如果一个人说中文,另一个人说法语,沟通就会失败。这是一种语法和编码协议

  3. 遵守规则:你们会轮流说话,而不是同时抢话。当一个人说完,可能会问你觉得呢?来表示轮到对方发言。这是一种对话时序和控制协议

  4. 确认理解:在听到重要信息后,你可能会说我明白了或请再重复一遍。这是一种错误确认和纠正协议

  5. 结束通话:通话结束时,你们会说再见,之后挂断。这是一种连接终止协议

这一整套为了搞定有效沟通而预先设定好的规则和约定,就是协议。而完善的协议,并不是两个人约定好即可,而是还需要更多的支持(比如手机、座机这类硬件等)。

所以,计算机也是如此。大家共同遵守的就是网络协议

  • 计算机生产的厂商需要支持。

  • 计算机各个操作系统需要支持。

  • 计算机网络硬件设备需要协助。

而协议在设计上为了更好的进行模块化,解耦合,被设计为层状结构。

2.2 OSI七层模型

  • OSI(Open System Interconnection,开放系统互联)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。

  • 把网络从逻辑上分为了 7层,每一层都有相关、相对应的物理设备,比如路由器、交换机。

  • OSI是一个理论模型,非常完美和严谨,常作为教学工具来帮助人们理解网络通信。

  • TCP/IP模型是互联网实际使用的协议族,它源于实践,更为简洁,只有四层。

分层名称功能
应用层针对特定应用的协议
表示层设备固有数据格式和网络标准数据格式的转换
会话层通信管理,负责建立和断开通信连接
传输层管理两个节点之间的数据传输,负责可靠传输(确保数据被可靠的传送到目标地址)
网络层地址管理和路由选择
数据链路层互连设备之间传送和识别数据帧
物理层以0、1代表电压的高低、灯光的闪灭。界定连接器和网线的规格

2.3 TCP/IP四层模型

  • 数据链路层::负责设备之间的素材帧的传送和识别,例如⽹卡设备的驱动、帧同步(就是说从⽹线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就⾃动重发)、数据差错校验等⼯作。有以太⽹、令牌环⽹,无线LAN等标准.。交换机(Switch)⼯作在数据链路层。

  • ⽹络层:负责地址管理和路由选择.。例如在IP协议中, 通过IP地址来标识⼀台主机, 并通过路由表的⽅式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)⼯作在⽹路层。

  • 传输层:负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到⽬标主机。

  • 应⽤层:负责应⽤程序间沟通,如简便电⼦邮件传输(SMTP)、⽂件传输协议(FTP)、⽹络远程访问协议(Telnet)等。

在这里插入图片描述

  • 大家从短距离通信到长距离通信,一定会引发新的障碍:

    • 倘若处理数据?

    • 数据丢了怎么办?

    • 怎么定位目标主机问题?

    • 怎么消除当下要去哪里的问题?

  • 而有问题,就一定要有解决问题的方案,而TCP/IP协议,本质是一种长距离通信的解决方案的代表。

  • 分层去解决的。就是因为有不同种类和不同性质的疑问,所以OSI也

  • TCP是传输层的代表协议,IP是网络层的代表协议。传输层和网络层是在操作系统内部实现的,由于协议的约定,所以不同的操作系统大家也必须遵守。而TCP和IP是核心,因此就把协议整体统称为TCP/IP。

  • 而操作系统之间为了建立共识,不同的OS之间实现传输层和网络层的代码是一致的,Linux中使用的是 struct protocol 中有某些字段,那么 Windows 中也一定存在同类型的结构和同类型的字段名。通信双方应用相同的结构化的数据类型。就是关于协议在操作系统上(传输层和网络层)理解就

3. 网络传输的基本流程

3.1 局域网传输

因为网络的发展是从局部到整体的,所以最初衍生出来许多局域网的通信方案。

  • 以太网。

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

    • 如果有多台同时发送,会发生材料干扰,称为数据碰撞。

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

    • 没有交换机的情况下,⼀个以太⽹就是⼀个碰撞域。

    • 通过⽬标mac地址判定。就是局域⽹通信的过程中,主机对收到的报⽂确认是否是发给⾃⼰的,

    • 以太网是需要用线连着。

  • 令牌环网。

    • 令牌环就是拿到令牌的时候才能发送数据,因为有数据碰撞的挑战存在。
  • 无线LAN(WiFi)。

    • 可以理解为无线的以太网。

3.2 认识MAC地址

  • MAC地址用来识别素材链路层中相连的节点。

  • ⻓度为 48 个⽐特位,即 6 个字节,⼀般⽤ 16 进制数字加上冒号的形式来表⽰。(例如:08:00:27:03:fb:19)。

  • 在⽹卡出⼚时就确定了,不能修改。mac地址通常是全球唯⼀的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突;也有些⽹卡⽀持⽤⼾设置mac地址)。

3.3 封装与解包和分用的过程

在这里插入图片描述

  • 封装的过程,其实也就是入栈的过程;解包的过程其实就是出栈的过程。所以叫做协议栈

  • 报头部分,就是对应协议层的结构体字段,除了报头,剩下的叫做有效载荷,报文 = 报头 + 有效载荷。

  • 不同协议层对数据包有不同的称谓。

    • 应用层:请求与应答。

    • 传输层:数据段。

    • 网络层:信息报。

    • 数据链路层:数据帧。

  • 封装就是添加报头,解包就是分离报头,分用就是告诉上层,这个数据包是发送上层的哪个具体协议的。

  • 看待网络需要分为两种不同的视角

    • 用户视角: 同层之间相互通信

    • 工程师视角:每一次的通信都必须贯穿协议栈

      • 为什么需要自定向下封装/为什么需要贯穿协议栈,因为操作系统是硬件的(网卡管理者)。

3.4 认识IP地址

  • IP 地址是在 IP 协议中, ⽤来标识⽹络中不同主机的地址。

  • 对于 IPv4 来说, IP 地址是⼀个 4 字节, 32 位的整数。

  • 我们通常也使⽤点分⼗进制的字符串表⽰ IP 地址,例如 192.168.0.1,⽤点分割的每⼀个数字表⽰⼀个字节, 范围是 0 - 255

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

3.5 MAC地址和IP地址的区别

  • 源IP,目的IP:从哪来,到哪去

  • 源MAC,目的MAC:上一站从哪来,下一站到哪去

  • 解耦合与软件抽象:

    • 局域网之间的传输有不同的通信方案,而网络层的IP实际是封装的一层软件层,来屏蔽底层的差异化,也就是说无论底层使用的以太网还是无线LAN,上层只关心IP地址。

    • 解耦合体现在逻辑中的IP地址与物理硬件中的MAC地址分离了。

MAC就好像身份证号,IP就好比学号,都代表一个人的唯一性,但互不干扰,互不影响。

3.6 跨网络传输

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

  • 路由器内置了两张网卡管理两个不同的网段。

  • 因为管理两个网段,可能不同网段之间采用不同的局域网通信,所以路由器通过集成多种网络接口与驱动,实现了以太网、令牌环等之间协议转换与互联。

  • 主机发送数据时,可能通过计算知道当前数据是否发送给当前局域网内。

在这里插入图片描述