tcp 三次握手与四次挥手

tcp 报文结构

tcp 是全双工的,即 client 向 server 发送信息的同时,server 也可以向 client 发送信息。

在同主机的两个 session 中分别执行以下命令

tcpdump -i lo -w - | tee ./hello.cap | tcpdump -r -
telnet localhost

三次握手

字段含义:时间戳;从本地临时端口38644向telnet;发起连接标志S;client初始包序号3961004360;窗口大小43690字节;选项[最大报文段长度65495;允许TCP单独确认非连续的片段,用于告知真正丢失的包,只重传丢失的片段;时间戳选项;无操作字段;窗口扩大选项];数据段长度

第一行(第一次握手):client端主动发起第一次握手,同步位syn=1,同时初始化序列号seq num=J;

第二行(第二次握手):server端SYN=1,ACK=1,确认号ack num=J + 1,同时自己初始化序列号seq=K;

第三行(第三次握手):client收到确认报文,SYN不再置1,ACK=1,确认号ack num = K + 1;

server端收到第三次握手的数据报文时,进入established状态,TCP连接建立。

四次挥手

第一行(第一次挥手):client发送结束报文字段,FIN = 1,seq num = M

第二行(第二次和第三次挥手):第二次--ACK = 1,seq num = M + 1;第三次--FIN = 1,seq num = N

第三行(第四次挥手):ACK=1,seq num = N + 1

为什么四次挥手只有三个包呢?因为TCP总是尽可能的捎带需要回复给对方的数据,所以第二个ACK就被第三个FIN捎带过来了。但是当主动方发起断开连接,被动方还有数据需要发送的时候,就会变成先ACK再发送完数据,再FIN。

最新文章

  1. Opera 浏览器各版本下载地址
  2. 【leetcode】Sort Colors(middle)☆
  3. Ajax实例
  4. (转)Yale CAS + .net Client 实现 SSO(3)
  5. vimrc 配置支持backspace
  6. python数据类型(一)
  7. 14-TypeScript简单工厂模式
  8. Kali学习笔记31:目录遍历漏洞、文件包含漏洞
  9. Spring集成ElasticSearch搜索引擎
  10. P1908 逆序对
  11. python3 day01 大纲
  12. 转载:Windows下stdlib.h与glut.h中exit()函数重复定义的解决方案
  13. Git 标签操作
  14. vue中less的使用
  15. spring boot 2.0 源码分析(二)
  16. FusionCancer-人类癌症相关的融合基因的数据库
  17. NBUT 1218 You are my brother 2010辽宁省赛
  18. Fiddler Web Debugger安装后与浏览器之间的常用设置(辅助爬虫)(图文详解)
  19. 谈谈我的js学习过程(二)——“Hello World!”
  20. 安装 nvm 遇到的坑

热门文章

  1. C语言数据结构——第四章 串
  2. 结构struct 联合Union和枚举Enum的细节讨论
  3. AcWing 897. 最长公共子序列
  4. RPC 学习(一)认识
  5. windows系统安装 ionic
  6. 【Python】 平方根
  7. Attribute "resultType" must be declared for element type "update" or "insert"
  8. noobSTL-0-开题报告
  9. python开发基础02-字符串操作方法练习题
  10. sqlmap使用教程(超详细)