TCP/IP学习笔记(二):TCP连接的建立与终止
TCP连接的三次握手:
(1)请求短发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号ISN(1415535521),报文段中SYN=1;TCP规定:SYN报文段不能携带数据,但是要消耗一个序号。
(2)服务器发回包含服务器初始序号的SYN报文段作为应答(SYN=1 ACK=1)。设置确定序号为客户端设置的ISN加1(1415531522),以表示对客户端的SYN报文进行确认,同时为自己选一个初始序号(1823083521),这个报文段同样不能携带数据,但要消耗一个序号。
(3)客户端必须将确定序号设置为服务器的ISN加1(1823083522)以对服务器的SYN报文进行确认,报文中ACK=1,可以携带数据,如果不携带数据,则不消耗数据,下一个发送报文段的序号仍然是(1415531522),这时,TCP已经建立。
TCP连接终止的四次握手:
由于TCP的半关闭,终止一个TCP连接需要四次握手:
(1)客户端发送一个FIN,关闭客户端到服务器的数据传送
(2)服务器收到这个FIN,它发回ACK,确认序号为收到的序号加1(1415531523,一个FIN将占用一个序号),TCP服务器还向应用程序传送一个文件结束符
(3)服务器端发送一个FIN,接着服务器程序就关闭连接
(4)客户端收到服务器端的FIN后,必须发回一个ACK,将确认序号置为收到序号加1(1823083523)
值得注意的是:发送FIN将导致应用程序关闭它们的连接,这些FIN的ACK是由TCP软件自动产生的。