【Linux】网络基础

目录

前言

计算机网络背景

网络的发展

认识“协议”

网络协议初识

协议分层

OSI七层模型

TCP/IP五层模型

网络传输的基本流程

网络传输流程图

数据包封装和解包 

网络中的地址管理

ip地址和mac地址


前言

        本文章主要是对Linux网络部分的一些基础概念的认知,包括网络的整体框架结构,以及了解网络传输的基本流程,理解OSI七层模型和TCP/IP五层模型。

        本文基础概念比较多,主要是介绍和认识一些网络知识部分相关的概念,后面我们会对每一个模块进行单独和详细的讲解。


计算机网络背景

网络的发展

        刚开始出现计算机时,是没有网络的,所以我们可以说此时计算机之间是相互独立的。

        独立模式: 计算机之间相互独立,例如下面这张图:

【Linux】网络基础_第1张图片

         假设小松要录入数据,小竹要对小松录入的数据做处理,晓梅要那处理好的数据做可视化处理等。但是当小松录完数据时,由于计算机间是相互独立的,所以需要把这些数据单独拿出来存放到光盘或磁盘上,然后由小竹和小松分别对这些数据处理;而且在小松处理期间,小竹和小梅一直处于等待状态。


        随着计算机网络的发展,便出现了服务器,可以将3台计算机连接起来,将数据放在服务器上,这样当小松处理完数据时,小竹和小梅就直接可以从对应服务器上拿到数据了,而不用再单独的从一个电脑上取到外部,然后再读取到另外一个电脑上了。

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

【Linux】网络基础_第2张图片


局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起

【Linux】网络基础_第3张图片


随着计算机的数量剧增,不同的地区间想要完成通信,必许许多多的局域网LAN也连接在一起,才能组成一个更大的网络,叫做广域网WAN

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

【Linux】网络基础_第4张图片

  所谓 "局域网" 和 "广域网" 只是一个相对的概念. 比如, 我们的广域网, 也可以看做一个比较大的局域网.

认识“协议”

协议是一种约定。

        先举个简单的协议例子,在80、90年代,打个电话话费很贵,而如果打不通电话,则不会收费,于是假设当时在大学开学前,你拿着一部电话,提前和你爸爸约好了协议:说“爸,我给你打电话你不要接,每个月我会给你打电话,如果电话 响一声就说明我还好,如果电话响了两次说明我需要生活费了,响了三次我们就放假了,来接我吧”。这样 当你月底没生活费的时候,你就给老爸打了一次电话,然后挂掉,然后又打了一次电话,你爸看到后,知道了你却生活费了,于是就给你转过去了,这便是一个简单的协议.

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

【Linux】网络基础_第5张图片

那么还有一个问题:只要通信的的两台主机,约定好协议就可以正常通信了吗

        答案是否定的,假设你和一个外国人交流,你们约定好了说1是去吃饭,2是去学习,3是去锻炼。但是你们说这些数字的方式也不一样,比如你想去学习,你说一,他说one,这样还是相互之间无法通信。

        计算机生产厂商有很多;计算机操作系统, 也有很多;计算机网络硬件设备, 还是有很多

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

网络协议初识

协议分层

        协议分层是计算机网络中的一种设计原则,用于将网络通信功能分解为多个逻辑层次,每个层次负责特定的任务和功能。每个层次都建立在下一层的基础上,形成一个协议栈或协议堆栈。这种分层的设计使得网络通信的开发、管理和维护更加容易和可靠.

        通常采用的分层模型是 OSI参考模型和 TCP/IP协议族。

  • 协议本质就是软件,软件是可以"分层"的
  • 协议在设计的时候,就是被层状划分的,因为a.场景复杂 b.将功能解耦,便于人们进行各种维护。(例如电话除了问题,不是人有问题,所以只需要改电话中的bug就可以,如果放在一起,就需要动很多地方,复杂.)

例如这个简单的例子:

【Linux】网络基础_第6张图片

         人与人之间是一层,需要遵守同一套协议,汉语协议也好,英语协议也罢,最起码保证通信双方的遵守的语言协议是一样的

        电话和电话之间,也是需要遵循一套相同协议,便于将我们的语音编码发送给对方,然后对方按照相同的协议解码再放出语音。同样地,无线电和无线电之间也有一套相同的协议.

        在这个例子中, 我们的协议只有两层; 但是实际的网络通信会更加复杂, 需要分更多的层次.
分层最大的好处在于 "封装" . 面向对象例子


OSI七层模型

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

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

【Linux】网络基础_第7张图片

【Linux】网络基础_第8张图片

 其中1-4层和TCP/IP协议簇是完全一样的,严格按照OSI的标准来的,但是5-8层被压缩成了一层:应用层,所以才有了TCP/IP五层模型.

总结一下:

网络通信范畴有以下几个问题以及是哪一层处理的:

0.如何处理数据                                                                                 ------应用层

1.丢包(对方可能收不到或丢失我发的信息)                                       ------传输层

2.定位问题(如何确定目标主机是谁)                                                  ------网络层

3.解决下一跳主机的问题(假设距离很远,需要多个路由器转发,如何知道下一个路由器在哪里)           ------数据链路层

4.物理层


TCP/IP五层模型

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

这是各个层的作用:

  • 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
  • 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
  • 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
  • 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
  • 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层.

七层OSI与TCP/IP分层模型区别如下:

【Linux】网络基础_第9张图片

网络传输的基本流程

网络传输流程图

【Linux】网络基础_第10张图片

首先要说的是:局域网中两台主机是可以直接通信的.

 在逻辑,是应用层直接把数据给了服务器。

但在物理,必须先自顶向下先把数据发送到链路层,然后经过传输以后,再自底向上地把数据传输给应用层.

        最下面那段以太网可以理解为是一条网线.

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

【Linux】网络基础_第11张图片


数据包封装和解包 

在传输的时候我们要知道:每层都有自己的协议定制方案.

每层协议都要有自己的协议报头.

从上到下交付数据的时候,要添加报头.

从下到上递交数据的时候,要去掉报头.

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部,称为封装。这个数据首部便叫做报头。 所以封装的本质:添加报头
  • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理、也叫做解包

所以下面是封装的过程,每层协议都要加上一个数据首部:

【Linux】网络基础_第12张图片

等传输到 对方后,再将这个顺序逆过来,每次拆除相应的报头并展开分析,最后将应用数据传送给对方.这便完成了解包的过程

这里会有两个问题:1.报文是要被封装的,如何解包?

2.我们怎么知道将有效载荷交付给上层的哪一个协议?

以上两个问题是每一层协议都要考虑的.

        这里先大致说一下,就是主要是由报头解决的。1.至于如何解包,可以有定长报头,然后取出指定长度的报头,然后读取其中的数据,便完成了解包。2.报头中也一定含有交付给上层哪一个协议的数据。

网络中的地址管理

ip地址和mac地址

ip地址

        IP地址(Internet Protocol Address)是在网络上用于唯一标识设备地址。它是由32位(IPv4)或128位(IPv6)的二进制数字组成,用于定位和识别网络中的设备。IP地址可以被视为一个设备在互联网上的住所,类似于房间号,用于在网络上进行通信和数据传输。

mac地址

MAC地址(Media Access Control Address)是物理硬件设备(如网卡)的唯一标识符。它是由48位二进制数字组成,通常被表示为六个十六进制数对(例如00:1A:2B:3C:4D:5E)。

MAC地址用来识别数据链路层中相连的节点。

ip地址和mac地址区别:

        我们可以理解为ip地址就是最终目的地,它是一直不变的,而mac地址就相当于是中转站,源ip和目的ip都在不断的变化.

        就比如从保定到天津,需要先从保定站到徐水站,此时我们源ip是保定,目的ip是天津,源mac是保定,目的mac是徐水,到了徐水后,下一站是白沟站,源ip和目的ip不变,依然是保定和天津,但源mac地址是徐水站,目的mac是白沟站,然后经过不断的中转,就到了目的地。

  • 功能:IP地址用于在互联网上定位和识别设备,使它们能够进行通信和数据交换。而MAC地址主要用于本地网络中物理设备之间的通信
  • 唯一性:在互联网上,每个设备都必须有一个唯一的IP地址来确保正确地路由数据。而MAC地址在本地网络范围内是唯一的,但在不同的局域网之间可能会有相同的MAC地址。
  • 格式:IP地址是一个全球标准的数字格式,可以根据IPv4或IPv6的规范来表示。而MAC地址是一个局部标准的十六进制格式,通常由六组十六进制数对组成
  • 使用范围:IP地址是用于跨网络进行通信的地址,它使得设备可以在全球范围内相互通信。而MAC地址在本地网络中使用,只在局域网内部起作用。

你可能感兴趣的:(网络,linux,协议)