TCP协议中的Ack和Seq号

一、基本概念

seq:表示本次发送数据的偏移量,也就是从哪里开始发送数据。

len:表示本次tcp携带的数据长度。

ack:首先意味着已经收到对方多少字节数据,其次告诉对方接下来的包的seq要从ack确定的数值继续接力。

二、Wireshark抓包

本地请求61.135.185.32这个ip,这个过程的抓包如下。

三次握手

(客户端)1号包:我能和你建立连接吗?

  • seq=0,表示这是一个新的开始
  • 没有ack,因为还没有建立连接,也就不存在我收到了对方多少的数据的说法
  • Len=0,表示我没有传输数据,就是一个想要建立连接的tcp包而已。

(服务端)2号包:我收到了,我们能进行连接,快来玩吧。

  • seq=0
  • ack=1暗示了两点,第一表示我收到了你刚才的那个seq=0的连接请求,另外告诉对方接下来请从seq=1开始给我传输数据
  • Len=0,表示同样没有传输数据。

(客户端)3号包:好的,那我们就连接吧。

  • seq=1,响应上面的包,我真的从seq=1开始传输哦
  • ack=1,表示我收到了你的seq=0同意连接,下面你也请从seq=1给我传输数据吧
  • Len=0

好了,三次握手愉快的结束,建立起来了连接。

总结一下三次握手的过程:

  • 起始包的seq都等于0
  • 三次握手中的ack=对方上一个的seq+1
  • seq等于对方上次的ack

数据传输过程

(客户端)4号包:我要你的首页信息

客户端发送http请求,http请求需要tcp进行控制,然后交给ip层,然后由网卡发出...

注意4号帧tcp包的内容

  • seq=1,因为上次没有传输数据,seq号不变,也就是3号包的seq=1,len=0
  • ack=1,告诉服务端你要是发送数据,得从seq=1开始哈
  • len=77,表示我这次传输的数据字节数

(服务端)5号包:好的,我收到你的请求了。

  • seq=1,如4号包的ack所要求的
  • ack=78ack=4号包的seq+4号包的len = 1+77=78表示客户端啊,你要是再发就从seq=78开始发送哈
  • len=0

(服务端)`6`号包:诺,给你的数据

5、6号均为服务端发送的包,在这期间没有接收到包,理所应当的,5、6号包的seq、ack是一样的。

  • seq=1
  • ack=78
  • len=1440,数据的长度

(客户端)7号包:收到啦

  • seq=78,你让我从78发,我就从78
  • ack=14411441=6号包的seq+6号包的len=1+1440=1441,表示我收到啦
  • len=0

总结

发送方的包,包括seqlen,接收方如何告知对方数据已经收到呢?

答案就在于接收方的ack=发送方的seq+发送方的len

整体来讲,就是这样。

特殊情况在于三次握手时,客户端、服务端握手时,len=0,此时对方就不是ack=seq+0,而是ack=seq+1

TCP协议中的Ack和Seq号相关推荐

  1. TCP协议中SYN/ACK/FIN/PSH各有什么作用

    GoodMai 在进行抓包测试的时候,发现了很多类型的数据包,除了常见的三次握手外,还有一些PSH,FIN类型的类型.借此机会,常见数据包的类型给大家科普一下. *SYN:同步标志 同步序列编号(Sy ...

  2. 计算机网络sequence number,TCP协议中SequenceNumber和Ack Numbe

    Sequence Number lzyws7393074532892018-04-25 Number Sequence qq_391789932452017-09-21 理解TCP序列号(Sequen ...

  3. TCP协议中的核心知识点,SYN Flood?ISN?滑动窗口?数据重传?拆包粘包?单tcp连接多请求?拥塞管理?(个人收藏学习笔记)

    TCP协议中的核心知识点,滑动窗口?数据重传?拆包粘包?单tcp连接多请求? 1.前言 2.TCP/IP四层结构 3. TCP 3.1 TCP 协议头 3.2 TCP通信过程 3.2.1 建立连接的三 ...

  4. TCP协议中报文详解

    TCP协议中报文SYN.ACK.FIN.RST.PSH.URG详解 1. SYN:同步连接序号,TCP SYN报文就是把这个标志设置为1,来请求建立连接: 2. ACK:请求/应答状态.0为请求,1为 ...

  5. TCP连接中的ACK与ack

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

  6. Python常见面试题:TCP 协议中的三次握手与四次挥手相关概念详解

    今天来聊聊Python常见面试题中面试频率特别高的一个题目:TCP 协议中的三次握手与四次挥手. 涉及到的知识点有: 1.TCP.UDP 协议的区别 2.TCP 头部结构 3.三次握手与四次挥手过程详 ...

  7. tcp 协议中发送窗口的大小应该是_TCP 协议中的三次握手与四次挥手

    今天来聊聊面试频率特别高的一个题目:TCP 协议中的三次握手与四次挥手.涉及到的知识点有: 1.TCP.UDP 协议的区别 2.TCP 头部结构 3.三次握手与四次挥手过程详解 4.什么是 TIME_ ...

  8. 从TCP三次握手说起——浅析TCP协议中的疑难杂症(转载)

    [转载] 原博文来自:https://blog.csdn.net/qiansg123/article/details/80126677 作者:黄日成,手Q游戏中心后台开发,腾讯高级工程师. 因为写得太 ...

  9. 从TCP三次握手说起——浅析TCP协议中的疑难杂症

    PeterWang_bupt 贡献值:2 等級:L1 0 发布 0 评论 1 顶 发布链接发布图文   全部主题 我关注的主题 GEEKNEWS Rust Swift 全栈工程师 /home Pres ...

最新文章

  1. Redhat7 systemctl命令
  2. OS_CORE.C(5)
  3. 《杀死比尔1 Kill Bill Volume One》电影原声Cool!
  4. 怀旧服开新服务器消息,怀旧服B测已经开启 全新内容爆料汇总
  5. 用代码转换整数规划 max{ } 与 min{ } 形式至代码形式
  6. Java中Lambda表达式的使用(转)
  7. SAP License:财务帐与后勤不一致情况
  8. 微网站|h5弹窗|手机网站 html5 弹窗、弹层、提示框、加载条
  9. 常用 Git 命令清单(阮一峰)
  10. linux调度器(三)——周期性调度器与CFS
  11. C#——WebApi 接口参数传参详解
  12. 支持视频语音通话的免费远程管理软件-Rd远控
  13. 应用克隆漏洞原理分析
  14. 身份验证中的allow users=\?\ /中的?和*各是什么意思?
  15. python输出玫瑰花
  16. JZOJ4883. 【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰
  17. 9款免费的Windows远程协助软件
  18. 怎么通过示波器测永磁电机的极对数(PMSM+BLDC)
  19. GitHub开源成语接龙查询器,已收录16765个成语
  20. 烟气分析仪行业调研报告 - 市场现状分析与发展前景预测

热门文章

  1. C# 调用微软自带的语音识别
  2. C++续行符(反斜杠符号)
  3. 产品经理必读:敏捷开发中的需求管理过程全解
  4. 推荐算法工程师学习路线及工作指南
  5. 比 Elasticsearch 更快!RediSearch + RedisJSON = 王炸
  6. 给服务器安装debian系统,安装Debian 10 Buster的方法
  7. 【ybt金牌导航2-3-3】【luogu P3975】K小子串 / 弦论
  8. 计算几何(证明三角形内心公式: aOA+bOB+cOC = 0)
  9. 中国电子学会2022年06月份青少年软件编程Python等级考试试卷二级真题(含答案)
  10. 给定三角形三边,如何判断该三角形的形状