计算机网络是现代通信技术与计算机技术相结合的产物。所谓计算机网络,是指把分布在不同地理区域的计算机用通信线路互连起来的一个具有强大功能的网络系统。在计算机网络上,众多计算机可以方便地互相通信,共享软件、硬件和数据信息等资源。通俗地讲,计算机网络就是通过电缆、无线通信设施等互联的计算机的集合。
网络中的每台机器称为节点,大多数节点是计算机,此外,打印机、路由器、网关等也是节点。在日常生活中,人与人之间通过某种语言来交流,网络中的主机之间也通过 “语言” 来交流,这种语言称为网络协议。
网络中的每个主机都有地址,用于标识主机的一个字节序列。字节序列越长可表示的地址数目就越多,这意味着可以有更多的设备连入网络。按照计算机联网的区域大小,可以把网络分为局域网(LAN)和广域网(WAN)。局域网是指在一个较小地理范围内的各种计算机互联在一起的通信网络,可以包含一个或多个子网。广域网连接地理范围较大,常常是一个国家或是一个洲,其目的是为了让分布较远的各局域网互联。
OSI 七层模型
在计算机网络产生之初,每个计算机厂商都有一套自己的网络体系结构,它们之间互不相容。为此,国际标准化组织(ISO)在 1979 年建立了一个分委员会,来专门研究一种用于开放系统互联(OSI)的体系结构,这意味着一个网络系统只要遵循 OSI 模型,就可以和世界上任何地方的、也遵循 OSI 模型的其他网络系统连接。
OSI 参考模型把网络分为 7 层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。如下图所示,每一层使用下层提供的服务,并为上层提供服务。
在 OSI 七层体系结构中,低四层(从物理层到传输层)定义了如何进行端到端的数据传输,也就是定义了如何通过网卡、物理电缆、交换机和路由器进行数据传输;而高三层(从会话层到应用层)定义了终端系统的应用程序和用户如何进行彼此之间的通信,亦即定义了如何重建从发送方到目的方的应用程序数据流。
不同主机之间的相同层成为对等层。例如,主机 A 中的物理层和主机 B 中的物理层互为对等层。OSI 参考模型中各层的主要功能具体如下:
1. 物理层(Physical Layer)
传输信息离不开物理介质,物理层的任务就是为它的上一层提供物理连接,以及规定通信节点之间的机械和电器等特性,如规定电缆和接头的类型,传送信号的电压等。物理层为网络中的所有数据转发提供最基本、最必需的通信路径,是所有数据通信的基础。所有数据均必须在物理层构建的传输路径中进行传输。
2. 数据链路层(Data Link Layer)
数据链路层的主要作用是在物理层构建的物理链路或传输信道的基础上提供了虚拟的通信通道,通过运行对应的链路层协议,为对应类型协议的数据传输构建一条逻辑链路,主要通过设备的 mac 地址作用在两个相邻节点间的线路上。
数据链路层负责传送以帧(Frame)为单位的数据。每一帧包括一定数量的数据和一些必要的控制信息。数据链路层要负责建立、维护和释放数据链路的连接。在传送数据时,如果接收方检测到所传数据中有差错,就要通知发送方重发这一帧。
3. 网络层(Network Layer)
在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择最佳的网间路由和交换节点,确保数据及时传送到目标主机。网络层仅起到在不同网络间转发数据包的作用,最终数据还是要在目的网络的数据链路层进行传输,在到达下一个网络节点设备(如路由器)时再进行路由或转发。
网络层将数据链路层提供的帧组成数据包(Packet),包中封装有网络层包头,包头中含有逻辑地址信息——源主机和目标主机的网络 IP 地址。所以网络层是通过 IP 地址把数据包转发到目的节点的。
4. 传输层(Transport Layer)
该层的任务是根据通信子网的特性最佳地利用网络资源,专门为源主机和目标主机的会话层提供建立、维护和取消传输连接的功能,以可靠方式或不可靠方式传输数据。可靠方式是指保证把源主机发送的数据正确地送达目标主机;不可靠方式则是指尽量保证把源主机发送的数据正确地送达目标主机,数据有可能丢失或出错。
传输层主要负责主机中两个进程之间的通信(提供端到端的通信),即运行在两个不同主机上的两个进程之间的通信。在这一层,信息的传送单位是报文段(TCP)或用户数据报(UDP)。
- 点到点是数据链路层的说法,因为数据链路层只负责直接相连的两个结点之间的通信,一个结点的数据链路层接受网络层数据并封装之后,就把数据帧从链路上发送到与其相邻的下一个结点。
- 端到端是传输层的说法,因为无论TCP还是UDP协议,都要负责把上层交付的数据从发送端传输到接收端,不论其中间跨越多少结点。只不过TCP比较可靠而UDP不可靠而已。所以称之为端到端,也就是从发送端到接收端。
传输层与数据链路层的作用都是建立数据传输通道,两者在功能上存在许多相似之处。但是传输层的功能主要体现在广域网网络应用中,可以把数据链路层当作局域网通信的数据传输通道,而传输层则是广域网中的数据传输通道。
5. 会话层(Session Layer)
会话层为具体的用户应用建立会话进程,管理进程之间的会话过程(每个应用都有一个会话进程),即负责建立、管理、结止进程之间的会话。
会话层还通过在数据中插入校验点(syn)来实现数据的同步,所以也称为建立同步
6. 表示层(Presentation Layer)
表示层是对用户网络应用数据的具体解释,包括对上层数据进行转换,以保证一个主机的应用层的数据可以被另一主机的应用层理解。即表示出用户看得懂的数据格式。
表示层的数据转换包括对数据加密、解密、压缩、解压和格式转换等。
7. 应用层(Application Layer)
应用层是用户进行具体网络应用的层次,是具体网络应用的发起者和接收者,负责接受用户的各种网络应用请求,并为他们分配对应的网络应用进程和所需资源。如浏览 Web 站点、收发邮件、上传或下载文件,以及远程登录服务器等都可以看做是进程之间通信的实际用途。
OSI 参考模型把网络分为多个层次,每个层次有明确的分工,这简化了网络系统的设计过程。对等层之间相互通信需要遵守一定的规则,如通信的内容和通信的方式,这种规则称为网络协议。值得注意的是,OSI 模型并没有具体的实现方式,它没有在各层制定网络协议,但为其他计算机厂商或组织制定网络协议提供了参考框架。
TCP/IP 四层模型
ISO 制定的 OSI 七层模型提出了网络分层的思想,这种思想对网络的发展具有重要的指导意义。但由于 OSI 参考模型过于庞大和复杂,使它难以投入到实际运用中。与 OSI 参考模型相似的 TCP/IP 模型吸取了网络分层的思想,而且对网络的层次作了简化,并在网络各层都提供了完善的协议,这些协议构成了 TCP/IP 协议集。
在 TCP/IP 参考模型中,去掉了 OSI 参考模型中的会话层和表示层,这两层的功能被合并到应用层,同时将 OSI 参考模型中的数据链路层和物理层合并到主机-网络层。因此整个 TCP/IP 参考模型分为 4 个层次:应用层、传输层、网络互联层和主机-网络层,下图展示了与 OSI 参考模型的对应关系,
1. 主机-网络层
实际上 TCP/IP 参考模型没有真正提供这一层的实现,也没有提供协议。它只是要求第三方实现的主机-网络层能够为上层提供一个访问接口,使得网络互联层能利用主机-网络层来传递 IP 数据包。
2. 网络互联层
网络互联层是整个参考模型的核心,它的功能是把 IP 数据包发送到目标主机。为了尽快地发送数据,IP 协议把原始数据分为多个数据包,然后沿不同的路径同时传递数据包。这样,数据包到达的先后顺序和发送的先后顺序可能不同,这就需要上层对数据包重新排序,还原为原始数据。
网络互联层采用 IP 协议,它规定了数据包的格式,并且规定了为数据包寻找路由的流程。
3. 传输层
传输层的功能是使源主机和目标主机上的进程可以进行会话。在传输层定义了两种不同服务质量不同的协议,即 TCP 和 UDP。TCP 协议是一种面向连接的、可靠的协议,它将源主机发出的字节流无差错地发送给互联网上的目标主机。在发送端,TCP 协议负责把上层传送下来的数据分成报文段传递给下层。在接收端,TCP 协议负责把收到的报文进行重组后递交给上层。TCP 协议还要处理端到端的流量控制,以避免接收速度缓慢的接收方没有足够的缓存区来接收发送方发送的大量数据。应用层的许多协议,如 HTTP、FTP、TELNET 协议等,都建立在 TCP 协议基础上。
UDP 协议是一个不可靠的、无连接的协议,主要适用于不需要对报文进行排序和流量控制的场合。UDP 不能保证数据包的接收顺序与发送顺序相同,甚至不能保证它们是否全部到达目标主机。
4. 应用层
TCP/IP 模型将 OSI 参考模型中的会话层和表示层的功能合并到应用层实现。针对各种各样的网络应用,应用层引入了许多协议。基于 TCP 协议的应用层协议主要有以下几种:
- FTP:文件传输协议,允许在网络上传输文件
- TELNET:虚拟终端协议,允许从主机 A 登入到远程主机 B
- HTTP:超文本传输协议,允许在网络上传输超文本
- HTTPS:安全超文本传输协议,允许在网络上安全地传输超文本
基于 UDP 协议的应用层协议主要有以下几种:
- DNS:域名协议系统,把主机的域名转换为对应的 IP 地址