IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> tcp_协议分析basic_wireShark分析报文(reserve+flags) -> 正文阅读

[网络协议]tcp_协议分析basic_wireShark分析报文(reserve+flags)

TCP 报文

TCP/IP 的运输层有两个主要协议:

  1. 用户数据报协议UDP (User Datagram Protocol)
  2. 传输控制协议TCP (Transmission Control Protocol)
  • 两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元
  • TPDU (Transport Protocol Data Unit)。
  • TCP 传送的数据单位协议是TCP 报文段(segment)。
  • UDP 传送的数据单位协议是 UDP 报文或用户数据报。

端口号(protocol port number)

  • 在运输层使用协议端口号 (protocol portnumber),或通常简称为端口 (port)。

  • 虽然通信的终点是应用进程,但我们可以把端口想象是通信的终点,因为我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由 TCP 来完。

  • 硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。

  • 在这里插入图片描述

TCP报文段分析

TCP报文首部的设计是经过一些简单模型改进演变位适合实际应用的处理模型,报文的设计考虑到并满足模型的功能需求,对应着存在着某些字段

ARQ协议(通信模型)

  • ? 基本思想:
  • ? 发送方一次可以发出多个分组。
  • ? 使用滑动窗口协议控制发送方和接收方所能发送和接收的分组的数量和编号。
  • ? 每收到一个确认,发送方就把发送窗口向前滑动。
  • ? 接收方一般采用累积确认的方式。
  • ? 采用回退N(Go-Back-N)方法进行重传。

累积确认

  • ? 接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。
  • ? 优点:容易实现,即使确认丢失也不必重传。
  • ? 缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。

ARP协议和停止等待协议

ARQ协议从停止等待协议改进过来的
在这里插入图片描述

TCP 报文设计

  • TCP报文段分为首部和数据部分
  • 首部又分为固定部分和选项(变长部分)
  • 固定部分占有明确的20Byte(160bit);(首部最大长度60Byte:480bit)
  • 数据偏移(即首部长度)——占 4 位,它指出TCP 报文段(首部+数据部)的数据起始处(数据部分的起始处)距离 TCP 报文段的起始处(首部起始处)有多远。“数据偏移”的单位是 32 位字(以4 字节为计算单位)。
  • 确认号seq(4Byte:32bit)的有效性与ACK位(1位1bit)的关系
  • 在这里插入图片描述

ack & ACK

  • 确认号ack(2Byte:16bit)(小写的ack)
  • 确认位ACK(1位:1bit)

其他主题

  • 流量控制
  • 拥塞控制
  • 超时重传

三次握手

在这里插入图片描述


  • 建立TCP连接过程中的报文不携带数据,数组字节流在在数据传送阶段的TCP报文才开始携带数据字节流
  • 交换报文的过程中,相邻的报文的seq与ack存在一定的联系.(交叉联系)
    报文中的seq(ack)之间倒是没有直接联系(但是如果两个相邻报文时统一台主机发出的(比如四次挥手的过程中的第2,3报文,ack将保持不变;而seq之间仍然相对独立)
  • A 的TCP 向B 发出连接请求报文段,其首部中的同步位SYN = 1,并选择序号seq = x,表明传送数据时的第一个数据字节的序号是x。
  • B 的TCP 收到连接请求报文段后,如同意,则发回确认。B 在确认报文段中应使SYN = 1,使确认位ACK = 1,其确认号ack = x + 1,自己选择的序号seq = y。
  • A 收到此报文段后向B给出确认,其ACK = 1,确认号ack = y + 1。A 的TCP 通知上层应用进程,连接已经建立。
  • B 的TCP 收到主机A的确认后,也通知其上层应用进程:TCP 连接已经建立。

四次挥手

在这里插入图片描述

字段所占字节与位的混淆

wireShark分析报文(reserve+flags)

简略信息Info
在这里插入图片描述



不过如果将Reserved一同算入标志位,那么将达到12位Flags!

需要注意的是,这里途中的data offset字段所占的4位(4bit)是用以描述TCP报文首部的大小(4bit可以表示的最大值1111(即十进制的15));那么单位是什么?(既不是Byte,更不是bit,而是(4Byte)为单位);报文以4Byt位计量单位,所以首部最大为15*4Byte=60Byte(480bit)

  • 即,描述首部长度信息的字段占了这个TCP报文段的首部空间的4个bit;

  • 计算机网络中有各种各样的协议,分析协议中的报文解构是重点内容

    • 为了更好的记住各个字段在数据报(通常是分析数据报的首部,首部的设计包含着该类型协议所具备的所有功能)
    • 记忆(m字节:8m位;n位:nbit)
    • 比如:
      • 1字节8位
      • 2字节16位
      • 3字节24位
      • 4字节32位
      • 8字节64位
      • 16字节128位
      • 20字节160位
      • 60字节480位
      • 半字节4位(4位4bit)
      • 1位1bit
  • seq与ack字段

    • 将ack理解为seqExpectNext
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 13:13:40  更:2021-12-13 13:15:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:28:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码