人与人之间的沟通靠的是语言,计算机与计算机如何通信呢?计算机和计算机的沟通主要靠的就是协议。在计算机通信中,事先达成一个详细的约定,并遵循这一约定进行处理,这种约定就是协议。那么,目前在计算机通信中,存在哪些协议呢?
- ISO制定了一个国际标准OSI,对通信系统进行了标准话,这就是我们通常说的7层OSI协议。
- 目前互联网所遵守的协议是TCP/IP协议,由IETF所建议的,致力于推进其标准化作业的一种协议。
协议的分层与OSI参考模型
ISO在制定标准化OSI之前,对网络体系结构相关问题进行了充分的讨论,最终提出了作为通信协议设计指标的OSI参考模型。这一模型将通信协议中必要的功能分成了7层。在这一模型中,每个分层都接收由他下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵守的约定叫做“接口”。同一层之间的交互遵守的约定叫做“协议”。OSI参考模型以及每一层的作用具体如下:
TCP/IP协议分层模型
20世纪90年代,ISO开展了OSI这一国际标准协议的标准化进程,然而,OSI协议并没有得到普及,真正被广泛使用的是TCP/IP协议。OSI参考模型注重“通信协议必要的功能是什么”,而TCP/IP更强调“在计算机上实现协议应该开发哪种程序”;虽然OSI并未被得到普及,但是TCP/IP的各种协议其实也能对应到OSI参考模型当中,清楚这些协议分属于OSI的哪一层,就能对该协议的目的有所了解。下面是各个协议与OSI参考模型中各个分层之间的对应关系。
- 硬件(物理层):TCP/IP的最底层是负责数据传输的硬件,包括以太网或者电话线等物理层的设备。
- 网络接口层(数据链路层):网络接口层是利用以太网中的数据连路层进行通信,属于接口层。可以看做是设备驱动程序:即在操作系统和硬件之间起桥梁作用。
- 互联网层(网络层):互联网层使用IP协议,相当于OSI模型中的第3层网络层。IP协议基于IP地址转发分包数据,IP协议的作用是将分组数据包发送到目标主机。TCP/IP分层中的互联网层和传输层的功能通常是由操作系统提供。
- IP:IP是跨越网络传送数据包,使整个互联网都能收到数据的协议。IP协议书数据能够发送到地球的另一端,这期间它使用IP地址作为主机的标识。虽然IP也是分组交换的一种协议,但是他不具有重发机制。属于非可靠性传输协议。
- ICMP:IP数据包在发送途中一单发生异常,导致无法到达对端目标地址时,需要给发送端发送一个发生异常的通知。ICMP就是为这一功能而制定的,有时也被用来诊断网络的健康状况。
- 传输层:TCP/IP的传输层功能本身与OSI参考模型中的传输层类似。传输层的主要功能就是能够让应用程序之间实现通信。
- TCP:TCP是一种面向有连接的传输层协议,他可以保证两端通信主机之间的通信可达。TCP能够正确处理在传输过程中丢包、传输顺序乱掉等异常情况。然而,为了建立与断开连接,有时它需要至少7次的发包收包,导致网络流量的浪费。
- UDP: UDP有别于TCP,他是一种面向无连接的传输层协议,UDP不会关注对端是否真的收到了传送过去的数据,如果需要检查对端是否收到分组数据包,或者对端是否连接到网络,则需要在应用程序中实现。UDP通常用于分组数据较少或者多播、广播通信以及视频通信等多媒体领域。
- 应用层(会话层以上以上的分层):TCP/IP的分层中,将OSI参考模型中的会话层、表示层和应用层的功能都集中到了应用程序中实现。
传输方式的分类
- 面向有连接和无连接类型
- 面向有连接类型:面向有连接型中,在发送数据之前,需要在收发主机之间连接一条通信线路。类似人们平常打电话,在通信传输前后,专门进行建立和断开连接的处理。
- 面向无连接类型:面向无连接类型则不要求建立和断开连接。发送端可与任何时候自由发送数据,反之,接收端也永远不知道自己会从何时从哪里收到数据。因此,在面向无连接的情况下,接受端需要时常确认是否收到了数据。类似人们去邮寄寄包裹,在面向无连接中,不需要确认对端是否存在,即使接收端不存在或者无法接受数据,发送端也能将数据发送出去。
- 电路交换和分组交换
- 电路交换:主要用于过去的电话网。电路交换中,交换机主要负责数据的中转处理,计算机首先被连接到交换机,交换机与交换机之间则由众多通信线路再继续连接。因此,计算机之间在发送数据时,需要通过交换机与目标主机建立通信电路,连接电路被称为建立连接,建立连接以后,用户就可以一直使用这条电路,直到该连接被断开为止。
- 分组交换:因为在电路交换中,两台通信的主机之间需要建立连接,且是独占线路进行数据传输的,其他计算机只能等待这台计算机处理结束后才有机会使用这条电路手收发数据。鉴于电路交换的弊端,人们想出了分组交换,即让连接到通信电路的计算机将所要发送的数据分成多个数据包,按照一定的顺序排列之后分别发送。有了分组交换,数据被细分之后,所有的计算机就可以一齐手法数据,提高了通信线路的利用率。在分组的过程中,在每个分组的首部写入了发送端和接收端的地址,因此,一条线路可以同时为多个用户提供服务。在分组交换过程中,有分组交换机(路由器)连接通信线路,分组交换的大致处理过程:发送端计算机将数据分组发送给路由器,路由器收到这些分组数据以后,缓存到自己的缓冲区,然后再转发给目标计算机。路由器接收到数据以后会顺序缓存到响应的队列中,再以先进先出的顺序将他们逐一发送出去。