IP协议号:6
报文格式
→源 端 口 : 标 识 发 送 方 的 应 用 进 程 。
→目 的 端 口 : 标 识 接 收 方 的 应 用 进 程 。
→序 号 : 保 证 数 据 传 的 有 序 性 。确 认 号 : 对 收 到 的 数 据 进 行 确 认 。
→ Flag 字 段 ( 8 位 )
ACK一 确 认 号 标 志 , 置 1 表 示 确 认 号 有 效 , 表 示 收 到对 端 的 特 定 数 据。
RST一 复 位 标 志 , 置 1 表 示 拒 绝 错 误 和 非 法 的 数 据 包 , 复 位 错 误 的 连 接。
SYN一 同 步 序 号 标 志 , 置 1 表 示 同 步 序 号 , 用 来 建 立 连 接。
FIN 一 结 束 标 志 , 置 1 表 示 连 接 将 被 断 开 , 用 于 拆 除 连 接。
→Option 字 段 ( 可 选 项 )
M SS 最 大 报 文 段 长 度 , 通 过 置 位 , 协 商 能 承 载 的 TC P 数 据 的 大 小。
端口号
- 源端口随机分配,目的端端口使用知名端口(Well-known port) 。
- 客户端使用的源端口一般为系统中未使用的且大于1023。
- 目的客户端为服务端开启的服务所侦听的端口,如HTTP缺省使用80。
三次握手
最开始的时候客户端和服务器都是处于CLOSED状态,服务端监听客户端的请求,进入LISTEN状态
第一次握手:客户端端发送连接请求,(SYN=1(将SYN标志为1), seq=x),发送完毕后,客户端就进入 SYN_SENT 状态
第二次握手:服务端确认连接,(SYN=1, ACK=1, seq=y, ACKnum=x+1), 发送完毕后,服务器端就进入 SYN_RCVD 状态。
第三次握手客户端收到服务端的确认之后,再次向服务端确认, (ACK=1,ACKnum=y+1),发送完毕后,客户端进入 ESTABLISHED 状态,当服务器端接收到这个包时,也进入 ESTABLISHED 状态。
四次挥手
第一次挥手:客户端发送释放连接报文, (FIN=1,seq=u),发送完毕后,客户端进入 FIN_WAIT_1 状态。
第二次挥手:服务端发送确认报文 (ACK=1,ack=u+1,seq =v),发送完毕后,服务器端进入 CLOSE_WAIT 状态,客户端接收到这个确认包之后,进入 FIN_WAIT_2 状态。
第三次挥手:服务端发送释放连接报文, (FIN=1,ACK=1,seq=w,ack=u+1),发送完毕后,服务器端进入 LAST_ACK 状态,等待来自客户端的最后一个 ACK。
第四次挥手:客户端发送确认报文, (ACK=1,seq=u+1,ack=w+1),客户端接收到来自服务器端的关闭请求,发送一个确认包,并进入 TIME_WAIT 状态,等待了某个固定时间(两个最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,没有收到服务器端的 ACK ,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入 CLOSED 状态。服务器端接收到这个确认包之后,关闭连接,进入 CLOSED 状态。