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

学习嵌入式的第三十一天-数据结构-(2025.7.23)网络协议封装

今天的内容主要是网络协议以及常用工具的介绍。

协议头与数据封包/拆包

数据封包示例:

MAC|IP|TCP|hello|
————————————
IP数据报

IP头信息

  • 默认20字节

常用网络测试工具

  • telnet
  • netstat
  • ping
  • arp
  • wireshark
  • tcpdump
  • ssh2
  • secure crt

工具安装命令

sudo ufw disable
sudo apt-get install openssh-server openssh-client
sudo apt-get install wireshark

telnet使用

格式:telnet IP地址 端口
示例:telnet 192.168.1.1 8888
注意:未指定端口时默认使用23号端口。

netstat命令

netstat -anp
netstat -n      # 列出所有网络端口使用情况
netstat -n -t   # 列出所有TCP通信端口信息
netstat -n -u   # 列出所有UDP通信端口信息

数据封包与拆包流程

  • 发送端(Client):从应用层到接口层,逐层封装头部信息,最终形成一帧数据。
  • 接收端(Server):从接口层到应用层,逐层解析并校验,校验失败则丢弃数据包。
  • MTU:最大传输单元1500字节,由以太网硬件决定。

TCP连接流程

  1. 建立TCP连接
  2. 发送HTTP请求报文
  3. 接收HTTP响应报文
  4. 释放TCP连接

HTTP请求报文示例

GET /?pcm=202.412_0_0.0.0&scm=thor.412_14-201000.0.0.0&spm=smpc.home.top-nav.1.1753253408321kU1roGy_1467 HTTP/1.1
Host: news.sohu.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip,deflate
Connection: keep-alive

协议头关键字段

  • 接口层:以太网V2 MAC帧格式
  • IP头:20字节,包含双方IP地址
    • IP Flag
      • D标志位:是否允许分片
      • M标志位:是否为最后一片
    • TTL:生存周期,默认64,经网络节点递减至0时停止传递
  • TCP头:20字节
    • TCP Flag
      • U:紧急数据(带外数据)
      • A:应答
      • P:当前帧包含应用层数据
      • R:连接复位
      • S:建立连接
      • F:断开连接
  • UDP头:8字节

网络工具用途

  • ssh:远程登录工具,需服务器IP、用户名和密码
  • ping:检测网络连通性
  • ifconfig:查看网卡IP地址
  • netstat -anp:查看Linux所有网络连接信息
http://www.xdnf.cn/news/16269.html

相关文章:

  • 数据中心-时序数据库InfluxDB
  • 掌握Gemini-2.5:现代AI开发中实用应用的综合指南
  • 二次函数图像动画展示
  • 在Power Automate Desktop中执行PowerShell获取SharePoint online某个文件夹的用户权限列表
  • excel删除重复项场景
  • 算法竞赛阶段二-数据结构(35)数据结构单链表模拟实现
  • Node.js 模拟 Linux 环境
  • 【每天一个知识点】GAN(生成对抗网络,Generative Adversarial Network)
  • Whisper语音转文字
  • 【洛谷】单向链表、队列安排、约瑟夫问题(list相关算法题)
  • 互联网应用主流框架整合 Spring Boot开发
  • Linux DNS 服务器正反向解析
  • 【IMMCKF】基于容积卡尔曼滤波(CKF)的多模型交互的定位程序,模型为CV和CT,三维环境,matlab代码|附下载链接
  • Nestjs框架: 基于Mongodb的多租户功能集成和优化
  • 算子推理是什么
  • 电脑开机后网络连接慢?
  • (Python)文件储存的认识,文件路径(文件储存基础教程)(Windows系统文件路径)(基础教程)
  • 【17】C# 窗体应用WinForm ——【文本框TextBox、富文本框RichTextBox 】属性、方法、实例应用
  • C++:list(2)list的模拟实现
  • Java中配置两个r2db连接不同的数据库
  • JavaScript:现代Web开发的核心动力
  • Mistral AI开源 Magistral-Small-2507
  • C++查询mysql数据
  • Codeforces Round 181 (Rated for Div. 2)
  • Bert项目--新闻标题文本分类
  • DAY31 整数矩阵及其运算
  • 告别镜像拉取慢!CNB无痛加速方案,一键起飞
  • [论文阅读] 人工智能 + 软件工程 | NoCode-bench:评估LLM无代码功能添加能力的新基准
  • JVM常见工具
  • swagger基本注解@Tag、@Operation、@Parameters、@Parameter、@ApiResponse、@Schema