1. 学习内容
计算机网络传输层内容,“TCP三次握手”流程。
参考网站:https://blog.csdn.net/libaineu2004/article/details/79020403
2. TCP报文格式
- 源端口:发送数据的进程号。16位,0~6 5535。
- 目的端口:接受数据的进程号。
端口号对+IP地址对+MAC地址对唯一确定一条TCP链路,可以实现进程与进程之间的通信。
-
序号:序列号,即数据包本身的序列号,为连接以后传输数据使用。32位,0~42 9496 7295。如果序号为100,数据有200个字节,那么下一个报文的序号就为300。
-
确认号:如果确认号为n,代表发送的前n-1个字节都收到了。
-
ACK:确认标识,当ACK=1时确认字段才有效。
-
SYN:同步序列号,用来发起一个连接。SYN=1的报文不能携带数据。
3. “TCP三次握手”
明明没有握手,却叫“TCP握手”。这些突然冒出的笼统词儿,让人心累脑袋疼。
“TCP三次握手”过程如图所示。
第一次:
TCP报文
A-------------------->B
TCP报文:
SYN=1(仅仅发起一个TCP连接,报文不发送数据)
seq(序号)=x(占一个序号,设它为x)
第二次:
TCP报文
A<--------------------B
TCP报文:
SYN=1(仅仅发起一个TCP连接,报文不发送数据)
seq=y(占一个序号,设它为y)
确认序号=x+1(0~x个字节数据已收到)
ACK=1(确认序号字段有效)
第三次:
TCP报文
A-------------------->B
TCP报文:
SYN=0(已建立TCP连接,报文发送数据)(图中没有在此添加)
seq=x+1(发送第x+1个序列)
确认序号=y+1
ACK=1