tcp连接过程分为几个阶段
一个TCP连接分为三个阶段:启动、数据传输、关闭。
在TCP半关闭操作中，连接一个方向被关闭，另一个方向仍在传输数据直到他被关闭为止。
服务器–>客户机(数据);客户机–>服务器(确认)
与正常连接建立过程相比需要增加一个报文段。
数据包的SYN位将置位直到接收到一个ACK数据包位置。
TCP头部包含了多个选项，选项列表结束(EOL)、无操作(NOP)以及最大段大小(MSS)是定义与原始TCP规则中的选项。
最大段大小是指TCP协议所允许从对方接受到的最大报文段，因此这也就是通信对方在发送数据时能使用的最大报文段。
最大段大小只记录TCP数据的字节数而不包括TCP与IP头部。
在没有事先声明的情况下，最大段大小默认数值位536。
TCP“选择确认”选项可以解决“空洞现象”，当接收到乱序的数据时，他能提供一个SACK选项来描述这些乱序的数据，从而帮助对方有效地进行重传。
窗口缩放选项能够有效地将TCP窗口广告字段的范围从16位添加至30位。
该选项出现于一个SYN报文段中，连接建立以后比例因子是与方向绑定的。
时间戳选项(TSOPT)，2个四字节的时间戳数值，允许每一个发送方针对每一个接收到的ACK估算TCP连接的往返时间。
估算一条TCP连接的往返时间主要是为了设置重传超时。
用户超时(UTO)选项指明了TCP发送者在确认对方未能成功接受数据之前愿意等待该数据ACK的时间。
用于增强连接的安全性，不仅采用各种加密算法，还使用“带内”信令来确认密钥是否改变。
路径最大传输单元(MTU)只经过两台主机之间路径的所有网络报文段中最大传输单位的最小值。
知道最大传输单元有助于一些协议避免分片。
一个TCP连接启动与终止的规则，这些规则其实是又TCP所属的状态决定的。
(SYN_SENT)客户端-(SYN K)–>服务器(LISTEN->SYN_RECVD)服务器–(SYNL，ACK K+1)–>客户端(ESTABLISHED)
客户端-(ACK L+1)–>服务器(ESTABLISHED)
数据传输发生在ESTABLISHED状态
客户端(FIN_WAIT_1)---(FIN M)->服务器(CLOOSE_WAIT)
服务器---(ACK_M+1)->客户端(FIN_WAIT_2)
服务器(LAST_ACK)–(FIN N)->客户端(TIME_WAIT)
客户端(2msl计时器后CLOSED)---(ACK N+1)->服务器(CLOSED)
TIME_WAIT状态也曾为2ML等待状态。
该状态中，TCP将会等待两倍于较大段生存期的时间，有时也称作加倍等待时间。
当TCP执行一个主动关闭并发送最终的ACK时，连接必须处于TIME_WAIT状态并持续两倍于最大生存期的时间。
当一个连接处于2ML等到状态时，任何延迟到达的报文段都将被丢弃。
同时打开:双方同时发送一个SYN报文段，进入SYN_SENT状态，然后同时接受到对方的SYN，变为SYN_RCVD，然后同时发送ACK，确认ACK之后同时变成ESTABLISHED。
同时关闭:同时发送FIN，变为FIN_WAIT_1，然后同时发送ACK变成CLOSING，同时接收变成TIME_WAIT。
等待一段时间后变成2ML状态。
当发现一个到达的报文段对于相关连接而言是不正确时，TCP就会发送一个重置报文段。
若服务器不存在此端口号，接收到客户机的SYN报文段后会回复RST字段的报文。
终止一条连接的方法可以是通信放发送一个FIN，这种方法有时称为有序释放 。
在任何时刻我们都可以通过发送一个重置报文段来代替FIN终止一条连接。
这种方式有时候叫做 终止释放
终止一条连接有两大特性:
(1)任何排队的数据都会被抛弃，一个重置报文段被立即发送出去;
(2)重置报文段的接收方会说明通信另一端采取了终止的方式不是一次正常连接。
当某一台主机的电源被切断而不是正常关机时候会出现半开连接。
当一个主机崩溃重启后将忘记之前的TCP连接，这时如果接受到崩溃前的信息，将会给对方发送一条重置报文段作为相应。
客户机在TIME_WAIT状态下对于滞留网络时间比较久的报文做出应答，但是这时候服务器已经处于CLOSED状态，服务器将会发送一个重置报文段让客户机进行关闭。
TCP依靠四元组多路分解获得报文段。
目的IP端口号，源IP端口号，有一个不同极为不同连接。
(也就是说同一个IP同一个端口号，可以和很多主机或者同一个主机的不同端口进行连接)。
一个并行的服务器会为每一个客户端分配进程或线程，为了避免SYN洪范攻击之类的问题，把进入应用程序之前的连接分为两类:连接尚未完成，但是已经收到SYN
完成三次握手并处于ESTABLISHED
操作系统会为以上两种情况使用两种不同的连接
linux有以下规则:
SYN_SEND连接数目超过一定阀值时，拒绝新的连接。
限制未完成连接(完成三次握手，未被应用程序接受)数量。
未被应用程序接受的连接如果接收到数据，则先放入队列缓存。
如果队列已经没有足够的空间分配给新的连接，TCP会延迟对SYN的响应。
SYN泛洪是一种TCP拒绝服务攻击，这种攻击中一个或多个恶意客户端产生一系列TCP连接尝试(SYN报文段)，并将它们发送给一台服务器，通常采用“伪造”源IP地址。
路径最大传输单元，设置一个非常小的MSS。
破坏现有的TCP连接
TCP 的运输 连接管理 TCP 把 连接 作为最基本的抽象。
一个TCP的连接分为 3 个阶段 :启动，数据传输，退出 TCP连接 的步骤: (1)客户端发送一个SYN报文段， SYN报文段就是TCP头部中的SYN置1的报文段，在这个报文段中指明想要连接的端口号和客户端的初始序列号，通常把这个...
(3)被动关闭者转变为主动关闭者，发送自己的FIN报文，包括自己的报文序列号。在连接建立超时的时候，连接的打开方会产生指数回退行为:客户端TCP为了建立连接而频繁发送SYN报文段，首个报文段发送后3s发送第二个，第二个报文段之后6s发送第三个，第三个报文段12s后发送第四个…TCP传输连接管理概述 TCP传输连接有三个阶段 ，即:连接建立(三次握手)、数据传送和连接释放(四次挥手)。
TCP连接过程 中常见符号意义如下: SYN---同步标记，当SYN=1，ACK=0时，表明这是一个连接请...一个 TCP连接通常 分为 3 个阶段 :建立连接、数据传输(连接已建立)、关闭连接。
下面描述一次 TCP连接 的建立和关闭 过程 。
连接过程 : 客户端发送一个SYN报文段(即一个在TCP头部的SYN位字段置位的TCP/IP数据包)，并指明...TCP/IP在计算机网络中是一个 非常重要的概念，不论是考试还是面试出现的频率都非常的高，本篇我们就结合Wireshark工具来聊聊TCP/IP连接，它涉及到基本TCP/IP的...首先我们来看一个 使用 TCP连接 来查询域名地址的过程 ...上图主要包括三部分:建立连接、传输数据、断开连接。
建立 TCP连接 很简单，通过三次握手便可...TCP是面向连接的协议，因此每个 TCP连接 都有三个阶段 :连接建立、数据传送和连接释放。
TCP 把连接作为最基本的抽象，每条TCP 连接有两个端点，TCP 连接的...全书基于一个 简单场景:用户向浏览器输入一条URL到响应返回，一条网络请求的生命周期。
全书 分 六部分: 应用层客户端生成HTTP，委托给操作系统的协议栈 协议栈( TCP /IP模块)调用网卡驱动生成电信号 网卡如何通过...在 TCP 层，有个FLAGS字段，这个字段有以下 几个 标识: SYN 建立 连接 ; FIN 关闭 连接 ; ACK 响应; PSH 有数据传输; RST 连接 重置;URG。
其中，ACK是可能与SYN，FIN等同时使用的，比如SYN和ACK可能同时为1，它...(下)前言二、数据传输 阶段 可能出现的异常三、断开 连接阶段 可能出现的异常参考前言 上节中说到在 连接 建立的过程中出现的各种异常，这里接着说下面的部分。
二、数据传输...TCP 建立 连接 和断开 连接 (三次握手、四次挥手)以及相关 几个问题
通常情况下，一个正常的 TCP连接 ，都会有三个阶段 : TCP三次握手; 数据传送; TCP四次挥手里面的几个 概念: SYN: (同步序列编号,Synchronize Sequence Numbers) ACK: (确认编号,Acknowledgement...同时打开的流程如下图: 二、 TCP连接 的断开过程 : 1、TCP的四次挥手: 1、Client发送一个 FIN，用来关闭Client到Server的数据传送，Client进入FIN_WAIT_1状态。
2、Server收到FIN后，发送一个 ACK给Client，确认序号为...本文主要说明的是 TCP连接过程 中，各个 阶段 对套接字的操作，希望能对没有网络编程基础的人理解套接字是什么、扮演的角色有所帮助。
如发现错误，敬请指出 背景 1.完整的套接字格式{protocol,src_addr,src_port,...连接 TCP 的特点及其目的通过序列号与确认应答提高可靠性 重发超时如何确定 连接管理(3次握手，4次挥手) TCP 以段为单位发送数据 利用窗口控制提高速度 窗口控制与重发控制 流控制 拥塞控制 慢启动 拥塞...一、 TCP连接 与端口web服务器只开启了一个 端口，他是如何为多用户服务的
这三篇文章和这次要提到的 TCP 相关，不过之前的内容没有完全掌握并不影响理解 TCP 相关，但是还是强烈建议将前面的一点一点摸透，这样才能和 TCP 相关一起建立起来一个 知识体系，不会那么容易忘记; 首先，为什么一定...TCP 的三次握手(建立 连接 )和四次挥手(关闭 连接 ) 参照: 建立 连接 : 理解...TCP连接 的建立 过程 如下图所示: 首先，客户端调用connect系统调用进行建链的发起，此时内核会创建一个 套接口，发送SYN报文，并将其置为SYN_SEND状态;