都说 TCP 是面向连接的,怎样才算是一个连接呢?
Posted Li-Yongjun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了都说 TCP 是面向连接的,怎样才算是一个连接呢?相关的知识,希望对你有一定的参考价值。
TCP 不是桥
- 连接:在自己监听的端口接收到连接的请求,然后经过“三次握手”,维护一定的数据结构和对方的信息,确认了该信息:我发的内容对方会接收,对方发的内容我也会接收,直到连接断开。
- 断开:经过“四次挥手”确保双方都知道且同意对方断开连接,然后 remove 掉为对方维护的数据结构和信息,对方之后发送的包也不会接收,直到再次连接。
我看到有的同学说,TCP 是建立了一座桥,我认为这个比喻不恰当,TCP 更好的比喻是在码头上增加了记录人员,核查人员和督导人员,至于 IP 层和数据链路层,它没有任何改造。
本质是数据结构
TCP 建立连接的本质是在客户端和服务端各自维护一定的数据结构(一种状态机),来记录和维护这个“连接”的状态。并不是真的会再这两个端之间有一条类似的“网络专线”这么一个东西。
在 IP 层,网络情况该不稳定还是不稳定,数据传输走的什么路径上层是控制不了的,TCP 能做的只能是做更多判断,更多重试,更多拥塞控制之类的东西。
连接只是一个术语
包最终都是通过链路层、物理层一个一个出去的,所以连接只是一种逻辑术语,并不存在像管道那样子的东西,连接在这里相当于双方的一种约定,双方按说好的规矩维护状态。
维护状态
3 次握手之后,咱俩之间确认自己发的东西对方都能收到,然后咱俩各自维护这种状态,连接就建立了。
连接 --> 状态 --> 数据结构
连接是一种状态,建立连接是维持一种状态,维持状态通过一定的数据结构来完成。
呸,渣男
我心里有你,并不是我心里真的有你(连接并不是像管子一样真的连着),也放不下哈,太胖了。而是一种感觉,我每天想着你,你占据着我内心的一份空间(数据结构)。是一种状态,我需要一直维护,天天想你(状态机)。你生气的时候,我殷勤一点,你高兴的时候,我放松一点(拥塞控制,快慢有度)。直到我遇到了另一个她,再见(删除数据结构)。唉,男人!
参考
以上是关于都说 TCP 是面向连接的,怎样才算是一个连接呢?的主要内容,如果未能解决你的问题,请参考以下文章