背景
TCP/IP协议是当前网络时代的基础,所有的网络产品,或者是开发语言、开发框架都是基于tcp/ip协议的,所以说,学好tcp/ip对个人以后从事互联网行业会有巨大的帮助。
但是这是一个基础理论课程,就像操作系统这门课一样,学完之后可能不会对你产生太大的影响,不会让你立马拥有能够投入工作中的技能。但正是因为这是一个基础理论课,所有的互联网技术都是基于它的。所以如果你了解tcp/ip协议,将会对你未来发展或者在工作中排查问题产生积极的作用。
tcp协议的3次握手
tcp的三次握手是需要确认双方的两种能力:接收能力、发送能力

- 最开始双方都是
Closed状态。然后某个时间点,服务端启动程序,监听了某个端口,处理Listen状态 - 客户端主动连接,发送
SYN,自己变成SYN-Sent状态 - 服务端收到请求之后,回复
ACK和SYN,变为SYN-Revd状态 - 客户端收到回复后,再次发送
ACK,自己变为Established状态。服务端在收到ACK之后,也变成Established状态 - 接下来就是数据传输的过程了
注意
- 凡是需要对端确认的,一定要消耗
TCP报文的序列号(seq number) SYN需要对端确认ACK不需要对端确认,它就是去确认别人的
思考
一、为什么不是2次握手
两次握手无法确认对方的接收能力
二、为什么不是4次握手
最少、最优的是3次。4次,100次都是可以的,但不是最优的
三、3次握手过程中可以顺便携带点数据吗
第3的时候是可以的,前2次不行。
如果前2次可以,会造成恶意攻击。发送SYN并携带一批数据,服务器处理数据势必会消耗时间个资源,增大了被攻击的风险。
第3次的时候,客户端已经处于Established状态,并且已经确认服务器的接收、处理能力正常。
四、如果客户端和服务端同时发送SYN请求会怎么样
如果同时发送连接请求,则会发生状态变迁
- 两边同时发送
SYN报文,然后都变为SYN-Sent状态 - 在各自收到对方的
SYN后,状态变为SYN-Revd状态 - 双方回复
SYN + ACK - 各自收到回复后,状态转变为
Established - 数据传输
总结
这是tcp/ip系列的第二篇,主要讲解了三次握手的过程,以及握手过程中C-S状态的转变。最后还思考了4个问题,为什么不这么做?如果发生这些情况会怎么样?等等。后面还有更深入的讲解,这个系列的文章会很长。
开始下一篇吧。
本文深入解析TCP/IP协议中三次握手的过程,阐述其在确保通信双方接收与发送能力中的关键作用。通过理解三次握手,读者将能更好地掌握网络通信基础,为未来排查网络问题和深入学习互联网技术奠定坚实基础。
2873

被折叠的 条评论
为什么被折叠?



