TCP简介
来源:互联网 发布:下颌关节紊乱 知乎 编辑:程序博客网 时间:2024/05/16 15:38
一.TCP 报头格式
16位源端口地址
16位目的端口地址
32位序号
32位确认号
4位首部长度
6位保留
URG
ACK
PSH
RST
SYN
FIN
16位窗口大小
16位校检和
16位紧急指针
选项及填充
URG 紧急指针的值有效 1时,紧急指针字段生效
ACK 确认字段的值有效 为1时,确认字段的值生效
PSH 将数据推向前面
RST 连接必须复位
SYN 在连接时对序号进行同步
FIN 终止连接
二.TCP 连接三次握手
Seq+SYN
ACK+SYN+Seq
ACK+seq
1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。
(2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。
(3) 客户必须再次回应服务段一个ACK报文,
三.TCP 断开四次握手
FIN+seq
ACK
FIN+Seq
ACk
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
(1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送(报文段4)。
(2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。
(3) 服务器关闭客户端的连接,发送一个FIN给客户端(报文段6)。
(4) 客户段发回ACK报文确认,并将确认序号设置为收到序号加1
四.TCP 状态
CLOSED 没有连接 tcp初始状态
LISTEN 表示socket处于监听状态
SYN-SENT 客户端请求连接SYN报文发送后,客户端变为该状态,等待服务端的ACK
SYN-RECV 客户端接收到服务端的SYN后变为该状态,之后发送ACK
ESTABLISHED 连接建立
FIN-WAIT-1 应用程序已请求关闭该链接,即客户端发送FIN之后变为该状态
FIN-WAIT-2 另一端已接受关闭该链接,即服务端在接收到客户端的FIN,发送ACK滞后的状态
CLOSING 两端都已经决定关闭连接,即双方都发送了FIN
TIME-WAIT表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。如果FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。
CLOSE-WAIT 即在接受了第一次FIN并发送ACK之后,被动段可能还有事情要处理并没有发送FIN的状态
LAST-ACK 被动端在发送了FIN等待对方ACK的状态
- TCP简介
- TCP 简介
- TCP简介
- TCP简介
- TCP简介
- TCP简介
- TCP简介
- TCP 简介
- tcp简介
- tcp/ip简介------TCP协议
- TCP/IP简介
- TCP/IP协议简介
- 客户端TCP实现简介
- TCP/IP协议简介
- TCP/IP协议简介
- TCP/IP协议简介
- tcp协议简介
- TCP协议简介
- 史上最全AndroidStudio快捷键中文版
- 表单的返回
- AsyncHttpClient
- 算法设计题2.29-线性表-第2章-《数据结构习题集》-严蔚敏吴伟民版
- java web基础 --- URL重定向Filter
- TCP简介
- 通过nsurlsession向服务器传送json数据
- 获取网页句柄
- PostgreSQL
- 操作系统的抽象与虚拟化
- 专访Mycat核心开发成员王金剑 :借助Mycat轻松抵御海量并发
- SpringMVC架构
- 模态视图
- 【郑轻】[1803]SC晾衣服