【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(上)

简介: 【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(上)

一、计算机网络的发展背景

1、网络的定义

网络是指将多个计算机或设备通过通信线路、传输协议和网络设备连接起来,形成一个相互通信和共享资源的系统


(1) 独立模式

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


(2)网络互联

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

在没有网络的时候,数据也可以进行传输,可以通过使用数据线将两台设备(如计算机、手机或存储设备)直接连接在一起,从而实现数据传输。或者可以通过使用磁带或光盘等媒介来进行数据传输,不过这样传输的成本会比较高。


2、局域网 LAN

相对于广域网 WAN 而言,局域网 LAN 主要是指在相对较小的范围内的计算机互联网络。这个 “小范围” 可以是覆盖一个宿舍,一个办公楼、一所学校等。

局域网的主要特点是:传输速度快、延迟低,并且用于连接同一组织内部的计算机和设备。例如,一家公司内部的多台电脑通过路由器或交换机连接在一起形成的网络就是局域网


3、广域网 WAN

广域网 WAN 就是我们通常所说的 Internet,是指跨越较大地理范围的计算机网络,它通常由多个局域网或城域网互相连接而成,是一个遍及全世界的网络,将远隔千里的计算机都连在一起。广域网可以覆盖多个城市、省份甚至国家之间的分支机构或办公地点,并且利用互联网等公共网络进行数据传输。广域网允许远程地点的计算机和用户之间实现高速、可靠的连接,以满足远程办公、数据共享和协作等需求。


4、比较局域网和广域网

  • 公网、外网,即广域网(WAN)
  • 私网、内网,即局域网(LAN)
如何区分它们二者呢?

所谓局域网” 广域网” 只是一个相对的概念。比如, 我们有天朝特色” 的广域网,也可以看做一个比较大的局域网。如果硬要区分的话可以看路由器,如果没有路由器就是局域网,需要路由器横跨就是广域网。


5、扩展 —— 域域网和互联网

城域网 MAN:城域网是指连接位于同一个城市或者地理范围内的不同机构、公司或校园网络的计算机网络。城域网的覆盖范围比局域网要广,它可以通过光纤、无线电或其他传输介质来连接各个网络设施。城域网的主要特点是传输距离较长,覆盖范围广,一般用于满足互联网接入的需求或者连接企事业单位之间的网络通信。

互联网 Internet:互联网是指全球范围内相互连接的计算机网络。它由无数的局域网、城域网以及广域网组成,通过标准化的通信协议进行数据交换和共享。互联网使得全球各地的计算机和用户能够相互通信、共享信息和资源。它提供了丰富的服务和应用,包括电子邮件、万维网(World Wide Web)、文件传输、远程登录和即时通信等。作为全球最大的计算机网络,互联网已经成为现代社会中不可或缺的一部分。

通过网络,用户可以与他人进行远程通信、获取信息、共享文件和资源等。网络基础设施包括网络协议、路由器、交换机、光纤等技术和设备,它们协同工作以确保数据能够在不同计算机之间传输和交换。


二、协议

1、协议的概念

“协议” 是一种约定。协议是指多方之间达成的一种约定或规定,用于指导各方在特定情况下的行为和相互之间的关系。在网络中,为了确保数据传输的有效性、互联互通、统一标准、安全性和资源管理,网络也有属于自己的协议。

高三住校,我打算和父亲用座机联系来表示我想表达的意思,因为用座机接电话会花钱,所以我们就想了一个办法,如果电话响铃一声就挂了表示我向家里报个平安,如果我的生活费不足,需要父亲给我打钱就响铃两声,如果就响三声就表示需要父亲来接我放学回家,这样就减少了成本。
所以这里响几声代表不同的含义,而这个含义不需要解释,双方已经达成了共识,这就叫做约定,而用计算机语言来说这就叫作协议。

举个例子,在计算机中,主机 A 想让主机 B 干一件事,可以先约定好只发送一个字节,不同的比特位代表要做什么事情,这样就可以降低成本,提高效率。


2、协议的本质

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

只要通信的两台主机约定好协议就可以了吗?

并不是。因为:

  • 计算机生产厂商有很多。
  • 计算机操作系统也有很多。
  • 计算机网络硬件设备也有很多。

他们可能各自有自己的协议。所以,为了让他们之间生产的计算机能够相互顺畅的通信,还需要计算机对应的硬件厂商以同样的规范来处理 0/1 问题。需要约定一个共同的标准,让大家都遵守,这就是网络协议(TCP/IP)

协议的本质是一层软件层,是为了让双方通信的本质更高效

计算机的内部有很多组件,比如 CPU、显卡、网卡… 而它们在计算机内部是用线连接起来的。所以,一台计算机的内部本质上也是一个小型的网络结构,计算机内部设备和设备之间也存在协议,比入驱动程序访问硬件就得通过协议。
假设这些线足够长,将硬盘放到几百公里之外,那么现在我们再去存储数据就由原来的写入本地变成通过网络写入远端了,再把 CPU 等都放到远处,就相当于我们把一台计算机的各个功能用多台计算机构建起来,通过网络来进行连接。

所以可以得出结论:在计算机中,体系结构中有网络,网络中有体系结构。

为什么需要协议呢?

因为多台主机的距离较远,为了减少通信成本,所以需要有协议的存在。

通信的复杂问题,本质上是跟距离成正相关的。


3、协议分层

在实际定制网络协议时,是以层状划分的。

为什么要划分为层状结构呢?
  1. 通信的场景复杂。
  2. 通过分层可以完成不同协议之间的解耦,也便于人们对其进行各自维护。

A. 举例(打电话)

两个人用电话联系。站在人的角度,是人与人之间在沟通,而站在电话的角度,是电话与电话之间在沟通,这就叫做分层

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


B. 分层的好处

我们把软件进行模块化分,可以很好的进行解耦。解耦之后,我们把通信设备进行更换,比如说用电话进行沟通,上层不需要改变;同样的,上层语言改变,底层不不需要变。所以我们对任何一层进行修改并不会影响到其他层。


C. 封层的依据

把功能比较集中、耦合度较高的的模块放在一层,也就是高内聚。而每一层都是要解决特定的问题。


4、数据传输的条件

从我们的计算机通过网络发送一条信息到你的计算机,如何保证数据在传输过程中不丢失呢?其次,在传输过程中是如何安全找到你的计算机呢?传输过程中是分段传输的,如何解决下一跳主机的问题呢?这其中的复杂性体现在哪?(也就是协议栈要解决的问题)

通信范畴:

  1. 处理数据的能力。数据传递过去主机要识别这是什么,然后才能使用这个数据。(应用层)
  2. 丢包问题。另一台机器可能没有收到我们所发送的信息。(传输层)
  3. 定位问题。有成千上万个主机,需要确定给哪一台机器。(网络层)
  4. 解决下一跳问题问题。当两台相离很远的主机之间要传递数据,那么要先有传递一台主机数据的能力(数据包交付能力),然后一台一台的 “蹦” 到目标主机。(数据链路层)
  5. 要有纠错的能力。如果出错了就要重新传递一份。(物理层,但不属于软件)

这些都是由不同协议来保证的,而这里的每一层都有自己的协议,每一层协议都解决当前层的问题。


三、OSI 七层模型

OSI把网络从逻辑上分为了七层,每一层都有相关的物理设备。

  • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。
  • 把网络从逻辑上分为了 7 层。每一层都有相关、相对应的物理设备,比如路由器,交换机。
  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输。
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。但是,它既复杂又不实用,所以下面就按照 TCP/IP 四层模型来讲述。在工程实践中把应用层表示层和会话层压缩成一层。

四、TCP / IP 五层(或四层)模型

TCP/IP 是一组协议的代名词,它还包括许多协议,组成了 TCP/IP 协议簇。

TCP/IP 通讯协议采用了 5 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

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

前面讲到的数据传输的条件,数据链路层解决的是能够传递的问题,网络层解决的是选择路径的问题,传输层解决的是纠错的问题,而应用层就是解决数据解析的问题。

物理层我们考虑的较少,因此很多时候也可以称为 TCP/IP 四层模型。

一般而言,

  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容。
  • 对于一台路由器,它实现了从网络层到物理层。
  • 对于一台交换机,它实现了从数据链路层到物理层。
  • 对于集线器,它只实现了物理层。

但是并不绝对,很多交换机也实现了网络层的转发,很多路由器也实现了部分传输层的内容(比如端口转发)。

注意:数据链路层中的网卡层是驱动程序的一部分。

网络层和传输层是操作系统内部自己实现的。所有的操作系统都一样,所以全球的主机都能互联。

OS层次图:

可以看到跟上面讲的没什么区别。在应用层传输层时间会有系统调用接口,主要是文件类的系统调用接口。

注意:TCP 和 IP 各自是传输层和网络层最具代表性的两个协议,这个协议栈命名为 TCP/IP 模型,足以看出这两个协议的重要性,它们的重要性是操作系统赋予的。

参考资料:【Linux 网络】TCP/IP 四层模型和 OSI 七层模型的概念-CSDN博客

【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(下)https://developer.aliyun.com/article/1515744?spm=a2c6h.13148508.setting.19.11104f0e63xoTy

相关文章
|
2天前
|
网络协议 网络虚拟化
接收网络包的过程——从硬件网卡解析到IP
【9月更文挑战第18天】这段内容详细描述了网络包接收过程中机制。当网络包触发中断后,内核处理完这批网络包,会进入主动轮询模式,持续处理后续到来的包,直至处理间隙返回其他任务,从而减少中断次数,提高处理效率。此机制涉及网卡驱动初始化时注册轮询函数,通过软中断触发后续处理,并逐步深入内核网络协议栈,最终到达TCP层。整个接收流程分为多个层次,包括DMA技术存入Ring Buffer、中断通知CPU、软中断处理、以及进入内核网络协议栈等多个步骤。
|
8天前
|
网络协议 安全 数据安全/隐私保护
动静态IP的网络协议有什么不同
IP地址分为静态和动态两种分配方式。静态IP地址由管理员手动分配,确保设备具有固定且唯一的网络标识,适用于服务器等关键设备。动态IP地址则通过DHCP服务器自动分配,提供更高的灵活性和管理效率,适合个人电脑和移动设备。两者在网络配置、管理和安全性方面各有优劣,需根据具体应用场景进行选择。静态IP地址虽稳定但配置复杂,安全性较低;动态IP地址配置简单,安全性更高,能有效防止针对固定IP的攻击。
|
16天前
|
网络协议 C语言
C语言 网络编程(十三)并发的TCP服务端-以进程完成功能
这段代码实现了一个基于TCP协议的多进程并发服务端和客户端程序。服务端通过创建子进程来处理多个客户端连接,解决了粘包问题,并支持不定长数据传输。客户端则循环发送数据并接收服务端回传的信息,同样处理了粘包问题。程序通过自定义的数据长度前缀确保了数据的完整性和准确性。
|
16天前
|
网络协议 C语言
C语言 网络编程(十一)TCP通信创建流程---服务端
在服务器流程中,新增了绑定IP地址与端口号、建立监听队列及接受连接并创建新文件描述符等步骤。`bind`函数用于绑定IP地址与端口,`listen`函数建立监听队列并设置监听状态,`accept`函数则接受连接请求并创建新的文件描述符用于数据传输。套接字状态包括关闭(CLOSED)、同步发送(SYN-SENT)、同步接收(SYN-RECEIVE)和已建立连接(ESTABLISHED)。示例代码展示了TCP服务端程序如何初始化socket、绑定地址、监听连接请求以及接收和发送数据。
|
16天前
|
网络协议 C语言
C语言 网络编程(十四)并发的TCP服务端-以线程完成功能
这段代码实现了一个基于TCP协议的多线程服务器和客户端程序,服务器端通过为每个客户端创建独立的线程来处理并发请求,解决了粘包问题并支持不定长数据传输。服务器监听在IP地址`172.17.140.183`的`8080`端口上,接收客户端发来的数据,并将接收到的消息添加“-回传”后返回给客户端。客户端则可以循环输入并发送数据,同时接收服务器回传的信息。当输入“exit”时,客户端会结束与服务器的通信并关闭连接。
|
16天前
|
网络协议 C语言
C语言 网络编程(十二)TCP通信创建-粘包
TCP通信中的“粘包”现象指的是由于协议特性,发送方的数据包被拆分并在接收方按序组装,导致多个数据包粘连或单个数据包分割。为避免粘包,可采用定长数据包或先传送数据长度再传送数据的方式。示例代码展示了通过在发送前添加数据长度信息,并在接收时先读取长度后读取数据的具体实现方法。此方案适用于长度不固定的数据传输场景。
|
16天前
|
缓存 网络协议 网络性能优化
C语言 网络编程(二)TCP 协议
TCP(传输控制协议)是一种面向连接、可靠的传输层协议,通过校验和、序列号、确认应答等机制确保数据完整性和可靠性。通信双方需先建立连接,再进行通信,采用三次握手建立连接,四次挥手断开连接。TCP支持任意字节长度的数据传输,具备超时重传、流量控制及拥塞控制机制。三次握手用于同步序列号和确认双方通信能力,四次挥手则确保双方均能完成连接关闭操作,保证数据传输的可靠性。
|
16天前
|
网络协议 C语言
C语言 网络编程(十)TCP通信创建流程---客户端
在TCP通信中,客户端需通过一系列步骤与服务器建立连接并进行数据传输。首先使用 `socket()` 函数创建一个流式套接字,然后通过 `connect()` 函数连接服务器。连接成功后,可以使用 `send()` 和 `recv()` 函数进行数据发送和接收。最后展示了一个完整的客户端示例代码,实现了与服务器的通信过程。
|
22天前
|
小程序 数据安全/隐私保护
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
在 `src/http` 目录下创建 `request.ts` 文件,并配置 Taro 的网络请求方法 `Taro.request`,支持多种 HTTP 方法并处理数据加密。
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
|
28天前
|
存储 Linux Shell
在Linux中,如何使用脚本,实现判断 192.168.1.0/24 网络里,当前在线的 IP 有哪些?能ping 通则 认为在线。
在Linux中,如何使用脚本,实现判断 192.168.1.0/24 网络里,当前在线的 IP 有哪些?能ping 通则 认为在线。