【Linux网络与网络编程】01.初识网络

发布于:2025-03-31 ⋅ 阅读:(33) ⋅ 点赞:(0)

一、计算机网络的发展历史

计算机是人的工具,人要协同工作,注定了网络的产生是必然的。

二、协议

计算机之间的传输媒介是光信号和电信号,通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息,要想传递各种不同的信息就需要约定好双方的数据格式。

那么只要通信的两台主机约定好协议就可以了吗? 定好协议,但是你用频率表示 01,我用强弱表示 01,就好比我用中国话,你用葡萄牙语一样,虽然大家可能遵守的一套通信规则,但是语言不同,即是订好了基本的协议,也是无法正常通信的。

所以,完善的协议,需要更多更细致的规定,并让参与的人(计算机生产厂商;计算机操作系统;计算机网络硬件设备)都要遵守。

如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来,约定一个共同的标准让大家都来遵守,这就是 网络协议。

2.1  对协议的宏观认识

2.1.1 协议分层

在上面这个例子中我们可以看到分成了两层:语言层和设备通信层。

我们从今后看待协议要有两种视角:

视角1(小白视角):同层协议是直接通信

视角2(工程视角):同层协议不是直接通信

2.1.2 OSI七层模型

OSI七层网络模型称为开放式系统互联参考模型,它是一个逻辑上的定义和规范。把网络从逻辑上分为了7 层,每一层都有相关、相对应的物理设备,比如:路由器,交换机。OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输,它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚, 理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,但是它既复杂又不实用。

其实在网络角度,OSI 定的协议 7 层模型其实非常完善,但是在实际操作的过程中,会话层、表示层是不可能接入到操作系统中的,所以在工程实践中最终落地的是 5 层协议。 

2.1.3 TCP/IP五层模型

TCP/IP 是一组协议的代名词,它包括许多协议共同组成了 TCP/IP 协议簇。TCP/IP通讯协议采用了5 层的层级结构,每一层都唿叫它的下一层所提供的网络来完成自己的需求。

2.2 对TCP/IP协议簇的认识

2.2.1 为什么要有TCP/IP协议?

• 首先,即便是单机,你的计算机内部其实都是存在协议的,比如:其他设备和内存通信会有内存协议。其他设备和磁盘通信会有磁盘相关的协议,比如: SATA,IDE,SCSI 等。只不过我们感知不到罢了。而且这些协议都在本地主机各自的硬件中,通信的成本、问题比较少。

• 其次,网络通信最大的特点就是主机之间变远了。任何通信特征的变化,一定会带来新的问题,有问题就得解决问题,所以需要新的协议

所以,为什么要有 TCP/IP 协议?本质就是通信主机距离变远了,会产生各种的问题,而这些问题的解决方案就是TCP/IP协议。

2.2.2 为什么TCP/IP协议会分层?

从上图中提出的4个问题可以看出:问题1对应的是链路传输层,问题2对应的是网络层,问题3对应的是传输层,问题4对应的是应用层。所以TCP/IP协议能分层的前提是这些问题本身是能分层的。

2.3 对协议的深层次理解

2.3.1 网络与操作系统的关系

网卡是硬件的一部分,操作系统要对它进行管理,所以相应的操作系统要实现网络的相关功能。可以理解为网络是操作系统内部的一个模块,但是这个模块在所有的操作系统上是相同的。

2.3.2 协议到底是什么?

由2.3.1可知,操作系统内部可能存在着大量的协议,操作系统自然要对这些协议通过先描述后组织进行管理,故而协议就是两个操作系统直接为了通信而约定出来的结构体。操作系统是C语言写的,所以TCP/IP网络协议也是用C语言写的。

三、网络传输的基本流程

3.1 局域网(以以太网为例)网络的传输流程

3.1.1 局域网通信原理

首先要明确一点:两台主机在同一个局域网,是能够直接通信的。 (原理类似上课)

以太网中,任何时刻都只允许一台机器向网络中发送数据,如果有多台同时发送的话,会发生数据干扰,我们称之为数据碰撞。所有发送数据的主机要进行碰撞检测和碰撞避免。在没有交换机的情况下,一个以太网就是一个碰撞域。局域网通信的过程中,主机对收到的报文确认是否是发给自己的,是通过目标MAC地址判定。

3.1.2 认识MAC地址

MAC 地址用来识别数据链路层中相连的节点,长度为 48 位(6 个字节),一般用 16 进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)。它在网卡出厂时就确定了,是不能修改的。MAC地址通常是唯一的(虚拟机中的MAC地址不是真实的MAC地址,可能会冲突;也有些网卡支持用户配置MAC地址)。

查看MAC地址:

Linux       下使用 ifconfig

Windows 下使用 ipconfig /all

3.1.3 局域网网络传输流程图

而其中每层都有协议,所以当我进行进行上述传输流程的时候,要进行封装和解包与分用。

明确一下概念:

1. 报文

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

• 报文 = 报头 + 有效载荷

2. 封装和分用

3.2 跨网络传输流程

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

3.2.1 认识IP地址

IP 协议有两个版本:IPv4 和 IPv6。

IP地址是在IP协议中用来标识网络中不同主机的地址。对于 IPv4 来说,IP 地址是一个 4 字节32 位的整数;我们通常也使用 "点分十进制" 的字符串表示 IP 地址,例如 192.168.0.1 ;用点分割的每一个数字表示一个字节,范围是 0 - 255。

MAC地址 VS IP地址

MAC地址是局域网中的唯一标识符,而IP地址是网络逻辑层的通信标识。在数据传输过程中,是根据目的IP进行路由的,MAC地址是会变化的,而IP地址是一直不变的。

为了加深我们的理解,请看这张示意图: 

为什么要去目标主机,先要走路由器?

在任何主机看来,路由器也是一台主机。当主机间进行跨网络通信时,源主机会将数据交给路由器,再由路由器将数据交给目标主机,这可以使得每台主机都是在局域网中工作的。

因此我们可以断定路由器上一定是存在着不同局域网的驱动程序的。

这样的话我们就可以理解了MAC地址和IP地址了。目的 IP 是一种长远目标,Mac 是下一阶段目标,目的 IP 是路径选择的重要依 据,mac 地址是局域网转发的重要依据。

3.2.2 跨网络传输流程图

示意图:

 网络通信的宏观流程:

每台主机都有网络层,故而都有路由的功能,发送数据的地址经由自己的判断时局域网内路由还是教育路由器进行跨网传输。 

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


网站公告

今日签到

点亮在社区的每一天
去签到