关于TCP的三次握手
1.几个重要缩写的解释
ACK:acknowledgement,表示响应
SYN:synchnorous,表示请求简历连接
FIN:Finished,表示结束连接
PSH:Push,表示有数据传输
RST:Rest,表示连接重置
URG:urgent,表示紧急
顺序号:sequence number
确认号:acknowledgement number
2.三次握手过程

第一次握手:客户端的TCP首先向服务器端的TCP发送一个特殊的TCP报文段。该报文段中不包含应用层数据。但是在报文段首部中的一个标志位SYN=1,该报文被称为SYN报文段。另外,客户会随机地选择一个初始序列号(client_isn),并将此编号置于SYN报文段中。该报文段被封装成一个IP数据报中发送给服务器。SYN报文段:SYN=1,seq=client_isn
第二次握手:一旦SYN报文段的IP数据报到达服务器主机,服务器会提取SYN报文段,为该TCP连接分配TCP缓存和变量,并向该客户TCP发送允许连接的报文段。该报文段也不包含应用层数据。包含三个重要的信息。首先SYN比特被置位1,其次,该TCP报文段首部的确认信息被置位client_isn+1,最后,服务器选择自己的初始序号(server_isn)。SYNACK报文段:SYN=1,ack=client_isn+1,seq=server_isn
第三次握手:在收到SYNACK报文段后,客户也要给该连接分配缓存和变量。同时发送报文段。该报文段格式:SYN=0,seq=client_isn+1,ack=server_isn+1.
3.四次挥手过程(断开连接)

client和server都可以断开连接。下面以客户断开连接为例。
第一次:客户端发送TCP报文段:FIN=1
第二次:服务端返回一个确认报文段:ACK
第三次:服务端发送自己的终止报文段,FIN=1
第四次:客户对服务器报文段进行确认,ACK
4.客户TCP经历的典型的TCP状态序列

客户TCP开始时处于CLOSED(关闭状态)。客户的应用程序发起一个新的TCP连接,发送一个SYN报文段。发送完报文段后,客户进入了SYN_SENT状态(等待来自服务器TCP的对客户所发报文段进行确认且SYN比特被置位1的一个报文段)。收到这样一个报文段后,客户进入ESTABLISHED(已建立)状态(TCP客户就能发送和接受包含有效载荷数据)。如果客户端需要断开连接。客户端发送FIN=1报文段,并进入FIN_WAIT_1状态(等待一个来自服务端确认的ACK=1)。当他收到确认后,客户进入FIN_WAIT_2状态(等待来自服务器端的FIN=1报文),当收到服务器端报文后,客户进入TIME_WAIT状态。假定ACK丢失时,TIME_WAIT状态使TCP客户重新上传最后确认的报文。
5.服务端状态序列
