1、7.4.3 TCP连接管理TCP是面向连接的协议。TCP传输连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP的传输连接包括三个状态:连接建立连接建立 数据传送数据传送连接释放连接释放1连接的建立第一步第一步,A端的TCP 首先向B端的TCP发送一个特殊的TCP报文段SYN,此报文段中的SYN标志被置1,同时初始化一个起始序号;1连接的建立第二步,当B端收到A端发来的SYN报文段,会为该TCP连接分配TCP缓存和变量,并向A端回复一个允许连接的报文段SYNACK;1连接的建立第三步,在收到允许连接的报文段后,端也要给该连接分配缓存和变量。然后向端发送另一个报文段,用于对端允许连接的
2、SYNACK报文段进行确认。这种通信双发进行三次报文交换的过程被称为这种通信双发进行三次报文交换的过程被称为三次三次三次三次握手(握手(握手(握手(three-way handshakethree-way handshake)。2数据传输一旦建立起TCP连接,两个应用进程之间就可以相互发送数据了。通信双方主机中的应用进程之间的数据传输是字节流方式的。发送方主机中的TCP将来自进程的数据放到该连接的发送缓存里,然后TCP就会不时从发送缓存里取出一块数据准备发送。TCP发送报文段的过程发送报文段的过程端口端口发送发送 TCP 报文段报文段TCPTCP接收缓存接收缓存发送缓存发送缓存报文段报文段报文
3、段报文段报文段报文段端口端口发送端发送端接收端接收端向发送缓存向发送缓存写入数据块写入数据块从接收缓存从接收缓存读取数据块读取数据块应用进程应用进程应用进程应用进程 3连接的释放在数据传输结束后,通信双方都可以发出释放连接的请求。基于网络服务的不可靠性,必须考虑到在释放连接时,可能由于数据包的失序而使释放连接请求的数据包会比其他数据包先到达目的端。此时,如果目的端由于收到了释放连接请求的数据包而立即释放该连接,则势必造成那些先发而后至的数据包丢失。为了解决这些问题,可以把把TCPTCP连接看成是一对单连接看成是一对单工来处理连接的释放,每个单工连接独立的释放工来处理连接的释放,每个单工连接独立的释放。TCP连接释放过程连接释放过程7.5 TCP流量控制与拥塞控制7.5.1 TCP的流量控制TCP采用大小可变的滑动窗口大小可变的滑动窗口给应用进程提供流量控制服务,用以消除接收缓存溢出的可能性。TCP通过让接收方保留一个称为接收窗口接收窗口(receive window)的变量来提供流量控制。发送窗口在连接建立时由双方商定。但在通信过程中,接收方根据自己的资源情况,随时动态地调整对方的发送窗口上限值。TCP利用可变窗口进行流控利用可变窗口进行流控2