TCP:面向连接的传输层协议,是一种可靠的传输层协议;IP协议号为6;
TCP的三次握手:(建立连接)
SYN:表示同步序号,用来建立连接的,SYN和ACK搭配使用,SYN=1,ACK=0,这是一个连接请求的报文段;若同意连接了,就变成SYN=1,ACK=1;因此,SYN表示这是一个连接请求,或是接受报文;
ACK:确认号是否有效,一般为1。占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号是期望接受到下一个自己的编号;因此当前报文段的最后一个字节号+1就是确认号;
Seq:序列号,占4个字节;用来标记数据段的顺序;序列号就是这个报文段的第一个字节的数据编号;
FIN:希望断开连接;FIN=1表示 此报文段的发送方的数据已经发送完毕,并要求释放连接;
TCP的四次握手:(关闭连接)
为什么连接是三次握手,关闭确是四次挥手?
答:建立连接的时候,因为当Server收到来自客户端的SYN时,可以直接发送ACK和SYN;ACK是用来应答的,确保序列号有效,SYN是用来同步的;因此是可以一起发送的;但是关闭连接的时候,Server接收到来自Client的FIN时,很可能不能立即断开socket,所以只能先发送一个ACK报文,告诉客户端我收到了,只有等到Server端所有的报文都发送完了,才会发送FIN报文,因此是不能一起发送的;