TCP之连接的建立与终止

作者: 采风JS | 来源:发表于2017-04-14 17:48 被阅读239次

一、TCP浅谈

TCP:传输控制协议,一种面向连接的、可靠的、端到端的字节流服务。TCP包首部如下图,

TCP包首部

基于WireShark分析TCP首部字段的含义,如下图,

WireShark分析TCP首部

下面列出TCP头部中常用的字段含义:

a)以太网帧头+IP头+TCP头部

b)源端口和目的端口:分别为16位字节,最大为65535,详情参照计算机端口详解

c)序列号和确认号:序列号,标识发端到收端的字节流;确认号,确认的一端期望收到的下一个序号,详情参照TCP序列号与确认号详解 下文截图中,注意观察序列号与确认号的变化

d)标志比特:URG、ACK、PSH、RST、SYN和FIN,用于发端和收端的通信交流

e)窗口大小:发端有控制窗口,用于发端流量控制;收端有通用窗口,用于收端流量控制

二、三次握手与四次挥手

TCP建立时,三次握手;TCP终止时,四次挥手。其中,涉及到发端与收端的共计12种状态,如下图所示,

三次握手与四次挥手

为更好的解释连接与终止的过程,结合WireShark分析此过程,

Client主动连接

a)CLIENT主动连接,发送SYN J同步信号,从CLOSED状态进入SYN_SENT状态

SERVER接收SYN,并发送SYN K和ack J+1

b)SERVER接收SYN,进入SYN_RCVD状态,并且发送SYN K和ack J+1

CLIENT发送ack K+1

c)CLIENT收到SYN K和ack J+1,进入ESTABLISHED状态,并且发送ack K+1

d)SERVER收到ack K+1,进入ESTABLISHED状态

至此,经过三次握手,TCP正式建立连接

CLIENT发送FIN M,主动关闭连接

e)CLIENT发送FIN终止信号,主动关闭连接,进入FIN_WAIT_1状态;CLIENT不再发送数据,但SERVER仍然可以发送数据

SERVER发送ack M+1

f)SERVER收到FIN M,进入CLOSE_WAIT状态,并且发送ack M+1

SERVER发送FIN N

g)CLIENT收到ack M+1,进入到FIN_WAIT_2状态

CLIENT发送ack N+1

h)CLIENT收到FIN N,并且发送ack N+1,进入TIME_WAIT状态,在2MSL时间后,进入到CLOSED状态(2MSL在下文解释)

三、补充问题说明

a)主动终止也可以发生在SERVER端

b)发端进行主动SYN请求时,发生连接建立的超时情况,超时间隔由二进制指数退避算法确定

c)在连接建立阶段,收发双方会传送MSS(最大报文段长度),分别通告对方期望接受的选项

d)为什么终止需要四次挥手?因为TCP是一种全双工的模式,即通信双方同时双向传输数据,任意一段断开连接仅会进入半关闭状态,仍然单方向存在数据传输

e)MSL为报文段最大生存时间,假设网络不可靠,最后的ack确认指令丢失。该字段用于重发可能丢失的报文

f)在2MSL阶段,本地IP、端口号和远端IP、端口号构成四元组,理论上其他应用程序不能暂用,但是具体软件实现存在特殊情况

g)三次握手与四次挥手为最常见的情况,但同时存在双方同时打开与同时关闭的情况,但是发生的概率很小,仅需要四个报文段完成连接和终止

相关文章

  • TCP之连接的建立与终止

    一、TCP浅谈 TCP:传输控制协议,一种面向连接的、可靠的、端到端的字节流服务。TCP包首部如下图, 基于Wir...

  • TCP连接的建立与终止

    TCP 状态变迁图 8. 同时打开 状态变化:SYN_SENT -> SYN_RCVD -> ESTABLIS...

  • TCP 的三次握手和四次挥手,了解泛洪攻击么

    引言 TCP 建立连接与断开连接的过程 TCP 泛洪攻击(TCP 建立连接过程中的攻击手段)与防护 TCP 建立连...

  • TCP(I) 连接管理

    TCP 连接管理 查看原文 TCP 连接的建立和终止 一个 TCP 连接由一个四元组构成:源 IP、源端口、目的 ...

  • 网络资料总结3

    传输层相关 一 TCP 1.1 TCP状态 TCP连接的建立和终止 理解TCP的三次握手,四次挥手TCP 为什么是...

  • TCP连接的建立和终止

    目录(1)三次握手(2)四次挥手(3)TCP状态转换图(4)TCP连接三次握手+四次挥手+状态转换 一:三次握手 ...

  • TCP连接的建立和终止

    1,TCP连接的建立 (1)服务器必须准备好接受外来的连接,通常通过socket,bind和listen这3个函数...

  • TCP连接的建立和终止

    三路握手 建立一个TCP连接时,会发生下述情形: 服务器通过调用 socket、bind、和listen函数完成。...

  • TCP连接的建立和终止

    TCP建立连接 1.请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN)。...

  • TCP连接的建立和终止

    UDP向另一端发生数据报时,无需任何提前的握手。而TCP必须在双方之间建立一条连接。 建立连接协议 为了建立一条T...

网友评论

本文标题:TCP之连接的建立与终止

本文链接:https://www.haomeiwen.com/subject/qjxgattx.html