客户端主动发起
的,发生在建立连接的过程中。客户端的connect()函数
和服务器的accept()函数
之间。带有SYN标志的数据包
,表示客户端请求建立连接。选择一个随机的序列号a
放在SYN标志的数据包
中,然后向服务器发送这个数据包。回复一个带有SYN/ACK标志的数据包
,表示服务器已经收到客户端的请求,并同意建立连接。选择一个随机的序列号b
放在SYN标志的字段
中,并且序列号a+1放在ACK标志的字段
中,然后将数据包发送给客户端。会发送一个带有ACK标志的数据包
,表示客户端确认已经收到了服务器的响应,并同意建立连接。将服务器的序列号b+1放在ACK标志的字段中
,然后将数据包发送给服务器。主动关闭方
(客户端或者服务器都可以扮演这个角色)发起的,发生在断开连接的过程中。客户端主动发起断开连接
为例:带有FIN/ACK标志的数据包
,表示客户端请求与服务器断开连接。选择一个随机的序列号a
放在FIN/ACK标志的数据包
中,然后向服务器发送这个数据包。回复一个带有ACK标志的数据包
,表示服务器已经收到客户端的请求,并且序列号a+1放在ACK标志的字段
中,然后将数据包发送给客户端。带有FIN/ACK标志的数据包
,通知客户端,服务器要关闭了。选择一个随机的序列号b
放在FIN/ACK标志的数据包
中,然后向客户端发送这个数据包。回复一个带有ACK标志的数据包
,表示客户端已经收到服务器的请求,并且序列号b+1放在ACK标志的字段
中,然后将数据包发送给服务器。