学习嵌入式的第三十一天-数据结构-(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所有网络连接信息
相关推荐
今天只学一颗糖1 小时前
Linux学习笔记--查询_唤醒方式读取输入数据
笔记·学习
GIS学姐嘉欣1 小时前
【智慧城市】2025年中国地质大学(武汉)暑期实训优秀作品(5):智慧矿产
学习·gis·智慧城市·webgis
折翼的恶魔1 小时前
前端学习之样式设计
前端·css·学习
光影少年8 小时前
angular生态及学习路线
前端·学习·angular.js
逆小舟12 小时前
【C/C++】指针
c语言·c++·笔记·学习
武文斌7712 小时前
项目学习总结:LVGL图形参数动态变化、开发板的GDB调试、sqlite3移植、MQTT协议、心跳包
linux·开发语言·网络·arm开发·数据库·嵌入式硬件·学习
递归不收敛13 小时前
吴恩达机器学习课程(PyTorch适配)学习笔记:1.3 特征工程与模型优化
pytorch·学习·机器学习
kunge1v513 小时前
学习爬虫第四天:多任务爬虫
爬虫·python·学习·beautifulsoup
哲Zheᗜe༘13 小时前
了解学习MySQL数据库基础
数据库·学习·mysql
peter676815 小时前
pandas学习小结
学习·pandas