TCP
一种是面向连接的可靠的传输协议, 那什么是连接呢?用最简单的物理连接举个例子,打比方TCP是根网线,百度和APP是两个小人,网线分别插在百度和APP上后,就建立连接了。但在程序中肯定不是这种物理连接方式的,那什么是程序上的连接呢,这就要从三次握手开始说了。
TCP是如何保证可靠的? 由于数据是通过内核中的传输控制层去做数据包的创建和验证, 当请求数据发送失败的时候,内核无需人工介入会进行重传,使得数据有来有回,所以才保证了TCP是一个可靠的协议。更多内容参考=>TCP协议如何保证可靠传输
首先你要知道的是
三次握手不一定能得到连接,得到的是另外一个东西(资源),而三次握手后开辟的资源就叫做连接
下面这幅图就说明了连接建立前要做的一些工作:
- app调用操作系统内核kernel告知它我需要和某某建立连接
- 调用内核当中的传输控制层去做数据包的创建和验证
- 经过三次握手后,建立TCP协议连接
三次握手过程
其实三次握手是针对客户端来说的,对服务端来说并不是三次握手,举2个例子来说明比较下就知道了。
看图说话
- C(客户端)发送syn标识的消息給S(服务端)
- S 把收到的syn标识 + 自己的ack标识发给 C
- S 把 C 的 ack标识发回给C
基于以上三步,就成功建立起来了一个连接
可能有的小伙伴还是不太能懂,我换个例子
蒋老湿
对读者
说:“有人在看蒋老湿的文章吗?有点话评论下 在看! ”读者
对蒋老湿
评论:“在看!在看!”蒋老湿
对读者
说:“别评论了,我知道了”
这个过程就说明了读者和蒋老湿之间双方建立起了一个可以沟通的通道,我们把这个通道叫做连接