转行快两年了,但是一直浑浑噩噩的,最近奋发图强了。恶补一下基础,对于TCP三次握手的认识模模糊糊,只是听说的状态。写一些从小白到理解的心得。
1.为什么需要三次握手?
首先应该知道为什么要进行三次握手?参考文章:关于TCP三次握手,这是我见过最好的解读了,通俗易懂
1.信息确认。双方确认是否有收发能力。只有如此才能确保连接时准确无误的。
2.防止请求超时导致脏连接。
请求由于超时有可能已经被客服端丢弃,但是服务端延迟收到请求,仍然回创建脏连接。第三次握手是客户端对本次连接创建的确认。可以极大减少资源浪费。
2.如何建立连接
TCP的flag位由6个bit组成。标志了6种tcp状态。值为1有效。SYN=1表示开始会话请求。
- SYN(Synchronize Sequence Number):开始会话请求
- ACK(Acknowledgement):应答
- FIN(Finish):结束会话
- URG:紧急
- PSH:数据包立即推送
- RST:中断一个连接
接下来,我们讨论建立连接的具体步骤。