3.1 运输层服务

一. 概念

  • 运输层是计算机网络体系结构中的第四层,它在网络层提供的服务基础上,为应用层提供端到端的通信服务。运输层主要负责进程到进程(端到端)的通信,确保数据能够准确、高效地从源端应用进程传输到目的端应用进程。
  • 例如,当你使用浏览器访问网页时,浏览器(应用进程)通过运输层协议与服务器上的网页服务应用进程进行通信。它屏蔽了网络层以下通信子网的细节,使得应用层不需要关心数据具体是如何在网络中传输的,只需要将数据交给运输层,运输层就会负责把数据可靠地或尽力而为地发送到目的地。

二. 过程

  • 建立连接(对于面向连接的协议)
    • 以TCP(传输控制协议)为例,在通信开始前,需要进行三次握手来建立连接。首先,客户端向服务器发送一个带有SYN(同步序列号)标志的TCP报文段,其中包含客户端初始序列号。服务器收到后,会返回一个SYN + ACK报文段,ACK是对客户端SYN的确认,同时也包含服务器自己的初始序列号。最后,客户端再发送一个ACK报文段来确认服务器的SYN,这样连接就建立起来了。这个过程确保了双方都做好了通信的准备,并且知道对方的初始序列号,用于后续数据的可靠传输。
  • 数据传输
    • 发送方将应用层数据分割成合适大小的报文段(对于TCP),并为每个报文段添加运输层首部信息,如源端口、目的端口、序列号等。这些信息帮助运输层在接收端正确地重组数据,并进行流量控制和差错控制。然后通过网络层将报文段发送出去。接收方根据首部中的信息来识别数据所属的应用进程,并将数据交给相应的应用进程。在传输过程中,如果使用的是可靠运输协议(如TCP),发送方会等待接收方的确认(ACK),如果在一定时间内没有收到ACK,会进行重传。
  • 拆除连接(对于面向连接的协议)
    • 以TCP为例,通信结束后,需要进行四次挥手来拆除连接。首先,主动关闭方(通常是客户端)发送一个带有FIN(结束标志)的报文段,表示自己没有数据要发送了。接收方收到FIN后,会返回一个ACK报文段,确认收到了FIN。然后,接收方可能还有数据要发送给主动关闭方,等数据发送完后,接收方也发送一个FIN报文,主动关闭方收到后再发送一个ACK报文段,这样连接就完全关闭了。

三. 原理

  • 复用和分用
    • 复用是指多个应用进程可以同时使用运输层的服务,通过不同的端口号来区分不同的应用进程。例如,在一台主机上,Web服务可能使用端口80,电子邮件服务可能使用端口25等。运输层协议从多个应用进程接收数据,将它们封装成运输层报文段,然后交给网络层进行传输。分用则是接收方的运输层根据报文段首部中的目的端口号,将接收到的数据分发给相应的应用进程。
  • 差错控制
    • 在可靠运输协议(如TCP)中,通过序列号和确认号来实现差错控制。发送方为每个发送的数据报文段编号(序列号),接收方收到报文段后,会返回一个确认号,告诉发送方自己期望收到的下一个报文段的序列号。如果发送方收到重复的确认号或者在一定时间内没有收到确认号,就认为数据可能丢失或出错,会进行重传。同时,运输层还可以采用校验和等机制来检测报文段在传输过程中是否出现比特差错。
  • 流量控制
    • 为了防止发送方发送数据的速度过快,导致接收方来不及接收而丢失数据,运输层采用流量控制机制。例如,TCP使用滑动窗口机制来实现流量控制。接收方会告诉发送方自己的接收窗口大小,发送方根据接收窗口的大小来调整自己的发送速度。接收窗口大小表示接收方当前能够接收的数据量,发送方发送的数据量不能超过接收窗口的大小。

四. 示例

  • TCP示例(可靠的运输协议)
    • 假设一个用户通过FTP(文件传输协议)从服务器下载文件。FTP应用进程使用TCP作为运输层协议。在下载过程中,TCP负责将文件数据分割成合适大小的报文段,每个报文段都有自己的序列号。当服务器发送一个报文段后,会等待客户端的确认。如果客户端收到报文段并且数据没有错误,就会发送一个ACK报文段,其中的确认号表示已经正确接收了该报文段,并且期望下一个报文段的序列号。如果某个报文段在传输过程中丢失,客户端不会发送对应的ACK,服务器在等待一段时间后,会重传这个丢失的报文段。通过这种方式,确保了文件数据能够完整、准确地从服务器传输到客户端。
  • UDP示例(不可靠的运输协议)
    • 考虑一个实时视频流应用。该应用使用UDP作为运输层协议。UDP在发送视频数据时,不会像TCP那样建立连接、进行复杂的差错控制和流量控制。它只是简单地将视频数据封装成UDP报文段并发送出去。这样做的好处是发送速度快,减少了传输延迟,适合实时性要求高的应用。虽然UDP不能保证数据的可靠传输,可能会出现丢包、乱序等情况,但对于视频流应用来说,少量的数据丢失可能不会对用户体验产生太大的影响,而且应用层可以通过一些机制(如帧率调整、冗余编码等)来弥补UDP的不足。

五. 分类

  • 面向连接的运输协议(如TCP)
    • 提供可靠的、按序的数据传输服务。在通信前需要建立连接,在通信过程中通过序列号、确认号、流量控制和差错控制等机制确保数据的准确传输,通信结束后需要拆除连接。它适用于对数据传输可靠性要求高的应用,如文件传输、电子邮件等。
  • 无连接的运输协议(如UDP)
    • 提供尽力而为的数据传输服务。不需要建立连接,发送方直接将数据封装成报文段发送出去。它不保证数据的可靠传输、按序到达,也没有复杂的流量控制机制。但它具有传输速度快、延迟小的特点,适用于对实时性要求高、对少量数据丢失不敏感的应用,如实时视频会议、在线游戏等。

六. 发展

  • 早期的网络主要以简单的无连接通信为主,随着网络应用的多样化和对数据传输质量要求的提高,面向连接的运输协议(如TCP)得到了发展。TCP的版本也在不断演进,例如,从最初的TCP协议到现在的TCP/IPv6环境下的改进版本,不断优化其性能,如提高传输效率、增强安全性等。UDP也在不断发展,为了在保证实时性的同时提高一定的可靠性,出现了一些基于UDP的改进协议。例如,QUIC(Quick UDP Internet Connections)协议,它在UDP的基础上增加了类似TCP的连接管理、拥塞控制和差错控制等功能,并且在加密和传输速度方面有很大的优势,被广泛应用于HTTP/3等现代网络应用场景中。同时,随着物联网、5G等新兴技术的发展,运输层协议也在适应新的应用场景和需求,如对低功耗、高带宽、低延迟等要求的满足。

3.2 多路复用和多路分解

一、概念

  1. 多路复用(Multiplexing)
    • 概念:它是一种将多个信号组合在一个信道上进行传输的技术。在通信系统中,当有多个数据源(如多个用户的数据、多个信号源的信号等)需要通过同一通信介质(如电缆、光纤、无线频谱等)传输时,就可以使用多路复用技术,以提高通信介质的利用率。
  2. 多路分解(Demultiplexing)
    • 概念:多路分解是多路复用的逆过程。它是将一个复合的信号(经过多路复用后的信号)在接收端分离成多个原始信号的过程,以便各个信号能够被正确地接收和处理。

二、过程和原理

  1. 多路复用过程和原理
    • 以频分多路复用(FDM)为例,原理是根据频率来划分信道。
      • 过程:不同的信号被调制到不同的频率段上。例如,在一个有线电视系统中,多个电视频道的信号会被调制到不同的频率范围。比如,频道1的信号被调制到50 - 60MHz频段,频道2的信号被调制到60 - 70MHz频段等。这些经过调制的信号可以在同一根同轴电缆中传输,因为它们占据不同的频率范围,就像不同的车辆在不同的车道(频率段)上行驶一样,互不干扰。
    • 时分多路复用(TDM)则是基于时间来划分信道。
      • 过程:将传输时间划分为若干个时间片(时隙)。每个信号在一个特定的时间片内传输。例如,在一个数字通信系统中,假设有4个信号源A、B、C、D需要传输数据。系统把时间划分为等长的时隙,信号A在时隙1传输,信号B在时隙2传输,信号C在时隙3传输,信号D在时隙4传输,如此循环。这样,多个信号就可以按照时间顺序依次在同一信道中传输。
    • 波分多路复用(WDM)主要用于光纤通信,原理类似于频分多路复用。
      • 过程:它是根据光的波长来划分信道。不同波长的光信号代表不同的数据源。在光纤中,不同波长的光可以同时传输,例如,1310nm波长的光信号可以携带一组数据,1550nm波长的光信号可以携带另一组数据,它们在同一根光纤中传输,实现多路复用。
  2. 多路分解过程和原理
    • 对于频分多路复用的信号,在接收端,通过滤波器将不同频率段的信号分离出来。例如,在接收有线电视信号时,接收设备中的滤波器会将各个频道对应的频率段的信号提取出来,将50 - 60MHz频段的信号还原为频道1的原始信号,60 - 70MHz频段的信号还原为频道2的原始信号等。
    • 时分多路复用信号的分解是通过同步和时隙分配来实现的。接收端根据发送端的时隙分配规则,在相应的时隙提取对应的信号。比如,接收端知道信号A在时隙1传输,所以它会在每个时隙1提取A信号的数据,然后进行后续的处理。
    • 波分多路复用信号在接收端通过解复用器,根据光的波长将不同的光信号分离,从而得到各个原始的光信号携带的数据。

三、示例

  1. 电话通信中的时分多路复用和多路分解
    • 在传统的电话通信系统中,多个用户的语音信号通过时分多路复用在同一条通信线路(如电缆)上传输。例如,一条数字电话线路可以支持30个用户同时通话(在T1线路中,采用时分多路复用,总速率为1.544Mbps)。每个用户的语音信号被采样、量化并编码后,按照一定的时隙顺序在这条线路上传输。在接收端,通过多路分解,根据时隙顺序将每个用户的语音信号提取出来,然后进行解码、数 - 模转换等操作,还原出原始的语音信号,这样每个用户就可以听到对方的声音。
  2. 互联网数据传输中的多路复用和多路分解(以数据包为例)
    • 在计算机网络中,当多个应用程序(如网页浏览器、邮件客户端等)的数据需要通过网络接口发送时,会使用多路复用技术。例如,采用传输控制协议/因特网协议(TCP/IP)的计算机,多个应用程序的数据被封装成IP数据包,这些数据包通过网络层的多路复用,在物理网络(如以太网)上传输。在接收端,网络设备(如路由器、网卡)会根据IP地址等信息进行多路分解,将数据包正确地分发到对应的应用程序。

四、分类

  1. 按复用的信号类型分类
    • 模拟多路复用
      • 如频分多路复用(FDM),主要用于模拟信号的复用。它适用于早期的模拟通信系统,如模拟有线电视系统、模拟广播系统等。在模拟有线电视系统中,不同频道的模拟电视信号通过频分多路复用在同轴电缆中传输,用户通过调谐器(一种多路分解设备)选择不同频道进行观看。
    • 数字多路复用
      • 时分多路复用(TDM)和码分多路复用(CDM)属于数字多路复用。TDM在数字通信系统中广泛应用,如数字电话系统、数字数据传输系统等。码分多路复用主要应用在移动通信领域,如在CDMA(码分多址)手机通信系统中,不同用户的信号通过不同的编码方式在同一频段内同时传输,接收端通过与发送端对应的解码方式进行多路分解,识别出不同用户的信号。
  2. 按复用的物理介质分类
    • 有线多路复用
      • 在有线通信中,如电缆通信和光纤通信。在电缆通信中可以采用频分多路复用或时分多路复用,如在同轴电缆传输的有线电视和一些传统的局域网电缆(如10Base - T以太网)。在光纤通信中,波分多路复用(WDM)是主要的复用方式,它大大提高了光纤的传输容量。
    • 无线多路复用
      • 在无线通信领域,频分复用、时分复用和码分复用都有应用。例如,在广播电台中,不同电台通过频分复用占用不同的频率段进行广播。在第二代(2G)移动通信系统(如GSM采用时分复用)和第三代(3G)、第四代(4G)移动通信系统(如CDMA2000、WCDMA采用码分复用,LTE采用时分复用和频分复用结合)中,不同的复用方式被用于提高频谱利用率和支持多用户通信。

五、发展

  1. 早期阶段 - 模拟多路复用的兴起
    • 早期的通信主要是模拟通信,频分多路复用(FDM)技术得到了广泛应用。例如,在20世纪中叶的电话通信系统中,为了在长途线路上传输多个电话信号,采用了FDM技术。通过将不同的语音信号调制到不同的频率段,实现了在一对电缆上同时传输多个电话通话。在广播领域,不同的广播电台也通过FDM技术,占用不同的频段进行广播,使得听众可以通过调谐收音机到不同的频率来收听不同的电台节目。
  2. 数字通信时代 - 时分和码分多路复用的发展
    • 随着数字通信技术的发展,时分多路复用(TDM)成为数字电话系统和数据通信系统的重要技术。例如,在综合业务数字网(ISDN)中,TDM技术被用于在一条数字线路上同时传输语音、数据和视频等多种业务。在移动通信领域,码分多路复用(CDM)技术的出现是一个重大突破。CDMA技术使得多个用户可以在同一频段内同时通信,大大提高了频谱利用率。例如,在2G和3G移动通信系统中,CDMA技术为移动用户提供了更高效的通信服务。
  3. 现代光纤通信和高速网络 - 波分和混合多路复用的进步
    • 在光纤通信领域,波分多路复用(WDM)技术的发展使得光纤的传输容量得到了巨大的提升。从最初的粗波分复用(CWDM)到密集波分复用(DWDM),一根光纤可以同时传输几十甚至上百个波长的光信号,传输速率可以达到太比特每秒(Tbps)级别。在现代高速网络中,还出现了混合多路复用技术,如时分 - 波分混合复用(TDM - WDM)。这种技术结合了TDM和WDM的优点,进一步提高了网络的传输效率和灵活性,以满足日益增长的高速数据传输和云计算、大数据等应用的需求。

3.3 无连接数据传输:UDP

一、概念

  • 定义
    UDP(User Datagram Protocol)即用户数据报协议,是一种简单的传输层协议。它提供了无连接、不可靠的数据传输服务,将应用程序传来的数据封装成数据报(Datagram),并在网络中传输。与TCP(传输控制协议)不同,UDP在发送数据之前不需要建立连接,也不保证数据报能够到达目的地,数据报可能会丢失、重复或者乱序到达。
  • 特点
  • 无连接性:发送方在发送UDP数据报时,不需要像TCP那样先与接收方建立连接,这使得UDP的通信过程更加简单快捷,减少了连接建立和拆除的开销。
  • 不可靠性:UDP不提供如TCP中的确认、重传和差错纠正机制,所以它不能保证数据传输的可靠性。但是这种不可靠性在某些场景下是可以接受的,甚至是有益的,比如对于实时性要求极高的应用。
  • 高效性:由于UDP协议头部格式简单,开销小,数据传输效率相对较高,适合用于传输大量数据或者对传输速度有较高要求的场景。

二、过程

  1. UDP数据报封装
  • 应用程序将数据传递给UDP层,UDP会在数据前面添加一个UDP头部,形成UDP数据报。UDP头部主要包含源端口号、目的端口号、UDP数据报长度和校验和这四个字段。
  • 例如,一个简单的UDP数据报封装过程可能是这样的:应用程序要发送一个包含“Hello”(假设ASCII编码,字节长度为5)的消息,UDP会添加一个8字节的头部(假设端口号等字段占用一定字节),形成一个总长度为13字节的UDP数据报。
  1. UDP数据报发送与接收
  • 发送过程:UDP数据报通过调用操作系统的网络接口函数,将数据报交给网络层。网络层会根据IP协议(通常是IPv4或IPv6)将UDP数据报封装成IP数据报,然后发送到网络中。在这个过程中,UDP并不关心数据报的传输路径和接收情况。
  • 接收过程:当IP数据报到达接收端主机时,网络层将IP数据报中的UDP数据报提取出来,并根据UDP头部中的目的端口号将数据报交给相应的应用程序。如果接收端没有应用程序监听指定的目的端口,那么数据报可能会被丢弃。

三、原理

  • 基于端口的通信原理
  • UDP通过端口号来区分不同的应用程序。端口号是一个16位的整数,范围是0 - 65535。其中,0 - 1023被称为知名端口号,这些端口号通常被一些著名的网络服务所占用,如DNS(域名系统)使用53端口,NTP(网络时间协议)使用123端口。
  • 当UDP数据报到达接收端时,操作系统会根据UDP头部中的目的端口号将数据报发送到对应的应用程序。例如,一个发送到目的端口号为8080的UDP数据报会被交给在接收端监听8080端口的应用程序。
  • 校验和原理
  • UDP校验和是一种简单的差错检测机制。发送端在发送UDP数据报时,会计算数据报(包括UDP头部和数据部分)的校验和。计算方法是将数据报看作是16位的整数序列,进行二进制反码求和运算。接收端在收到UDP数据报后,同样进行校验和计算,并与收到的校验和进行比较。如果两者不相等,那么数据报在传输过程中可能出现了差错,接收端可以选择丢弃该数据报。不过,UDP校验和是可选的,如果发送端没有计算校验和,接收端在接收时就不会进行校验和验证。

四、示例

  • 实时视频流传输
  • 在实时视频直播场景中,例如网络体育赛事直播。视频源(如摄像机)将视频数据不断地封装成UDP数据报发送给服务器。服务器收到UDP数据报后,经过一些处理(如重新封装、转码等),再将UDP数据报发送给各个客户端。由于视频直播对实时性要求极高,少量的数据报丢失(比如画面中的一帧丢失)不会对观众的观看体验产生太大影响,而且UDP的高效性可以保证视频数据能够快速地传输,减少延迟。
  • DNS查询
  • 当用户在浏览器中输入一个网址(如www.example.com)时,计算机需要通过DNS查询来获取该网址对应的IP地址。计算机发送的DNS查询请求通常是使用UDP协议。DNS客户端将查询请求封装成UDP数据报发送给DNS服务器,DNS服务器在收到请求后,会查询自己的数据库,并将查询结果(IP地址)封装成UDP数据报返回给客户端。UDP的快速性使得DNS查询能够在短时间内完成,提高了网络访问的效率。

五、分类

  • 从应用场景角度分类
  • 实时通信类:如VoIP(网络电话)、视频会议等应用。这些应用需要保证数据的实时传输,对延迟非常敏感,能够接受一定程度的数据丢失。UDP可以提供低延迟的通信服务,满足这些应用的需求。
  • 简单查询 - 响应类:像DNS查询、SNMP(简单网络管理协议)查询等。这些应用通常是发送一个简短的请求,然后等待一个相应的简短回复。UDP的高效性和无连接性使得这些查询能够快速完成。
  • 数据报分发类:在一些分布式系统中,需要将数据报快速地分发给多个接收者,例如一些实时数据监控系统,将传感器采集的数据快速地发送给多个监控终端,UDP可以高效地完成这种数据报分发任务。

六、发展

  • 早期应用阶段
  • UDP最初是作为一种简单的传输协议出现的,主要用于一些对实时性要求较高但对可靠性要求相对较低的应用场景。在早期的互联网发展中,如简单的网络文件系统原型、早期的音频/视频流实验等应用中,UDP就已经开始发挥作用。它的简单性使得开发人员能够快速地实现基本的网络通信功能,不需要复杂的连接建立和维护过程。
  • 适应新应用场景的扩展
  • 随着互联网应用的不断丰富,UDP也在不断适应新的场景。例如,在网络游戏领域,为了实现游戏中的实时位置更新、动作同步等功能,UDP被广泛应用。同时,为了在一定程度上弥补UDP不可靠的缺点,游戏开发者会在应用层开发一些自己的差错控制和数据同步机制。
  • 与其他技术的融合与优化
  • 近年来,UDP与一些新技术如网络功能虚拟化(NFV)、软件定义网络(SDN)等相结合。在NFV和SDN环境下,UDP的流量可以被更灵活地管理和优化。例如,通过SDN控制器可以对UDP数据流进行优先级划分,使得重要的UDP实时数据(如医疗影像远程传输)能够优先通过网络,同时也可以对UDP的流量进行监测和安全防护,防止UDP数据报被恶意利用。

3.4 面向连接的数据传输:TCP

概念

  • TCP即传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议.
  • 它运行于端系统之间,为主机上的应用进程提供可靠的端到端通信服务,确保数据能够准确、有序地从源端进程传输到目的端进程.
  • TCP连接是一条逻辑连接,其状态信息保留在通信两端的TCP程序中,中间的网络元素(如路由器和链路层交换机)不会维持TCP连接状态.

过程

  • 建立连接(三次握手):客户端发送一个SYN报文段给服务器端,其中包含客户端的初始序列号,进入SYN_SEND状态;服务器端收到SYN报文后,回应一个SYN+ACK报文段,该报文段中的SYN标志位为1表示服务器的同步请求,ACK标志位为1表示对客户端SYN的确认,同时包含服务器的初始序列号和对客户端序列号的确认号,服务器进入SYN_RECV状态;客户端收到服务器端的SYN+ACK报文后,发送一个ACK报文段作为最后的确认,此ACK报文段中的确认号是服务器端的初始序列号加1,客户端进入ESTABLISHED状态,服务器端收到客户端的ACK后也进入ESTABLISHED状态,此时TCP连接建立成功,可以开始传输数据.
  • 数据传输:连接建立后,应用层数据被传递给TCP层,TCP将数据分割成适当长度的报文段,并为每个报文段添加首部信息,包括源端口、目的端口、序列号、确认号等。然后将报文段传递给IP层进行网络传输。接收端的TCP收到报文段后,根据序列号将数据放入接收缓存,并向发送端发送确认报文段,告知已成功接收的数据。发送端根据接收端的确认信息来调整发送窗口和重传定时器等.
  • 关闭连接(四次挥手):主动关闭方发送一个FIN报文段,表示自己没有数据要发送了,进入FIN_WAIT_1状态;接收方收到FIN报文后,发送一个ACK报文段作为确认,进入CLOSE_WAIT状态,此时主动关闭方进入FIN_WAIT_2状态;接收方在处理完剩余数据后,也发送一个FIN报文段给主动关闭方,进入LAST_ACK状态;主动关闭方收到FIN报文后,发送一个ACK报文段作为最后的确认,进入TIME_WAIT状态,等待一段时间后(2倍的最大段生存期,MSL),主动关闭方正式关闭连接,接收方收到ACK后也关闭连接.

原理

  • 可靠传输:通过给每个报文段添加序列号,接收方可以根据序列号对收到的数据进行排序和重组,确保数据的顺序性;发送方在发送数据时启动超时定时器,如果在定时器超时之前未收到接收方的确认报文段,则认为数据丢失,会重传该数据;接收方对收到的每个正确的报文段都发送确认,采用累积确认的方式,即确认号表示期望收到的下一个字节的序号,这样可以减少确认报文段的数量.
  • 流量控制:采用滑动窗口机制,发送方和接收方都维护一个窗口,窗口大小表示对方可以接收的数据量。发送方根据接收方的窗口大小来调整发送的数据量,防止接收方的缓冲区溢出。接收方通过在确认报文中告知发送方自己的窗口大小,来控制发送方的发送速率.
  • 拥塞控制:TCP的拥塞控制算法主要包括慢启动、拥塞避免、快速重传和快速恢复等机制。慢启动阶段,发送方将拥塞窗口初始化为一个较小的值,然后随着收到的确认报文段数量的增加,按指数增长方式扩大拥塞窗口大小;当拥塞窗口大小超过慢启动阈值时,进入拥塞避免阶段,拥塞窗口按线性方式增长;快速重传机制是当发送方收到对同一个报文段的三个重复确认时,立即重传该报文段,而不必等到超时定时器超时;快速恢复机制是在快速重传之后,不经过慢启动过程,直接进入拥塞避免阶段,并适当调整拥塞窗口和慢启动阈值的大小.

示例

  • 网页浏览:当用户在浏览器中输入网址并请求访问一个网页时,浏览器与网站服务器之间会建立一条TCP连接。浏览器将HTTP请求报文发送给服务器,服务器收到请求后通过TCP连接将网页数据以报文段的形式发送回浏览器,浏览器接收到数据后进行重组和渲染,展示出网页内容。在这个过程中,TCP负责保证数据的可靠传输,确保网页数据能够完整、准确地从服务器传输到浏览器。
  • 文件传输:使用FTP或其他文件传输协议进行文件传输时,也是基于TCP实现的。客户端与服务器建立TCP连接后,客户端将文件读取并分割成多个数据块,通过TCP连接发送给服务器,服务器收到数据后将其写入到本地文件中。TCP的可靠传输机制保证了文件在传输过程中不会出现数据丢失或损坏的情况,确保文件能够完整地传输到目的地。

分类

  • 按应用场景分类:一般的TCP连接用于普通的数据传输场景,如网页浏览、文件传输、电子邮件等;而一些特殊的TCP应用,如实时视频流传输、音频通话等,对实时性要求较高,虽然也是基于TCP协议,但可能会在协议的基础上进行一些优化和调整,以满足实时性的要求。
  • 按性能优化分类:标准TCP协议是指遵循RFC 793等标准定义的TCP协议;而优化后的TCP协议则是针对不同的网络环境和应用需求,对标准TCP协议进行了一些性能优化,如采用新的拥塞控制算法、增大窗口尺寸等,以提高TCP的传输效率和性能,例如Google提出的BBR拥塞控制算法就是对传统TCP拥塞控制的一种优化。

发展

  • 初始定义:1981年9月,TCP的正式定义由RFC 793给出.
  • 错误修复与澄清:随着网络技术的发展和应用场景的多样化,陆续发布了一些RFC对TCP进行完善和修正,如RFC 1122修复了一些bug,RFC 793 plus对相关说明进行了澄清.
  • 性能扩展:RFC 1323做了高性能扩展,引入了窗口扩大选项、时间戳选项等,提高了TCP在高速网络环境下的性能;RFC 2581说明了拥塞控制机制,进一步完善了TCP的拥塞控制算法.
  • 功能增强:RFC 2018定义了选择性确认,提高了TCP对丢失数据的恢复能力;RFC 2873定义了为服务质量而重用的头字段,使得TCP能够更好地支持不同的服务质量要求;RFC 2988改进了重传计时器,优化了TCP的重传机制.
  • 拥塞通知:RFC 3168定义了显式拥塞通知,使得网络中的路由器等设备能够向TCP发送端反馈拥塞信息,帮助发送端更及时地调整发送速率,避免网络拥塞.

运输层的改进

  • 协议功能增强:早期网络中的运输层功能相对简单,随着技术发展,协议功能不断增强。如TCP协议在最初版本基础上,增加了选择性确认(SACK)等功能,能更精准地处理乱序接收和数据丢失问题,提高数据传输效率.
  • 性能优化:在网络带宽不断增加和应用场景日益复杂的背景下,运输层协议不断优化性能。例如,TCP的拥塞控制算法经历多次改进,从最初的Tahoe、Reno,到后来的New Reno、Cubic等,使网络在高带宽、高延迟环境下能更充分利用带宽资源,同时避免拥塞崩溃.
  • 安全性提升:随着网络安全重要性的凸显,运输层引入了安全机制。如在TCP/IP协议簇中,通过TLS/SSL协议在运输层之上为应用层提供加密和身份验证服务,保障数据传输的保密性、完整性和真实性,广泛应用于电子商务、网上银行等对安全要求高的领域 。
  • 对新应用场景的支持:为满足物联网、移动互联网等新兴应用场景需求,运输层也在不断改进。例如,针对物联网设备低功耗、低带宽、大量连接的特点,优化UDP协议或开发新的轻量级协议;在移动互联网中,应对网络切换、信号不稳定等问题,改进运输层协议以保障数据传输的连续性和可靠性。

3.5 TCP连接管理

  • 一. 概念

  • TCP连接管理指的是对TCP连接从建立、数据传输到连接释放的全过程进行有效管理和控制,确保通信双方能够可靠、有序地进行数据交互.

  • 二. 过程
    建立连接(三次握手):客户端向服务器发送带有SYN标志的TCP报文段,请求建立连接,其中包含客户端初始序列号;服务器收到后,返回SYN + ACK报文段,ACK是对客户端SYN的确认,同时也包含服务器自己的初始序列号;客户端再发送一个ACK报文段来确认服务器的SYN,至此连接建立.
    数据传输:连接建立后,双方可进行数据传输。发送方将应用层数据分割成合适大小的报文段,添加TCP首部信息后发送。接收方根据首部信息识别数据所属应用进程,并将数据交给相应进程。发送方会等待接收方的确认,若未收到确认,会进行重传.
    拆除连接(四次挥手):通信结束后,主动关闭方发送带有FIN标志的报文段,表示无数据发送;接收方收到FIN后,返回ACK报文段确认。若接收方还有数据要发送,待数据发送完后,再发送FIN报文,主动关闭方收到后发送ACK报文段,连接完全关闭.

  • 三. 原理

    • 序列号与确认号机制:通过序列号对发送的数据报文段编号,接收方用确认号告诉发送方期望收到的下一个报文段的序列号,实现数据的可靠传输和按序接收.
    • 滑动窗口机制:接收方通过告知发送方接收窗口大小,控制发送方的发送速度,实现流量控制,防止接收方因来不及接收数据而丢失.
    • 定时器管理:发送方为每个发送的报文段设置定时器,若定时器超时未收到确认,就重传该报文段,确保数据不丢失.
  • 示例:如网页浏览中,用户通过浏览器访问网站,浏览器与网站服务器之间通过TCP连接进行数据交互。浏览器发送HTTP请求时,先与服务器建立TCP连接,经过三次握手后,浏览器将请求数据以TCP报文段形式发送给服务器,服务器接收并处理后,将响应数据以TCP报文段形式返回给浏览器,数据传输完成后,通过四次挥手关闭TCP连接.

  • 分类:从连接的发起方和接收方角度来看,可分为客户端发起连接和服务器端接受连接并进行相应管理等情况;从连接的状态来看,可分为连接未建立、连接建立中、连接已建立、连接关闭中、连接已关闭等不同状态下的管理 。

  • 发展:早期的TCP连接管理相对简单,随着网络应用的复杂多样和对性能要求的提高,不断发展完善。例如,在连接建立阶段,为防止SYN Flood攻击等安全问题,引入了SYN Cookie等技术;在拥塞控制方面,从早期的简单算法发展到多种复杂、智能的拥塞控制算法,以更好地适应不同网络环境和应用需求.

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐