- TCP 是面向连接的协议。
- TCP 连接有三个阶段:
连接建立
数据传送
连接释放 - TCP 连接的管理就是使 TCP 连接的建立和释放都能正常地进行。
- 要使每一方能够确知对方的存在。
- 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等)。
- 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。
- TCP 连接的建立采用客户服务器方式。
- 主动发起连接建立的应用进程叫做客户 (client)。
- 被动等待连接建立的应用进程叫做服务器 (server)。
TCP 的连接建立
- TCP 建立连接的过程叫做握手。
- 握手需要在客户和服务器之间交换三个 TCP 报文段。称之为三报文握手。
- 采用三报文握手主要是为了防止已失效的连接请求报文段突然又传送到了,因而产生错误。
下面几张图来了解一下TCP建立连接的过程:
最后,TCP三报文握手过程各个状态如下:
- TCP 连接释放过程比较复杂。
- 数据传输结束后,通信的双方都可释放连接。
- TCP 连接释放过程是四报文握手。
下面几张图来了解一下TCP释放连接的过程:
最后,TCP四报文握手过程各个状态如下:
A 必须等待 2MSL 的时间- 第一,为了保证 A 发送的最后一个 ACK 报文段能够到达 B。
- 第二,防止 “已失效的连接请求报文段”出现在本连接中。
- 用来防止在TCP连接出现长时期的空闲。
- 保活计时器 通常设置为2小时 。若服务器过了2小时还没有收到客户的�ϴ�,����信息,它就发送探测报文段。若发送了10个探测报文段(每一个相隔75秒)还没有响应,就假定客户出了故障,因而就终止该连接。
- 箭头旁边的字,表明引起这种变迁的原因,或表明发生状态变迁后又出现什么动作。
- 图中有三种不同的箭头。
- 粗实线箭头表示对客户进程的正常变迁。
- 粗虚线箭头表示对服务器进程的正常变迁。
- 细线箭头表示异常变迁。
TCP的有限状态机如图: