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

2023-11-02

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

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

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报文格式

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表现出来的,可以看看我的关于[三次握手和四次挥手]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 前k个高频单词

    不要害怕前方的未知和困难 因为它们都是你成长的机会 不要过于在意别人的眼光和评价 因为唯有你的内心才知道自己真正的价值 珍惜当下 享受生活的点滴 让自己变得更加坚强 自信 成熟 作者 不能再留遗憾了 专栏 Java学习 本文章主要内容 前k
  • 星星之火-52:6G十大领域关键技术

    目录 1 6G超宽带通信系统的网络架构 2 6G超宽带通信系统的软件架构 3 太赫兹通信技术 4 6G 信道仿真技术及射线跟踪 5 超大带宽与全频谱协作 6 轨道角动量调制技术 7 宽带太赫兹硬件元器件技术 8 太赫兹天线技术 9 太赫兹射
  • 国产系统有了,芯片有了,编译器有了,那编程语言呢?

    国产操作系统一直在发展 市面上也早有了多款基于Linux内核的操作系统 各大OS厂商也都有自己的市场和拥趸 而芯片这块 虽然我们起步晚 商业市场也显得浮躁纷繁 但依旧有务实的IT科研工作者 工程师为主的企业或团队默默无闻十年磨一剑 苦心孤诣
  • (十三)MySQL数据库安装——从0开始大数据开发实战:电影推荐系统(scala版)

    执行一下命令 安装MySQL sudo apt get update sudo apt get install mysql server 安装过程中会提示设置MySQL数据库root用户的密码 本案例设置密码为hadoop 安装完成后默认启
  • 常用英语缩写

    Abandon简写为ABAN Abandoned简写为ABD Abbreviate简写为ABBR Abbreviated简写为ABR Abbreviation简写为ABR Ability简写为ABL Abundance简写为ABUND Ac
  • 虚幻4学习笔记(4)光照、游戏角色、上下车、冲刺瞬移多段跳、打包

    光照 光照 光照分类 光的移动性 自动曝光 指数级高度雾 生成光束 使用体积雾创建光束 使用天空球制造夜晚 设置玩家角色 设置玩家切换 镜头过度 上下车 上车 下车 下车减速 人物冲刺和瞬移 冲刺 瞬移 多段跳设置 打包 B站UP谌嘉诚课程
  • LinkedList工作原理及实现

    以双向链表实现 链表无容量限制 但双向链表本身使用了更多空间 也需要额外的链表指针操作 按下标访问元素 get i set i e 要悲剧的遍历链表将指针移动到位 如果i gt 数组大小的一半 会从末尾移起 插入 删除元素时修改前后节点的指
  • Qt编写自定义控件大全

    最新版可执行文件 https pan baidu com s 1Y z4GT4kslgsb4f46yLILA 不定期增加控件及修正BUG和改进算法 目前已超过90个控件 总图 总图 1 动画按钮 1 可设置显示的图像和底部的文字 2 可设置
  • jenkins部署jeecg-boot3.1(前后端)自动化

    tip 我是使用我的腾讯云轻量应用服务器做的本次实战 操作系统 CentOS 7 6 64bit 主机规格 CPU 4核 内存 4GB 这个配置起前端有点带不动 建议8G内存 这个问题我反复测试很多次 一跑npm 就开始疯狂占资源 然后操作
  • 联想服务器开机引导,联想服务器怎么进入bios

    联想电脑设置起来比较麻烦 除了快捷启动菜单比较方便 如果要用传统的方式进行设置 会有很多项要设置 那么你知道联想服务器怎么进入bios吗 接下来 学习啦小编跟你分享联想服务器进入bios的设置步骤图解 联想服务器进入bios的设置步骤图解
  • word文档 文字变网址 解决办法

    word文档中文字变网址解决办法 问题描述 打开word文档发现其中有些文字变成了网址 解决办法 Alt F9 联想键盘 Alt Fn F9 这是因为直接按F9是功能键
  • n对括号的匹配方式(卡特兰数)

    4对 括号有多少种可能的合法 匹配方式 n对 括号呢 此题是卡特兰数的一个通常应用 相似的还有出栈顺序等 关于卡特兰数的具体内容 请参阅百度百科或Wiki http baike baidu com view 2499752 htm 网络上可
  • 泛型与正则表达式在Java编程中扮演着重要的角色

    泛型与正则表达式在Java编程中扮演着重要的角色 泛型提供了一种在编译时期检查类型安全性的机制 而正则表达式则允许我们以模式匹配的方式进行字符串的处理 本文将详细介绍Java中泛型和正则表达式的基础知识 并提供相应的源代码示例 泛型 什么是
  • 笔记:springboot-admin 整合spring security应用注册失败问题

    问题描述 原本正常的springboot admin 在整合了spring security之后就无法正常注册应用了 查看打印 Failed to register application as Application name admin
  • Android 中Activity和Fragment生命周期的具体变化详解

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 前言 一个MainActivity中装载了两个Fragment 在MainActivity中的onCreate 方法中进行了Fragme
  • ​ 输入一个字符串,将其中所有的大写和小写字母改成该字母的下一个字母,z 的下一个字母为 a。JAVA

    import java util Scanner public class Main public static void main String args Scanner scanner new Scanner System in Str
  • 【Unity】四叉树/八叉树管理和动态加载场景物件

    一 引言 场景的组织与管理是3d游戏开发中重要的一环 unity3d引擎中 只提供了最基本的场景组织 当我们加载场景时 会将场景中的物件及其依赖的资源全部加载出来 这对于较为庞大的场景显然是不合理的 可以考虑在进入场景时预先将可见范围内的物
  • GO中树的实现与学习

    go 的书写很像C 然后以前没有弄明白的事情终于弄明白了 这一次是树的重新学习和深入学习 树的学习 基本二叉树 树的基本创建 方法一 方法二 树的遍历 先序遍历非递归 中序遍历非递归 后序遍历非递归 层序遍历 树的深度 DFS BFS 搜索
  • 如何优雅地下载huggingface上模型,以llama2模型下载为例

    背景 由于llama2模型的下载需要经过官方的授权 这就需要登陆hugging face的 对模型页面进行申请 等待审核通过后 才能够下载 如果在单纯用 git lfs 的方式进行下载 需要输入账号和密码 为了更快速地进行下载 既能够设置密
  • TCP/IP协议及常见状态码(SYN,FIN,ACK,PSH,RST)

    TCP IP协议及常见状态码 SYN FIN ACK PSH RST 1 TCP IP协议 2 TCP协议原理 3 TCP报文格式 4 三次握手的状态码 对于软件测试工程师 前后端工程师 网络工程师 运维工程师等都需要对计算机网络基础知识有