知识源于生活,高于生活。
TCP三次握手过程:
(1):客户端发送SYN包到服务器,并进入SYN_SEND状态;
(2):服务器收到SYN包,必须确认客户端的SYN,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器计入SYN_RECV状态;
(3):客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此时客户端进入ESTABLISHED状态,完成了3次握手。
但是到底为什么可以保证数据完整传送呢?
以老师向学生收作业为例,由于老师是请求的发起者,所以在这里老师为客户端,学生为服务端。
第一次握手:老师给学生发消息:“我要收xxx作业了”(这时有两个问题,老师不确定学生是否看到消息,学生不确定老师是否收到作业)
第二次握手:学生给老师发消息:“老师,xxx作业已交”(此时老师确定学生已经收到消息了,但是学生还是不确定老师是否收到作业)
第三次握手:老师给学生发消息:“作业已收到”(此时老师确定学生已经收到消息了,而且学生确定作业交上去了。至此完成了一次完整可靠的数据交付)