计算机网络技术(三)——网络协议和体系结构

摘要

  1. 网络协议和体系结构概述
  2. OSI参考模型
  3. TCP/IP参考模型
  4. TCP和UDP

一、网络协议和体系结构概述

  • 网络协议是什么?
    为了保证数据通信正常进行,通信双方需要事先做一些规定,例如,使用哪种编码方式、差错编码和交换技术等,双方必须在这些规定上达成一致,彼此才能互相 ”理解“,这种通信双方必须遵守的规则和约定称为协议。

  • 协议的要素是什么?
    1)语法——规定通信双方”如何讲“,即确定数据格式、数据码型和信号电平等;
    2)语义——规定通信双方”讲什么“,即确定协议元素的类型,如规定通信双方要发出什么控制信息、执行什么动作和返回什么应答等;
    3)时序——规定事件执行的顺序,即确定数据通信过程中通信状态的变化,如规定正确的应答关系等。

  • 分层的思想
    数据通信中从底层信号的编码一直到完整的数据分组的交换不仅技术复杂,涉及面很广,而且很难在一个协议中完成所有功能。因此在制定协议时经常采用的思路是将复杂的数据通信功能由若干协议分别完成,然后将这些协议按照一定的方式组织起来,最典型的是采用分层的方式来组织协议。分层的思想是上一层的功能建立在下一层的功能基础上,且在每层内遵守一定的通信规则。
    分层的优点:
    1)各层之间相互独立。高层不需要了解低层的工作机制、技术细节,只需知道低层提供的接口(接口隔离)。
    2)灵活性高,便于实现和维护。针对一个复杂的系统,整体设计很难做到,进行分层后,可以集中在某个层的研究,利于扩展和替代(单一职责)。
    3)有利用标准化。明确了某一层的功能后,就可以针对这些确定的功能制定相应的标准。

  • 网络体系结构
    层次和协议的集合构成了网络的体系结构。
    典型的层次化体系结构有:OSI参考模型和TCP/IP参考模型。

二、OSI参考模型

OSI模型(Open System Interconnection)—— 1984年,负责制定国际标准的国际标准化组织ISO吸取了IBM的SNA和其他计算机厂商的网络体系结构,提出了开放系统互联OSI参考模型。开放指的是数据通信中的设备都可以互相通信。

2.1 OSI参考模型各层的功能

OSI参考模型采用分层结构化技术,将整个网络的通信功能分为7层,由低层到高层分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。如下图所示,各层的数据并不是从一端的第N层直接送到另一端的对应层,第N层接收第N+1层的协议数据单元(PDU),按第N层协议进行封装,构成第N层PDU,再通过层间接口传递给第N-1层,……,最后,数据链路层PDU(通常称为数据帧)传递给最底层的物理层。

OSI参考模型
  • 物理层
    主要功能是将0和1这些比特以合适的信号传送到目的地,需要实现信号编码功能,另外还规定数据终端设备与数据通信设备之间接口的相关特性,主要包括机械、电气、功能和规程4个方面特性。

  • 数据链路层
    主要功能是实现相邻结点间数据可靠有效地传输。为了实现有效的差错控制,采用了一种以”帧“为单位的数据块传输方式。在数据码后面附加一定位数的循环码,从而实现数据链路层的差错控制功能。另一个重要功能是寻址,即用来确保每一帧都能准确的发送到目的地。

  • 网络层
    主要功能是数据转发与路由。在交换网络中,信息从源结点出发,要经过若干个中继结点存储转发后,才能到达目的结点。这些结点的集合称为路径,一般在两个结点间会有多条路径选择,这种路由选择就是网络层要解决的问题。此外,网络层也具有寻址功能,确保分组正确地传输到目的主机。

  • 传输层
    主要功能包括复用/解复用(区分发送和接收主机上的进程)、端到端的可靠数据传输、连接控制、流量控制和拥塞控制。
    传输层是第一个端到端的层次,也是进程-进程的层次。数据的通信表面上看是在两台主机之间进行,但实质上是发生在两个主机的进程之间。为了防止传送途中报文的丢失,两个主机进程之间需要实现端到端控制。

  • 会话层
    会话层是指用户与用户的连接,它通过在两台计算机间建立、管理和终止通信来完成会话。主要功能是:在建立会话时核实双方身份是否有权参加会话;双方在各种选择功能方面(如全双工还是半双工)取得一致;会话建立后,需要对进程间的会话进行管理与控制。会话层的功能已被应用层所覆盖,故很少单独存在。

  • 表示层
    主要解决数据格式和表示的差别,为应用层提供一个一致的数据格式,这一层也在应用层实现了,也不单独使用。

  • 应用层
    为用户提供网络服务,如文件传输,电子邮件应用等。

OSI参考模型的7层中,1-3(自底向上)层主要完成数据交换和数据传输,称为网络低层,即通信子网;5-7层主要完成信息处理服务,称为网络高层;低层与高层之间由第4层的传输层衔接。

2.2 OSI参考模型的有关术语

实体——网络中的每个层中都有产生和接受数据的元素,称为实体(可以是软件或硬件)。
对等实体——不同通信结点上的同一层次中的实体构成了通信的双方,称为对等实体。除了最底层的物理介质,其他层次的对等实体无法直接通信,必须将数据一层层向下传递,直到物理传输介质,才能实现对等实体间的通信。

OSI参考模型中每一层的真正功能是为其上一层提供服务。例如,N层的实体为(N+1)层的实体提供服务,N层的服务则需使用(N-1)层及更低层提供的功能服务。下面介绍OSI中常用的几个术语。

  • 数据单元(PDU)
    在层的实体之间传递的比特数组称为数据单元。在对等层之间传递数据单元式按照本层协议进行的,这时的数据单元称为协议数据单元。
    下图展示了数据单元的传送过程:
层间数据单元的传送

图中PDU是协议数据单元;SDU是服务数据单元;PCI是协议控制信息,通常作为PDU的首部。(N+1)PDU在越过N+1和N层的边界后,变换为N-SDU [N层把(N+1)-PDU看成为N-SDU]。N层在N-SDU上加上N-PCI,则成为N-PDU。在N-PDU和(N+1)-PDU之间并非是一一对应的关系。如果N层认为有必要,可以把(N+1)-PDU拆成几个单元,加上PCI后成为多个N-PDU,或者把多个(N+1)-PDU连接起来,形成一个N-PDU。
到达目的站的N-PDU,在送往(N+1)层之前要把N-PCI去掉。在层间通信中PCI相当于报头,即首部。在源点逐层增加新的PCI,到达目的地后则逐层去掉,恢复原来的信息。

  • 服务访问点
    相邻层间的服务是通过其接口面上的服务访问点(Service Access Point,SAP)进行的,N层SAP就是(N+1)层可以访问N层的地方。如上图绿色圆点所示。

  • 服务原语
    第(N+1)层请求N层提供服务,都有使用一组原语(Primitive)来描述的。OSI参考模型的原语有4类:
    1)请求(Request):用户实体请求服务做某事
    2)指示(Indication):用户实体被告知某事发生
    3)响应(Response):用户实体表示对某事的响应
    4)确认(Confirm):用户实体收到关于它的请求的答复

下图为原语的图解形式:

原语的图解形式

上图为系统A中N+1层用户和系统B中N+1层用户之间建立通信联系时4种原语的应用。首先,系统A中N+1用户发出请求原语,调用本系统N服务提供者的一些程序,于是N服务提供者向对方发送了一个或一组N-PDU。当系统B的N服务提供者收到N-PDU后,向本系统的N+1用户发出指示原语,说明本系统的N+1用户需要调用一些程序,或者N服务提供者已经在同级服务访问点调用了一个程序。响应原语是由系统B的N+1用户发出的,这个响应原语是对N层协议的一个指令,以完成原来由指示原语调用的程序。N层协议产生一个PDU,传送至系统A的N层。系统A的N服务提供者发出证实原语,表示在服务访问点已经完成了由请求原语调用的程序。证实和响应可以是确认也可以是否认,这取决于具体情况。

  • 面向连接和无连接
    在分层的体系结构中,下层向上层提供服务通常有两种形式:面向连接的服务和无连接的服务。
    1)面向连接的服务:在发送数据前先请求建立连接,当双方同意后,双方的通信链路就建立起来了,第二步是传送数据,以分组为单位,按序发送,不标明地址,只标明建立的链路号,最后数据传输结束后拆除链路。
    2)无连接的服务:没有建立和拆除链路的过程,要求每一个分组信息带有全称地址,独立选择路径,其到达目的地的顺序也是不定的,到达目的地后,还要重新对分组进行排序。

三、TCP/IP参考模型

TCP/IP参考模型包括4层,通常每一层封装的数据包采用不同的名称,如下图:

TCP/IP参考模型

下面介绍TCP/IP参考模型各层的主要功能及协议。

  • 应用层
    TCP/IP参考模型将OSI参考模型中的会话层和表示层的功能合并到了应用层来实现。用户通过应用层来使用Internet提供的各种服务,例如WWW服务、文件传输、电子邮件等,每种应用都使用了相应的协议,如,WWW服务的应用层协议是HTTP、文件传输的应用层协议是FTP等。

  • 传输层
    当应用层的程序将用户数据按照特定应用层协议封装好后,就会发给传输层,传输层协议可以解决诸如端到端可靠性、保证数据按照正确的顺序到达等问题。传输层主要包括面向连接、提供可靠数据流传输的传输控制协议(TCP)和无连接、不提供可靠数据传输的用户数据报协议(UDP)。

  • 网络互联层
    网络互联层是整个TCP/IP参考模型的核心,主要解决把数据分组发往目的网络或主机的问题。在这个过程中,要为分组的传输选择相应的路径(路由选择),完成分组的转发,提供网络层寻址——IP地址。网络互联的核心协议是IP,负责定义分组的格式和传输。

  • 网络接口层
    这一层包括OSI参考模型中的数据链路层和物理层,不同网络类型将上层的IP分组封装到数据帧中,最终以比特流的形式进行传输。

在实际的数据通信过程中,用户的数据在应用层以报文的形式开始向下一层进行封装,形成段、数据报、帧,最后以比特流的形式进行传输。在中间结点处,例如路由器、交换机等,分别从对应的数据报、帧中取出并对相应的路由、地址信息进行处理,送达目的主机后由下层到上层开始逐层处理,并去掉相应的头部信息,最终还原为最初的报文。整个数据封装和传输流程如下图:

TCP/IP参考模型封装和传输示意图

TCP/IP参考模型与OSI参考模型的区别:

  • 层次划分不同。OSI参考模型将网络划分为7层,而TCP/IP参考模型只有4层。TCP/IP中没有表示层和会话层,并将OSI模型中的物理层和数据链路层的功能合并起来放到了网络接口层。

  • 面向连接和面向无连接的通信不同。OSI在网络层支持面向连接和面向无连接的通信,在传输层仅有面向连接的通信;而TCP/IP在网络层仅有面向无连接的通信,在传输层支持两种方式。

  • 与具体协议的配合程度。OSI没有偏向某种特定协议,有很好的通用性,也因此有些功能不知大该放哪一层。而TCP/IP模型是先有的TCP、IP具体协议,再在这些协议基础上建立的参考模型,对协议配合的很好。

四、TCP和UDP

4.1 TCP/IP参考模型中的传输层
  • 传输层的功能
    功能主要包括:为应用进程之间提供端到端的逻辑通信,传输层通常还对收到的报文进行差错检测;传输层协议要针对应用层实现复用与解复用的功能等。

  • 端口号
    为了在不同主机、不同操作系统上的应用进程之间互相通信,必须使用统一的寻址方法对应用进程进行标识,解决方法就是在传输层使用协议端口号(Protocol Port Number),简称端口(Port)。一台主机上有若干个服务进程,但都使用同一个IP,为了区分每个服务,采用“IP地址+端口号”的方式,IP用于识别网络中的主机,端口号用于识别哪一个服务或进程。

  • 端口号分类
    端口号是一个16位的二进制数,根据端口号大小,可以分为:熟知端口、注册端口和客户端口等。
    熟知端口号:0~1023,固定分配给一些服务(如80,21)
    注册端口号:1024~49151,必须在IANA登记,以防重复;
    客户端口号:49152~65535,留给客户进程选择暂时使用。

  • 传输层的分类
    提供无连接与面向连接两类服务,其中无连接服务是指数据传输之前无需与对端进行任何信息交换,即”握手“,直接构造数据分组,直接发送出去;面向连接服务是指在数据传输之前,需要交换一些控制信息,建立连接,然后再传输数据,传输结束后再拆除连接。Internet网络提供无连接服务的传输层协议是UDP,提供面向连接服务的传输层协议是TCP。

4.2 UDP

UDP(User Datagram Protocol,用户数据报协议),是一种无连接的传输层协议。

  • UDP数据报结构
    其数据报结构如下图所示:
UDP数据报结构

其中源端口号、目的端口号、长度和检验和字段构成了UDP首部。

源/目的端口:数据发送方将UDP数据报通过源端口发送出去,而数据接收方则通过目的端口接收数据。源端口号和目的端口号都是两个字节长度,端口范围是0~65535。

数据报的长度:是首部和数据部分的总字节数。因首部长度是固定的,所以该字段常用来计算可变长度的数据部分。理论上数据报的最大长度为65535B,一些实际应用往往会限制数据报大小,降低到8192B。

检验和:用来保证数据的安全。该值是数据发送方通过特殊算法计算得出,接收方收到后,还需要再重新计算。如果数据报在传输过程中被修改或损坏,发送方与接收方的检验和计算值将不同,因此可用于检测数据是否出错。

  • UDP的工作机制
    1)UDP是一个无连接协议,传输数据前源端和终端不建立连接,UDP从应用程序抓取数据后发送到网络上,传送速度取决于程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放到队列里,应用程序每次从队列中读取一个消息。
    2)由于传输不建立连接,因此不需要维护连接状态,包括收发状态等,因此服务机可以同时向多个客户机发送相同的数据。
    3)UDP数据报的首部很短,只有8个字节,相对于TCP的20个字节首部,其数据报开销很小。
    4)吞吐量不受拥塞算法的调节,只受应用程序生成数据的速度、传输带宽、源端和终端主机性能的限制。
    5)UDP不保证可靠支付,因此主机不需要维持复杂的连接状态表。
    6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交给IP层。

虽然UDP是个不可靠的协议,但它非常适合对于速率要求高、而对精确度要求相对较低的网络应用,比如视频会议、视频点播和网络电话等。

4.3 TCP

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。由于IP不提供可靠的通信服务,因此主机之间要实现可靠的数据传输,需要使用TCP的传输控制。为了防止数据报丢失,TCP给每个数据报添加一个序号,同时序号也保证了接收端的按序接收。接收端会对成功收到的数据报发回相应的确认(ACK);如果发送端在合理的往返时延(RTT)内未收到确认,则认为数据被丢失,需要重传。TCP使用一个检验和函数来检验数据是否有错误。

4.3.1 TCP数据报的首部结构
TCP数据报首部结构

各字段的说明:
1)源端口与目的端口:分别占16位,标识发送该数据报的源端口和目的端口。
2)序号:分别占32位。TCP的序号是对每个应用层数据的每个字节进行编号,因此每个TCP段的序号是该段所封装的应用层数据的第一个字节的序号。
3)确认序号:期望从对方接收数据的字节序号,即该序号对应的字节尚未收到,该序号之前的字节已被全部接收,也就是说,TCP采用累积确认机制。
4)首部长度:占4位,指出TCP段的首部长度,以4B为计算单位。
5)保留:占6位,保留为今后使用,目前值为0。
6)URG、ACK、PSH、RST、SYN、FIN:各占1位,共占6位。各字段具体含义:URG = 1 时,表明紧急指针字段有效,通知系统此报文段中有紧急数据,应尽快传送(相当于高优先级数据);ACK = 1 时,标识确认号字段有效,当ACK = 0 时,确认号无效;收到PSH = 1 时,尽快把缓存数据交给应用进程;RST = 1 时,表明TCP连接出现差错,需要释放并重新连接;SYN = 1 时,表示这是一个建立新连接请求控制段或者同意建立新连接的确认段;FIN = 1 时,请求释放TCP连接。
7)窗口:占16位,用于向对方通告接收窗口大小(单位为字节),其值是本端接收对方数据的缓存剩余空间,用于实现TCP流量控制。
8)检验和:通过特殊算法计算得出,检验TCP首部和应用数据。
9)紧急指针:占16位,指出在本报文段中紧急数据共有多少字节(紧急数据放在本报文段数据的最前面)。
10)选项:最大段长度MSS选项——告知对方本地缓存能接收的数据段最大长度是MSS个字节;窗口扩大选项;时间戳选项;选择确认选项。
11)填充:长度为0~3个字节,取值全为0,目的是使整个首部长度是4B的整数倍。

4.3.2 TCP连接管理

TCP是面向连接的传输协议,其连接功能是通过TCP的连接管理实现的,TCP连接管理包括连接建立、数据传输和连接拆除3个阶段。
TCP连接建立过程要解决以下3个问题:
1)要使通信双方能够确知对方的存在。
2)要允许双方协商通信过程中的相关参数(如最大窗口值、是否使用窗口扩大选项等)。
3)能够对传输实体的资源进行分配(如缓存大小)。

4.3.3 TCP连接建立

TCP的建立采用客户/服务器方式。主动发起连接建立的应用进程为客户,被动等待连接建立的应用进程为服务器。TCP的建立过程可以形象的描述为”三次报文握手“。
假设A主机运行TCP客户程序,B主机运行TCP服务器程序,则A与B建立TCP连接的过程如下图所示:

TCP连接建立过程

1)A的TCP向B发出连接请求报文段,其首部中的同步位SYN = 1,并选择初始序号seq = x,表明传送数据的第一个字节的序号是x。(第一次报文握手)

2)B的TCP收到连接请求报文段后,如同意,则发回确认。B在确认报文段中使SYN = 1,ACK = 1,确认序号ack = x + 1,初始序号 seq = y。(第二次报文握手)

3)A收到此确认报文段后向B给出确认,其中ACK = 1,SYN = 0,seq = x+1,ack = y + 1。(第三次报文握手)

SYN = 1的字段不能携带数据,但是要消耗一个序号,ACK = 1的字段可以携带数据,如果不携带数据则不消耗序号。

  • 为什么需要第三次握手?
    假设出现这样一种异常情况,A向B发送连接请求,但该请求在某个网络结点长时间滞留了,导致A未收到B的确认,这时,A又重新发送一次连接请求并收到B的确认,建立连接、传送数据、最后正常释放连接,这时如果第一次发送的连接请求因延时到达了B,B认为此失效的连接是A又发出新的连接请求,于是向A发出确认报文,同意建立连接,但A不会理会B的确认,也不会给B发送数据,就浪费了一个连接,所以才需要通过第三次握手确认来规避此问题。
4.3.4 TCP连接释放

TCP连接建立后,就可以进行数据传送,数据传送结束后,还需要进行连接释放,TCP的连接释放需要经过4次报文握手过程。如下图所示:

TCP连接释放过程

1)TCP通信双方都可以释放连接,假设由A发起释放,则A向B发送释放连接控制报文段,并停止再发送数据。报文段首部中的终止控制位FIN = 1,其序号seq = u,然后A等待B的确认。

2)B收到A发出的释放连接控制报文后,立即向A发送确认报文段,确认报文段的ACK = 1,ack = u + 1,seq = v。A收到B的确认后,进入等待状态,等待B发出的释放连接控制报文段。

3)如果B已经没有要向A发送的数据,则B向A发送释放连接控制报文段,其中FIN = 1,seq = w,ack = u + 1。

4)A收到B的释放连接控制报文段后,要向B发送确认报文段,其中ACK = 1,seq = u + 1,ack = w+ 1,B收到该确认报文段后,可以马上释放连接;A在发出该确认段后,延迟一段时间再释放连接。

常见问题:

  • 为什么建立连接是三次握手,释放连接时四次握手?
    在建立连接的第二次握手过程中,其实执行了两个步骤,一是发送确认报文段,另一个是发送同步报文段,只不过分开发送与合并发送效果一样,所以才有了”三次“握手;至于释放连接时需要把服务端的确认报文段与同步报文段分开发送,是因为当服务端收到客户端的释放请求时,服务端可能还有未处理完的数据,等服务端处理完后,再发送释放连接报文段给客户端,所以会有”四次“握手。

  • 为什么客户端在TIME-WAIT阶段要等2MSL?
    MSL——最长报文段寿命(Maximum Segment Lifetime)
    第一,为了保证A发送的最后一个ACK报文段能够到达B。这个ACK报文段有可能丢失,因而使B收不到对已发出的FIN+ACK报文段的确认。B会超时重传这个FIN+ACK报文段,而A就能在2MSL时间内收到这个重传的FIN+ACK报文段。接着A重传一次确认,重新启动2MSL计时器。最后,A和B都正常进入到CLOSED状态。如果A在发送完ACK报文段后立即释放连接,那么就无法收到B重传的FIN+ACK报文段,因而也不会再发送一次确认报文段。这样,B就无法正常进入CLOSED状态。
    第二,防止”已失效的连接请求报文段“出现在本连接中。A在发送完最后一个ACK报文段后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样就可以使下一个新的连接中不会出现这样旧的连接请求报文段。

  • 如果已经建立了连接,但是客户端突然出现故障了怎么办?
    TCP有一个保活计时器(keepalive timer)。服务器没收到一次客户的数据,就重新设置保活计时器,时间通常使两小时。若两小时没有收到客户的数据,服务器就发送一个探测报文段,以后则每隔75秒发送一次。若一连发送10个探测报文段后仍无客户的响应,服务器就认为客户端出了故障,接着就关闭这个连接。

4.3.5 TCP可靠数据传输的工作机制

1)应用数据被分割成TCP认为最适合发送的数据块。由TCP传递给IP的信息单位称为报文段或段(Segment)。

2)当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,则认为该报文段被丢失,将重发这个报文段。

3)TCP首部中设有检验和字段,用于检测数据在传输中是否发生变化。如果有变化,TCP将丢弃此报文段,发送端会超时重发。

4)由于IP层是无连接的,数据报的到达可能会经过不同的路径,因此数据到达顺序也不同,需要将收到的数据重新排序。

5)由于网络延迟和重传机制,接收端可能会收到重复数据,这时需要对重复数据进行丢弃。

6)TCP能够提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。

流量控制(Flow Control)是TCP的重要功能,流量控制的目的是使发送端的数据发送速率不要太快,确保接收端能够来得及接收,即接收端的数据缓存不会溢出。为此,接收端在给发送端发送数据段(ACK=1)或单纯确认段时,通知剩余接收缓存空间作为接收窗口,发送端在接下来发送数据段时,控制未确认段的应用层数据总量不超过最近一次接收端告知的接收窗口的大小,从而确保接收端不会发生缓存溢出。

4.3.6 拥塞控制

拥塞控制(Congestion Control)是从端到端的角度推测网络是否发生了拥塞,如果推断网络发生了拥塞,则立即将数据发生速率降下来,以便缓解网络拥塞。

  • TCP的拥塞控制实现方式
    采用的是窗口机制,通过调节窗口的大小实现对数据发送速率的调整。TCP的发送端维持一个称为拥塞窗口cwnd的变量,单位为字节,用于表示在未收到接收端确认的情况下,可以连续发送的数据字节数。cwnd的大小随着网络拥塞程度动态变化。

  • 网络拥塞的判断条件
    在发送端设置一个重传计时器RTO,对于某个已发出的数据报文段,如果在RTO计时到期后,还没有收到来自接收端的确认,则认为此时网络发生了拥塞。

  • 拥塞控制算法
    包括慢启动(Slow Start)、拥塞避免(Congestion Avoidance)、快速重传(Fast Retransmit)和快速恢复(Fast Recovery)。

1)慢启动算法:作用在TCP数据传输的开始阶段,当主机开始发送数据时,因为不知大网络中的负荷情况,如果立即发送大量的数据,有可能会引起网络的拥塞。因此,TCP采用试探的方法,逐渐增大拥塞窗口。

2)拥塞避免算法:如果定义从发送端发出一个数据报文段到收到这个数据报文段的确认的时间间隔为往返时间RTT,则在慢启动阶段,每经过一个RTT,cwnd的值就加倍。为了防止拥塞窗口增长过快而引起网络拥塞,TCP还设置了一个慢启动阈值ssthresh,当拥塞窗口的值增加到ssthresh时,就要减缓拥塞窗口的增长速度,具体做法时每经过一个RTT,拥塞窗口cwnd的值加1(单位为MSS),这样就可以使cwnd按线性缓慢增长,这个过程称为”加性增加(Additive Increase)“算法。当发生网络拥塞时,发送端首先将ssthresh的值变为发生超时时cwnd值的一半,同时将cwnd设为1,重新执行慢启动算法,这个过程称为”乘性减小“(Multiplicative Decrease)算法。”加性增加“和"乘性减小"算法合起来称为AIMD算法。

3)快速重传算法:接收端每收到一个失序的数据报文段后就立即发出重复确认,如果发送端收到某个数据报文段的3个重复确认,则立即重传下一个数据报文段。

4)快速恢复算法:是配合快速重传使用的算法,当发送端连续收到3个重复确认时,就将慢启动阈值ssthresh减半,以预防网络拥塞的发生,并且将拥塞窗口cwnd的值置为减半后的ssthresh,然后开始执行拥塞避免算法,使得cwnd缓慢地加性增大。

总结

  • 介绍了计算机网络协议和体系结构的概念,网络分层思想的作用和意义。

  • OSI参考模型的定义即各层的功能。

  • TCP/IP参考模型4个层次的划分及各层的功能,分析OSI和TCP/IP参考模型的区别。

  • 传输层端口的概念,介绍了UDP的数据结构和工作机制。

  • TCP的报文结构,连接管理过程,以及保证可靠传输的机制。

  • 拥塞控制常见的算法:慢启动、拥塞避免、快速重传、快速恢复。

你可能感兴趣的:(计算机网络技术(三)——网络协议和体系结构)