https://draveness.me/whys-the-design-tcp-three-way-handshake/
传输层协议,提供 Host-To-Host 数据的可靠传输
支持全双工,是一个连接导向的协议
主机到主机、连接、会话、双工/单工及可靠性等
主机到主机(Host-To-Host)
提供的是 Host-To-Host传输,一台主机通过 TCP 发送数据给另一台主机
应用层
传输层
网络层
数据链路层
物理层
TCP协议往上是 应用到应用(Application-To-Application)的协议
网络层提供地址到地址的通信,不负责信号在具体两个设备间传递
互联网协议簇(TCP/IP 协议群)
主机到主机(Host-To-Host)为应用提供应用间通信的能力
什么是连接和会话?
通信双方的一个约定,目标是让两个在通信的程序之间产生一个默契,保证两个程序都在线而且尽快地响应对方的请求
一种传输数据的行为,传输之前,建立一个连接数据收发对方的内存中都建立一个用于维护数据传输状态的对象
什么是连接和会话?
连接(Connection)是网络行为状态的记录
双方 IP 和端口是多少?
现在发送了多少数据了?
状态健康吗?
传输速度如何?
在有些系统设计中,会话会自动重连(也就是重新创建连接),或者帮助创建连接
会话也负责在多次连接中保持状态,比如 HTTP Session 在多次 HTTP 请求(连接)间保持状态
会话(Session)是应用层的概念,连接是传输层的概念
双工/单工问题
单工:在任何一个时刻,如果数据只能单向发送
半双工:在某个时刻数据可以向一个方向传输,也可以向另一个方向反向传输,而且交替进行
全双工:如果任何时刻数据都可以双向收发
线路,是一个抽象概念,你可以并发地处理信号,达到模拟双工的目的
TCP:一个双工协议,数据任何时候都可以双向传输
客户端和服务端在 TCP 协议中有一个平等的名词:Host(主机)