TCP 三次握手
所谓三次握手,是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个报文段。
- 第一次握手:客户端向服务端发送一个请求连接TCP报文段,该报文段不包含应用层数据。在报文段的首部中一个SYN标志位被置为1,客户会随机地选择一个初始序号,并将该编号放置于该报文段的序号字段中。
- 第二次握手:服务器向该客户发送允许连接的报文段,该报文段也不包含应用层数据,同时SYN标志位被置为1,其次,该TCP报文段首部的确认号字段被置为客户报文段序号字段+1,最后,服务器选择自己的初始悬红,并将其放置到TCP报文段首部的序号字段中。
- 第三次握手:在收到服务端的报文段后,客户端向服务端发送另一个报文段,对服务器的允许连接的报文段进行确认,将服务端的序号字段加1放置在TCP报文段首部的确认字段,且SYN标志位被置为0。第三次握手可以在报文段负载中携带客户到服务器的数据。
一旦完成了三次握手,客户和服务器就可以互相发送包括数据的报文段了。
四次挥手
- 客户应用进程发出一个关闭连接命令,这会引起客户TCP向服务器进程发送一个特殊的TCP报文段,这个报文段让其首部中的一个标志位即FIN位被设置为1.
- 当服务器接收到该报文段后,就向发送方回送一个确认报文段。
- 然后,服务器发送它自己的终止报文段,其FIN位被置为1。
- 最后,该客户对这个服务器的终止报文段进行确认。