在TCP协议三报文握手建立连接的过程中,TCP请求报文段中存在ACK和ack两个数值。要搞清楚这两个数值的含义,得了解TCP报文段的首部格式:

1、TCP报文段的首部格式:

TCP报文段分为首部与数据部分两大部分,首部存放TCP报文段相关信息,数据部分存放TCP报文段数据内容。首部按顺序存在20个固定字节与4n个长度可变的选项字节,这里不讨论首部无关字段,与主题相关的两个字段为“确认号”字段与“ACK”字段(如下图)。

重要前提:TCP连接中传送的字节流中的每一个字节都按顺序编号,编号相关的信息存放于“序号”字段中。

(1)确认号字段:该字段存放的信息为期望收到对方下一个报文段的第一个数据字节的序号。 例:A向B发送数据报文段,B需给A发送一个收到确认报文段来告知A已收到其发来的数据报文段。在B给A发送的确认报文段中,确认号为501,即表明序号1-500的字节已成功收到,接下来期望收到从A发来的序号为501的字节。
(2)ACK字段:在TCP报文段中,字段ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。

2、三报文握手中ACK与ack的含义
TCP的连接建立时,使用三报文握手的方式建立连接(例如下图)。

客户端与服务器来回共发送三个TCP报文段来建立运输连接,三个TCP报文段分别为:
(1)客户端A向服务器B发送的TCP请求报文段“SYN=1,seq=x”;
(2)服务器B向客户端A发送的TCP确认报文段“SYN=1,ACK=1,seq=y,ack=x+1”;
(3)客户端A向服务器B发送的TCP确认报文段“ACK=1,seq=x+1,ack=y+1”。

ACK:这里出现的ACK即为上面所说的TCP报文段首部中的“ACK字段”,置1时该报文段为确认报文段。
ack:而ack则为TCP报文段首部中“确认号字段”的具体数值。ack=x+1说明B希望A下次发来的报文段的第一个数据字节为序号=x+1的字节;ack=y+1说明A希望B下次发来的报文段的第一个数据字节为序号=y+1的字节。

TCP连接中的ACK与ack相关推荐

  1. linux TCP连接失败(不回复SYN,ACK)问题分析

    问题现象 在某一台服务器无法访问另一台服务器的https服务,telnet检测端口发现端口无法连接: [root@020113 ~]# telnet 192.168.5.27 443 Trying 1 ...

  2. 几种TCP连接中出现RST的情况

    UNIX网络编程上说:产生RST的三个条件是:目的地为某端口的SYN到达,然而在该端口上并没有正在监听 的服务器:TCP想取消一个已有链接:TCP接收到一个根本不存在的连接上的分节. 几种TCP连接中 ...

  3. 网络基础2-3(TCP协议,三次握手,四次挥手,TIME_WAIT状态的作用,TCP如何保证可靠传输,TCP连接中状态转化,滑动窗口,流量控制,快速重传,拥塞窗口,延迟应答,捎带应答,粘包问题)

    TCP协议 TCP协议概念 TCP全称为 "传输控制协议(Transmission Control Protocol"). 人如其名, 要对数据的传输进行一个详细的控制 TCP协议 ...

  4. 【Tcp】TCP连接中存在大量TIME_WAIT、CLOSE_WAIT的原因【转】

    TCP连接中存在大量TIME_WAIT.CLOSE_WAIT的原因 TCP通信图 TIME_WAIT CLOSE_WAIT TCP通信图 TIME_WAIT 表示客户端主动关闭socket. 原因: ...

  5. 关于tcp连接中timewait的作用

    今天简单的谈一下tcp连接中timewait的作用,如果没有timewait会发生什么呢? 我们知道首先请求关闭连接的一方会存在timewait状态. 首先我们来看一下tcp四次挥手的过程示意图: 客 ...

  6. TCP连接中time_wait在开发中的影响-搜人以鱼不如授之以渔

    根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),T ...

  7. Linux数据链路tcp失败,TCP连接中的异常断开情况处理

    1.TCP连接中可能出现的异常断开情况 假设存在这样一种情况:在两个不同的主机Machine1.Machine2系统上分别运行两个应用程序Application1.Application2,在Appl ...

  8. TCP连接中TIME_WAIT连接过多

    2019独角兽企业重金招聘Python工程师标准>>> TCP连接中TIME_WAIT连接过多 转载于:https://my.oschina.net/meowmeow/blog/36 ...

  9. 【网络通信与信息安全】之深入解析TCP连接中如何确定客户端的端口号

    一.前言 在 TCP 连接中,客户端在发起连接请求前会先确定一个客户端的端口,然后用这个端口去和服务器端进行握手建立连接.那么在 Linux 上,客户端的端口到底是如何被确定下来的呢? 事实上,我们平 ...

最新文章

  1. 异步调用WCF的方法需要小心的地方
  2. pandas使用reindex函数为日期索引中有缺失日期的dataframe进行索引重置(所有日期都连续)、并使用fill_value参数为行进行默认填充
  3. SSH深度历险(六) 深入浅出----- Spring事务配置的五种方式
  4. Spring Cloud Gateway 突发高危漏洞,下一代云原生网关恰逢其时?
  5. php Trait 基础应用讲解
  6. swag您的装置不支持_209P型铁路客车转向架之轮对轴箱弹簧定位装置简介
  7. java Servlet文件拷贝的模板代码
  8. 对话阿里 CTO 程立:未来数字世界的根基是开源和云
  9. 一阶广义差分模型_实验五 自相关性 -
  10. android rxbus封装,Android RxBus的使用
  11. Postman保存二进制流数据
  12. android .dex文件,对于Android DEX文件详细说明
  13. c语言中strlen什么作用,strlen函数在c语言中的用法是什么
  14. cadence软件安装教程
  15. 生活小妙方记录:治疗缠腰蛇
  16. webstorm插件使用
  17. 无需注册账号从官网下载VMware Workstation
  18. 超声波测距仪编程_超声波测距仪的设计和实现
  19. 数据库、mysql和sql的入门简明教程
  20. 在 springmvc.xml 中配置消息转换器处理 ResponseBody 中文乱码

热门文章

  1. linux lvm2,LVM2常见用法详解
  2. Unity枪击游戏之实现子弹伤害
  3. openstack实例之间大报文分片不生效
  4. 来上海,预见城市未来
  5. hap开发中的几个问题(遇到问题不慌不乱,想想问题的原因自然会解决)
  6. linux下使用mysql
  7. java sha256 64位,JAVA SHA256加密
  8. [论文分享] PATA: Fuzzing with Path Aware Taint Analysis
  9. xming登录linux图形中文乱码,putty+xming远程登录Linux图形界面
  10. 福禄克FLUKE TIX501,TIX580,TI480PRO,TI401PRO代表福禄克正式进入640像素时代