TCP的连接与断开
TCP 通过三次握手建立连接,以建立确保数据传输的参数,连接的双方都将初始化与 TCP 连接相关的许多 TCP 状态变量。该连接是一条逻辑连接,其共同状态仅保留在二个通信端系统的TCP程序中。
TCP连接的组成包括:一台主机上的缓存、变量和与进程连接的套接字,以及另一台主机上的另 一组缓存、变量和与进程连接的套接字。
MTU:本地发送主机发送的最大链路层帧长度。以太网和 PPP 链路层协议都具有500 字节的 MTU,MSS 的典型值为1460 字节。路径 MTU 是指能在从源到目的地的所有链路上发送的最大链路层,已经提出了多种发现路径 MTU 的方法,并基于路径 MTU 值设 MSS。
MSS:TCP 可从缓存中取出并放入报文段中的数据数量受限于最大报文段长度 (MSS),MSS 通常根据 MTU 来设置。设置该 MSS 要保证一个 TCP 报文段(当封装在一个 IP 数据报中)加上 TCP/ IP 首部长度将适合单个链路层帧。
三次握手建立TCP连接
第一步:客户端的TCP向服务器端的TCP发送一个不包含应用层数据的特殊TCP报文段,在该报文段的首部中的一个标志位SYN被置为1。因此,这个特殊报文段被称为SYN报文段。另外,客户端TCP会随机选择一个初始序号放置于SYN报文段的序号字段中。最后,该SYN报文段会被封装在一个IP数据报中发送给服务器。
第二步:一旦包含SYN报文段的IP数据报到达服务器主机,服务器会从该数据报中提取出SYN报文段,为该TCP连接分配TCP缓存和变量,并向客户端TCP发送允许连接的报文段,这个允许连接的报文段也不包含应用层数据。但是,在该报文段的首部。首先SYN比特被置为1。其次,确认号字段被置为client_isn+1。最后,服务器选择自己的初始序号,并将其放置到序号字段中。该允许连接的报文段被称为SYNACK报文段。
第三步:客户端TCP收到SYNACK报文段后,客户也要给该连接分配缓存和变量。客户主机则向服务器发送另外一个报文段,这最后一个报文段对服务器的允许连接的报文段进行了确认。因为连接已经建立了,所以该SYN标志位被置为0。第三次握手可以在报文段中携带应用层的数据。
四次挥手断开连接
第一步:客户应用进程发出一个关闭连接命令。这会引起客户TCP向服务器进程发送一个首部FIN标志位被置为1的特殊TCP报文段.
第二步:服务器接收到该报文段后,就向发送方回送一个确认报文段。
第三步:服务器再次发送自己的终止报文段,其首部FIN标志位被置为1.
第四步:最后,客户对这个服务器的终止报文段进行确认。