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

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

协议头与数据封包/拆包

数据封包示例:

复制代码
MAC|IP|TCP|hello|
------------------------------------
IP数据报

IP头信息

  • 默认20字节

常用网络测试工具

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

工具安装命令

bash 复制代码
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命令

bash 复制代码
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请求报文示例

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所有网络连接信息
相关推荐
2303_Alpha2 天前
SpringBoot
笔记·学习
萘柰奈2 天前
Unity学习----【进阶】TextMeshPro学习(三)--进阶知识点(TMP基础设置,材质球相关,两个辅助工具类)
学习·unity
沐矢羽2 天前
Tomcat PUT方法任意写文件漏洞学习
学习·tomcat
好奇龙猫2 天前
日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(10):91-100语法+考え方13
学习
向阳花开_miemie2 天前
Android音频学习(十八)——混音流程
学习·音视频
工大一只猿2 天前
51单片机学习
嵌入式硬件·学习·51单片机
c0d1ng2 天前
量子计算学习(第十四周周报)
学习·量子计算
Hello_Embed2 天前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
咸甜适中2 天前
rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
笔记·学习·rust
Magnetic_h2 天前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa