8.窗口大小( 16 位):数据字节数,表示从确认号开始,本报文的源方可以接收的字节数,即源方接收窗口大小 。窗口大小是一个 16bit 字段,因而窗口大小最大为 65535 字节 。
9.校验和( 16 位):此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得 。这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证 。
10.紧急指针( 16 位):只有当 URG 标志置 1 时紧急指针才有效 。TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式 。
11.选项:最常见的可选字段是最长报文大小,又称为 MSS(Maximum Segment Size)。每个连接方通常都在通信的第一个报文段(为建立连接而设置 SYN 标志的那个段)中指明这个选项,它指明本端所能接收的最大长度的报文段 。选项长度不一定是 32 位字的整数倍,所以要加填充位,使得报头长度成为整字数 。
12.数据: TCP 报文段中的数据部分是可选的 。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部 。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据 。在处理超时的许多情况中,也会发送不带任何数据的报文段 。
文章插图
2.2. 三次握手
第一次握手:主机 A 发送位码为 syn=1,随机产生 seq number=1234567 的数据包到服务器,主机 B由 SYN=1 知道,A 要求建立联机;
第二次握手:主机 B 收到请求后要确认联机 信息,向 A 发 送 ack number=( 主机 A 的seq+1),syn=1,ack=1,随机产生 seq=7654321 的包
第三次握手:主机 A 收到后检查 ack number 是否正确,即第一次发送的 seq number+1,以及位码ack 是否为 1,若正确,主机 A 会再发送 ack number=(主机 B 的 seq+1),ack=1,主机 B 收到后确认seq 值与 ack=1 则连接建立成功 。
文章插图
2.3. 四次挥手
TCP 建立连接要进行三次握手,而断开连接要进行四次 。这是由于 TCP 的半关闭造成的 。因为 TCP 连接是全双工的(即数据可在两个方向上同时传递)所以进行关闭时每个方向上都要单独进行关闭 。这个单方向的关闭就叫半关闭 。当一方完成它的数据发送任务,就发送一个 FIN 来向另一方通告将要终止个方向的连接 。
1) 关闭客户端到服务器的连接:首先客户端 A 发送一个 FIN,用来关闭客户到服务器的数据传送,然后等待服务器的确认 。其中终止标志位 FIN=1,序列号 seq=u
2) 服务器收到这个 FIN,它发回一个 ACK,确认号 ack 为收到的序号加 1 。
3) 关闭服务器到客户端的连接:也是发送一个 FIN 给客户端 。
4) 客户段收到 FIN 后,并发回一个 ACK 报文确认,并将确认序号 seq 设置为收到序号加 1 。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭 。
文章插图
推荐阅读
- 安农大与陕西省供销社签署茶业发展合作协议
- 陕西省供销社与安徽农大签署茶产业合作协议
- 财付通协议付款是怎么回事 什么叫财付通协议付款
- 远程网络通讯协议
- IPv6学习笔记
- Spring Boot项目如何同时支持HTTP和HTTPS协议
- 淘宝网服务协议对免费责任(责任限制 淘宝网服务协议对免责事由是如何规定的?是如何规定的?)
- HTTP协议通信原理
- TCP 粘包和半包 介绍及解决
- Mysql通讯协议分析