TCP连接是抽象的,可以将其视作一条数据通道,为了方便理解,我画了一幅图:
从图中可以看到,TCP连接从从一端的运输层开始,到另一端的运输层结束,中间经过了互联网和下层协议。
注意TCP连接的两端是被称为socket的东西,socket也是一种抽象,是对IP:端口的抽象,因此socket也是运输层的概念。
数据的流动
那数据是在TCP连接中流动的呢?下面我们尝试用抽象的角度来说明:如果应用使用到了应用层协议,假设为HTTP,那会将HTTP消息体的数据进行拆开分成报文段(如果用到了TCP的话),然后报文段继续往下层协议走,分别到网络层的IP包->数据链路层的帧->物理层的二进制数据流(高低电平),然后二进制数据流传送到另外一端后,再以相反的方向一层层向上将数据封装到运输层或者应用层。
创建和销毁
这个大家应该都能猜出来了,分别是使用三次握手和四次挥手来实现TCP连接的创建和销毁。
只是这里要注意的是,很多场景被问到为什么要三次握手和四次挥手,我认为这完全是一个逻辑问题,只能通过对连接创建与销毁过程的逻辑过程去给对方解释,即从一个正常人的角度去看待这个创建与销毁过程应该是什么样子的,所以没有必要去尝试背诵三次四次的理由,或者去询问理由。
最后欢迎大家关注我的公众号——日更的小易