要了解tcp连接时三次握手是怎么回事,首先应该先了解tcp的固定包头。
传输层的tcp包头如下图,自己画的有点丑:
第一步:client首先向server发送序列号为seq1的同步报文;
第二步:server发送确认报文,确认号为seq1+1,此报文的序列号为seq2;
第三步:client想server发送确认报文,确认号为seq2+1;
断开连接可以由server端发起,也可以有client端发起。
由FIN报文以及ACK报文来完成,当一方发送FIN报文以后,实际上该socket处于半连接状态,
此时还可以接受数据,即处于FIN_WAIT状态,等待server端发送FIN。
值得一提的是tcp固定包头中的第七段窗口大小(window size),
这个值表示接收端还有多少字节的缓存可用,这也是tcp流量控制的一种机制,
在实时视频流发送时可以把这个值作为码率控制的一个参考因素。