这是从计算机网路上面摘录下来的。
TCP的三次握手:
1.客户端的TCP首先向着服务端的TCP发送一个特殊的TCP报文段,该报文段不含有任何的应用层数据。但是在报文段的首部中包含一个标志位(即SYN比特)被置为1。因此,这个报文被称为SYN报。另外客户端会随机地选择一个初始序号(client_isn),并将此编号放到起始的TCP SYN报文段的序号中。该报文端会封装一个IP数据报中,并发送给服务器。
2.一旦包含TCP SYN的报文段的IP数据报到达服务器主机(假定它的确到达了!),服务器会从该数据报中的取出TCP SYN报文段,为该TCP连接分配资源缓存和变量,并向该客户TCP发送允许连接的报文段。这个允许连接的报文段也不包含应用层的数据。但是,在其首部却包含了3个重要的信息。首先SYN比特被置为1。其次,该TCP的报文段首部的确认号字段被置为client_isn+1。最后,服务器选择自己的初始序号(server_isn),并将其放置到TCP报文段的首部的序号字段中。该允许连接的报文段被称为SYNACK报文段。
3.在收到SYNACK报文段后,客户也要给该连接分配缓存和变量。客户主机则发送另外一条报文段;这最后一个报文段对服务器的允许连接的报文段进行了确认。(该客户端通过将值server_isn + 1放置到TCP报文首部的确认字段中来完成此项工作)。因为连接已经建立,所以该SYN比特被置为0。
TCP的四次挥手:
1.客户端的TCP发送FIN = 1给服务器的TCP。
2.服务器的TCP发送应答ACK给客户端的TCP。
3.服务器发送它的终止报文段,其FIN = 1。
4.最后客户端TCP发送ACK对这个服务器的终止报文进行确认。