当前位置: 首页 > news >正文

电脑知识 | TCP通俗易懂详解 <三>tcp首部中ACK、SYN、FIN等信息填写案例_握手时

目录

一、👋🏻前言

二、🤝🏻握手时的快递单

1.👫第一次握手(发送方)

2.👫第二次握手(收件方)

3.👫第三次握手(发件方)

三、📦️发送数据时的快递单

1.第一次发数据(发件方)

四、🧑🏼‍❤‍🧑🏽握手时机器的状态

1.我们打电话时的状态

2.TCP的状态

五、🏁结语


一、👋🏻前言

大家好,我是菌菌巧乐兹~书接上回,我们讲到TCP的“快递单”如何填写

本篇文章,大家一起来填一填“快递单”

二、🤝🏻握手时的快递单

快递原单如下图所示:

源端口和目的端口均和程序及电脑有关,我们先略过,从序号开始。

案例:我们现在有19本书要发 

1.👫第一次握手(发送方)

序号:这个序号不一定从0开始,是根据当前实际情况,愿意多少都可以,假设我打算从520开始,那我需要告诉对方,这里就填写520

确认号:此时不是收件方,这里不需要填,随便填都可以,也可以全0

数据偏移(就是首部长度):

保留:全0

URG:不是紧急消息,填0

ACK:因为不是收件方,所以确认号无效,填0

PSH:不需要快速回复,填0

RST:没出现问题,填0

SYN:现在正在连接,填1

FIN:现在不需要断开连接,填0

后面都略

2.👫第二次握手(收件方)

序号:此时我不仅是收件方,我也是发件方,我马上要发消息了,那边说打算从520开始发信息,那这边也随便设置一个,那就从1314开始发信息吧,于是填1314

确认号:此时是收件方,前面收到了发过来的520,此时希望下次收到的是521,所以填521

数据偏移(就是首部长度):

保留:全0

URG:不是紧急消息,填0

ACK:是收件方,所以确认号有效,填1

PSH:不需要快速回复,填0

RST:没出现问题,填0

SYN:现在正在连接,填1

FIN:现在不需要断开连接,填0


截止到握手二,连接已经初步达成了,第三次握手只是为了更保险,所以第三次握手已经可以发数据了,看它想不想。

3.👫第三次握手(发件方)

序号:此时我不仅是发件方,我也是收件方,上一次发的是520,现在该发521了,所以填521

确认号:此时是收件方,前面收到了发过来的1314,此时希望下次收到的是1315,所以填1315

数据偏移(就是首部长度):

保留:全0

URG:不是紧急消息,填0

ACK:是收件方,所以确认号有效,填1

PSH:不需要快速回复,填0

RST:没出现问题,填0

SYN:现在连接已经建立好了,填0

FIN:现在不需要断开连接,填0

三、📦️发送数据时的快递单

1.第一次发数据(发件方)

序号:如果握手三时,已经开始发书(数据)了,假设发了5本(5字节),握手三的序号写的521,所以现在521+5=526,填526

如果握手三时,还没发数据,握手三的序号写的521,现在还填521

确认号:如果握手到现在没有接过其他数据,和之前保持一致填1315

数据偏移(就是首部长度):

保留:全0

URG:不是紧急消息,填0

ACK:是收件方,所以确认号有效,填1

PSH:不需要快速回复,填0

RST:没出现问题,填0

SYN:现在连接已经建立好了,填0

FIN:现在不需要断开连接,填0

四、🧑🏼‍❤‍🧑🏽握手时机器的状态

1.我们打电话时的状态

在探讨机器之前,我们先思考一下我们打电话的状态。     

当我想打一个电话

事情状态
打电话前没有打电话的状态
拨通了电话号码开始听彩铃
对方接听

开始打电话  

   

当我听到手机铃声

事情状态
电话响了等待我点接听键
我点了接听键开始打电话

2.TCP的状态

找了好多图,就觉得这个写的比较好~

五、🏁结语

我是菌菌巧乐兹~希望用通俗易懂的语言来讲解程序知识~

如果觉得写的还行,请点个赞💛再走吧~

相关文章:

  • 前端VUE框架理论与应用(10)
  • 【Ragflow】18.更好的推理框架:vLLM的docker部署方式
  • Golang Event Bus 最佳实践:使用 NSQite 实现松耦合架构
  • JDBC与MyBatis全面解析:从基础到比较
  • 如何优雅的关闭线程池
  • 深度学习常见模块实现001
  • 为什么 Transformer 要使用多头注意力机制?
  • Log4j2远程命令执行(CVE-2021-44228)复现
  • 智能 GitHub Copilot 副驾驶® 更新升级!
  • Spring JDBC 与数据访问:从性能优化到事务协同
  • 如何实现一个构造函数继承另一个构造函数的属性和方法?给出ES5和ES6两种方式
  • 软件研发过程中的技术债
  • (Matlab)自动驾驶仿真 设计驾驶场景、配置传感器并生成合成 数据
  • #Liunx内存管理# 页面分配器是按照什么方向来扫描zone的?
  • 第一期第10讲
  • ShellScript脚本编程
  • C语言 - 深拷贝与浅拷贝详解
  • 【扩散模型连载 · 第 2 期】逆向扩散建模与神经网络的角色
  • Object.create(null)`和`{}`创建的对象有什么区别?
  • git提交规范
  • 浙江省建设厅官方网站信用平台/发外链软件
  • 一个完整的网站制作流程/网络推广的基本方法有哪些
  • 淘宝网站建设问题/乐天seo视频教程
  • 哪个网站做视频有钱挣/建网站专业
  • 网站建设yankt/小红书搜索指数
  • 宁夏电力建设工程公司外部网站/好的在线crm系统