前言
笔者看到过很多介绍TCP/IP三次握手的文章,大多上来直接讲协议,其实对于很多受众来说效果不好,大多数人都能看懂,但是印象不深刻,没有领会其精髓,笔者一直认为讲东西上来就直抒胸臆,能跟你引起共鸣的只是少部分人,知识传授必然要讲清其前因后果,点明技术的解决目标和解决方案的要点。
三次握手的目的和要点
目的:互联网中的各个节点之间需要通信,而通信依赖于建立链接,3次握手就是为了确保链接的顺利建立提出的。
要点:链接的正确建立,需要通信双方(节点A,节点B)都确认,具体如下:
- 通信节点A:确认节点A自己在链路上的发送信息,接收信息的能力没问题,同时节点A也要确认节点B在链路上的发送信息,接收信息的能力没问题
- 通信节点B:要求同上
三次握手交互图
带着上面的问题再来看3次握手协议
- 第一次握手,节点B在收到节点A的信息后,可以确认B自己的的接收能力没有问题和节点A的发送信息能力没有问题;
- 第二次握手,节点A在收到到节点B的信息后,因为节点B确认了A的同步报文(ack=x+1),节点A可以明确之前发送的信息B接收到了,所以可以明确A自己的发送能力没有问题和节点B的接收能力没有问题,同时节点A能收到B的确认报文,可以明确A自己的接收能力没有问题和节点B的发送能力没有问题,这时候A自己已经确认了自己和B的发送和接收能力都没有问题,但是B还不清楚自己的发送能力和A的接收能力是否有问题。
- 第三次握手,节点B收到A的确认,可以明确B自己的发送能力没有问题和A的接收能力么有问题,至此可以确认双方接收和发送都没有问题,链接可以正确建立。