TCP的计时器:
重传时间的计算:重传时间 = 2 X(往返时间)。
往返时间的计算:两种方法,第一种方法是TCP使用时间戳选项,第二种方法是由TCP发送一个报文段,启动计时器,然后等待其确认。
连接的建立:
TCP连接的建立为3次握手。
其中,第二和第三可作为一个动作。这样就是连接建立的三次握手。
连接的终止:
参加交换的两方中的任何一方都可以关闭连接。当一个方向的连接被终止时,另一方还可以继续向对方发送数据。需要四个动作:
状态图转换:
TCP软件是以有限状态机的形式来实现的。有限状态机是这样一种机器,它通过有限的状态。在任何时候,机器处于某一个状态。若没有其他事件发生,这个机器就一直处于那个状态。
拥塞控制:
我们讲过,发送端的窗口大小取决于接收端允许发送端有多大的发送窗口。我们那时完全忽略了另一个实体,即网络。若网络无法像发送端产生数据那样快的交付数据,它就应当告诉发送端要减慢发送速率。换言之,除接收端外,网络应当是确定发送端窗口大小的另一个实体。
发送端有两种信息:接收端通知的窗口大小和拥塞窗口大小。真正的窗口大小是这两个窗口中的最小者。
TCP的操作:
复用和分用:在TCP/IP协议族中只有一个TCP协议,但是却可能有多个应用程序需要使用TCP的服务。要处理这种情况,TCP使用复用和分用。
急迫数据:TCP可以处理这种情况。在发送端的应用程序可请求急迫(push)操作。这就表示发送端的TCP不必等待窗口被填满。
紧急数据:但是,在某些情况下,应用程序需要发送紧急字节。这表示发送应用程序希望某一块数据由接收应用程序不按序读出。
TCP的设计:
在我们的设计中,TCP软件包包括一个叫做传输控制块的表,一组计时器和3个软件模块:一个主模块、一个输入处理模块和一个输出处理模块。
TCB(传输控制块):TCP是面向连接的传输协议。一个连接可以打开很长一段时间。为了控制这一连接,TCP使用一个结构来保持每一条连接的有关信息。这就是传输控制块(TCB)。
主模块:
输入处理模块:当TCP处于ESTABLISHED状态时,对收到的数据或确认进行处理所需的所有细节都是输入处理模块应处理的。这个模块发送ACK(当需要时),负责宣布窗口大小,进行差错检查。
输出处理模块:当TCP处于ESTABLISHED状态时,对发送来自应用程序的数据所需的所有细节都是输出处理模块应处理的。这个模块处理重传超时、坚持超时等等。