一、计算机网络的发展背景
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、协议分层
在实际定制网络协议时,是以层状划分的。
为什么要划分为层状结构呢?
- 通信的场景复杂。
- 通过分层可以完成不同协议之间的解耦,也便于人们对其进行各自维护。
A. 举例(打电话)
两个人用电话联系。站在人的角度,是人与人之间在沟通,而站在电话的角度,是电话与电话之间在沟通,这就叫做分层。
在这个例子中, 我们的协议只有两层。 但是实际的网络通信会更加复杂, 需要分更多的层次。分层最大的好处在于 “ 封装” 。
B. 分层的好处
我们把软件进行模块化分,可以很好的进行解耦。解耦之后,我们把通信设备进行更换,比如说用电话进行沟通,上层不需要改变;同样的,上层语言改变,底层不不需要变。所以我们对任何一层进行修改并不会影响到其他层。
C. 封层的依据
把功能比较集中、耦合度较高的的模块放在一层,也就是高内聚。而每一层都是要解决特定的问题。
4、数据传输的条件
从我们的计算机通过网络发送一条信息到你的计算机,如何保证数据在传输过程中不丢失呢?其次,在传输过程中是如何安全找到你的计算机呢?传输过程中是分段传输的,如何解决下一跳主机的问题呢?这其中的复杂性体现在哪?(也就是协议栈要解决的问题)
通信范畴:
- 处理数据的能力。数据传递过去主机要识别这是什么,然后才能使用这个数据。(应用层)
- 丢包问题。另一台机器可能没有收到我们所发送的信息。(传输层)
- 定位问题。有成千上万个主机,需要确定给哪一台机器。(网络层)
- 解决下一跳问题问题。当两台相离很远的主机之间要传递数据,那么要先有传递一台主机数据的能力(数据包交付能力),然后一台一台的 “蹦” 到目标主机。(数据链路层)
- 要有纠错的能力。如果出错了就要重新传递一份。(物理层,但不属于软件)
这些都是由不同协议来保证的,而这里的每一层都有自己的协议,每一层协议都解决当前层的问题。
三、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