分布式系统架构:技术栈详解与快速进阶
上QQ阅读APP看书,第一时间看更新

3.2 网络传输调用过程

3.2.1 协议概述

在网络传输过程中,TCP/IP协议起了非常重要的作用,那么,TCP/IP协议具体是什么呢?

TCP/IP(传输控制协议/互联网协议)是一组特别的协议,其子协议包括TCP、IP、UDP、ARP等。在网络通信的过程中,将发出数据的主机称为源主机,将接收数据的主机称为目的主机。当源主机发出数据时,数据在源主机中从上层向下层传送。源主机中的应用进程先将数据交给应用层,应用层在数据中加上必要的控制信息就成了报文流,报文流向下传给传输层。传输层在收到的数据单元中加上本层的控制信息,就形成了报文段、数据报,再将报文段、数据段交给网络层。网络层在报文段、数据段中加上本层的控制信息,就形成了IP数据报,并将其传给网络接口。网络接口将网络层发来的IP数据报组装成帧,并以比特流的形式传给网络硬件(即物理层),数据离开源主机。

通过网络传输,数据到达目的主机后,按照与源主机相反的过程,在目的主机中从下层向上层进行拆包传送。首先由网络接口层接收数据,依次剥离原来加上的控制信息,最后将源主机中的应用进程发送的数据交给目的主机的应用进程。

TCP/IP协议的基本传输单位是数据报。TCP协议负责把数据分成若干个数据报,并给每个数据报加上报头,报头上有编号,以保证目的主机能将数据还原为原来的格式。IP协议在每个报头上再加上接收端主机IP地址,这样数据就能找到自己要去的地址。如果传输过程中出现数据失真、数据丢失等情况,TCP协议会自动请求重新传输数据,并重组数据报。可以说,IP协议用于保证数据的传输,TCP协议用于保证数据传输的质量。TCP/IP协议在数据传输时每通过一层就要在数据上加个报头,其中的数据供接收端同一层协议使用,而在接收端,每经过一层要把用过的报头去掉,这样可以保证传输数据的一致性。

在计算机网络中,实际应用的网络协议是TCP/IP协议族,其中,TCP/IP协议的应用层大体对应OSI/RM模型的应用层、表示层和会话层,TCP/IP协议的网络接口层对应OSI/RM模型的数据链路层和物理层。TCP/IP包含以下4层:

  • 链路层:链路层有时又称数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口上的细节。把链路层地址和网络层地址联系起来的协议包括ARP(地址解析协议)和RARP(逆地址解析协议)。
  • 网络层:网络层处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议)、ICMP协议(网际控制报文协议)和IGMP协议(网际组管理协议)。
  • 传输层:传输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。
  • 应用层:应用层负责处理特定的应用程序细节。各种不同的TCP/IP实现几乎都会提供Telnet远程登录、SMTP(简单邮件传输协议)、FTP(文件传输协议)、HTTP(超文本传输协议)等应用程序。

(1)IP协议

IP协议是网络层中最重要的协议,IP层接收由更低层(网络接口层,例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层——TCP或UDP层;同时,IP层也把从TCP或UDP层接收的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是否按顺序发送或者是否被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IPsource routing,它可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自它的真实地点。这个选项是为了测试而存在的,说明它可以欺骗系统来进行平时被禁止的连接。因此,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。

(2)UDP协议

UDP与TCP位于同一层,UDP主要用于那些面向查询—应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。

(3)ARP协议

APR协议又称地址解析协议,是一个根据IP地址获取物理地址的TCP/IP协议。主机和主机间的通信在物理上类似于网卡和网卡间的通信,目前网卡会根据MAC地址进行识别,实现主机和主机间的通信,需要知道与对方主机的IP地址对应的MAC地址,APR协议能很好处理。处理过程如下:主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址。收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系,添加或删除静态对应关系等。