TCP/IP协议及常见状态码(SYN,FIN,ACK,PSH,RST)

  • 1、TCP/IP协议
  • 2、TCP协议原理
  • 3、TCP报文格式
  • 4、三次握手的状态码

对于软件测试工程师、前后端工程师、网络工程师、运维工程师等都需要对计算机网络基础知识有一定的了解。
我最近也在系统学习计算机网络知识,为防自己忘记,特意把这几天在网上搜到的知识梳理起来,整理成一系列计算机网络知识,一方面可以使自己理解得更加透彻,另一方面也希望能帮助想要学习的你~

1、TCP/IP协议

TCP/IP协议(Transmission Control Protocol/Internet Protocol),中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。

TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构(应用层、传输层、网际层,网络接口层),每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。
ps:OSI模型分为层,分别是应用层、表示层、会话层,传输层,网络层,数据链路层、物理层

2、TCP协议原理

TCP每发送一个报文段,便启动一个定时器,若在定时器超时之间还未收到ACK请求确认,就重传该报文,如图,数据包由A的缓冲区发往B,B在收到数据包之后,回发一个ACK确认包给A,之后将数据包从缓冲区释放。

因此,该数据包会一直缓冲在A的缓冲区,直到一个ACK确认为止。

3、TCP报文格式


下面介绍几个重要字段的含义

1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等。

标志位 意义
URG 指示报文段里存在着被发送方的上层实体标记为”紧急”数据,当URG=1时,其后的紧急指针指示紧急数据在当前数据段中的位置(相对于当前序列号的字节偏移量),TCP接收方必须通知上层实体。
ACK 当ACK=0时,表示该数据段不包含确认信息,当ACK=1时,表示该报文段包括一个对已被成功接收报文段的确认。
PSH 当PSH=1时,接收方在收到数据后立即将数据交给上层,而不是直到整个缓冲区满。
RST 用于重置一个已经混乱的连接(如主崩溃),也可用于拒绝一个无效的数据段或者拒绝一个连接请求。一般而言,如果你得到的数据段被设置了RST位,那说明你这一端有问题了。
SYN 用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。注:捎带是指对客户机到服务器数据的确认被装载在一个承载服务器到客户机的数据
FIN 用于释放一个连接,表示发送方已经没有数据要传输了。此时,接收方可能继续接收数据,好在SYN和FIN数据段都有序列号,从而保证了这两种数据段以正确顺序被处理

4、三次握手的状态码

SYN(Synchronize Sequence Number)同步序列号,表示建立连接;
ACK(Acknowledgement)即确认字符,表示响应;
FIN(Finish)表示关闭连接;
PSH(Push)表示DATA数据传输;
RST(Reset)表示重置

当SYN和ACK同时为1它表示的建立连接之后的响应;若只是单个SYN,表示的只是建立连接。

面试官经常问的三次握手就是通过这样的ACK表现出来的,可以看看我的关于[三次握手和四次挥手]

TCP/IP协议及常见状态码(SYN,FIN,ACK,PSH,RST)相关推荐

  1. TCP/IP协议及常见状态码说明(SYN,FIN,ACK,PSH,RST)

    TCP/IP协议及常见状态码(SYN,FIN,ACK,PSH,RST) TCP/IP协议\TCP协议原理\报文格式\三次握手的状态码 1.TCP/IP协议 TCP/IP协议(Transmission ...

  2. TCP的连接状态标识 (SYN, FIN, ACK, PSH, RST, URG)

    TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段.它们的含义是: (1)SYN表示建立 ...

  3. TCP的几个状态(SYN/FIN/ACK/PSH/RST)

    在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段. 含义: SYN 表示建立连接, ...

  4. TCP的状态:SYN, FIN, ACK, PSH, RST, URG 简介及 ACK确认机制

    1.TCP的状态FLAGS字段状态 在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 对于我们日常的分析有用的就是前面的五个字段:它们 ...

  5. TCP的状态:SYN, FIN, ACK, PSH, RST, URG

    文章目录 原文:https://blog.csdn.net/llzhang_fly/article/details/108676070 [RST, ACK] TCP/IP详解–发送ACK和RST的场景 ...

  6. TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)

    在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段. 它们的含义是: SYN表示建立连 ...

  7. TCP的几个状态 (SYN, FIN, ACK, PSH, RST, URG)

    在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段. 它们的含义是: SYN表示建立连 ...

  8. TCP的状态(SYN,FIN,ACK,PSH,RST,URG)

    在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段. 它们的含义是: SYN表示建立连 ...

  9. TCP包的类型 (SYN, FIN, ACK, PSH, RST, URG)

    http://blog.csdn.net/season_hangzhou/article/details/9161969 在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, A ...

  10. WiresharkTCP的状态 (SYN, FIN, ACK, PSH, RST, URG)

    在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段. 它们的含义是: SYN表示建立连 ...

最新文章

  1. 动手学深度学习(二)
  2. 探究netty的观察者设计模式
  3. OGG logdump跳过某事物操作方法
  4. Luogu 1541 乌龟棋
  5. mac 升级 15.4之后,部分软件无法打开解决
  6. Mybatis动态sql的使用
  7. JS Date格式化为yyyy-MM-dd类字符串
  8. 如何使用txt文件实现JMeter参数化
  9. ASP.NET基础教程-Server对象
  10. 计算机基础知识_进制转化
  11. flash json php,php - codeigniter数组json和flashdata - 堆栈内存溢出
  12. [读书笔录]解析卷积神经网络(魏秀参)——第一章
  13. Java对AutoCad二次开发
  14. 紫猫安卓按键之其他命令
  15. 重磅!上海985教授当选!全球仅4人!
  16. vue下载sass依赖
  17. C++实现坦克大战(超详细)(文末附源码!!!)
  18. 访问服务器显示无法访问目标主机,ip无法访问目标主机
  19. 玩知乎五年,我赚了多少钱?
  20. mac如何把html转成word,Pages怎么保存为word格式 pages保存格式教程

热门文章

  1. 解决macOS邮件mail收取163邮件占用高CPU和下载不动的问题
  2. 重庆交通大学计算机科学与技术怎么样,计算机科学与技术 大学实力哪家强?(干货)...
  3. Mysql中LENGTH()函数
  4. 如何在海量元素中(例如 10 亿无序、不定长、不重复)快速判断一个元素是否存在?
  5. 7628刷breed_360 P2路由器免拆机刷入breed固件的方法
  6. Resnet解决了什么问题
  7. 计算机上的按键名有哪些,电脑键盘上各个按键名称与功能作用
  8. ADSL拨号工作原理
  9. Ubuntu 20.04安装字体
  10. ubuntu下 端口映射