学习嵌入式的第三十一天-数据结构-(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连接流程
- 建立TCP连接
- 发送HTTP请求报文
- 接收HTTP响应报文
- 释放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时停止传递
- IP Flag:
- TCP头:20字节
- TCP Flag:
- U:紧急数据(带外数据)
- A:应答
- P:当前帧包含应用层数据
- R:连接复位
- S:建立连接
- F:断开连接
- TCP Flag:
- UDP头:8字节
网络工具用途
- ssh:远程登录工具,需服务器IP、用户名和密码
- ping:检测网络连通性
- ifconfig:查看网卡IP地址
- netstat -anp:查看Linux所有网络连接信息