学习嵌入式的第三十三天——网络编程
数据的封包与拆包
MTU 最大传输大小:1500字节
拆包时每一层都会进行校验
以太V2的MAC帧格式
MAC为网卡地址,全球唯一
IP头
重点内容:
默认20个字节,可以增加
IP标志(flag):MF:MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个
DF:标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有当DF=0时才允许分片。
TTL(生命周期):国内常用初值为64,每请求一个节点寻找,TTL-1,当TTL=0时,不再寻找
TCP头
重点内容:
默认20个字节,可以增加
TCP标志(flag):
U(紧急数据):表示数据包中包含 “紧急数据”,此时 “紧急指针” 字段有效,接收方应优先处理紧急数据(绕过缓冲区直接提交给应用层)。常见于中断指令(如 Ctrl+C 终止远程进程)。
S(SYN) :用于建立 TCP 连接,在 “三次握手” 中发起或响应连接请求,同时携带初始序列号(ISN)。
F(FIN) :表示发送方已完成数据传输,请求正常关闭连接(“四次挥手” 中使用),但仍可接收对方的数据。
R(RESET) :强制终止异常的 TCP 连接(如连接崩溃、协议错误),接收方收到 RST 后会立即关闭连接并释放资源,无需正常挥手。
P(PUSH):表示接收方应立即将数据 “推” 给应用层,而不等待缓冲区填满。用于需要实时处理的数据(如交互式命令行输入)。
A(ack):表示 “确认号” 字段有效,用于对收到的数据包进行确认(告知发送方 “已收到某序号前的数据”)。除了连接建立的第一个包(SYN),几乎所有 TCP 包都设置 ACK=1。
UDP头
8字节,网络开销小
仅包含:目标端口,源端口,长度,校验码
常用网络测试工具
wireshark
可视化界面
抓包工具
过滤规则:
1、根据ip地址过滤:ip.src == x.x.x.x
ip.dst == x.x.x.x
2、根据端口过滤:tcp.srcport == xx;
tcp.dstport == xx;
udp.srcport == xx;
udp.dstport == xx;
3、根据协议类型过滤:
tcp udp icmp .....
4、任意组合以上条件抓包:
如果与的关系: and
ip.src == 192.168.1.100 and tcp.dstport == 9999
如果或关系 : or
ip.src == 192.168.1.100 or ip.dst == 192.168.1.102
ssh2
在编程领域,ssh2
常指实现 SSH-2 协议的客户端 / 服务器库,最常用的是 Node.js 的 ssh2
模块。它允许通过代码创建 SSH 连接,执行远程命令、传输文件等,无需依赖系统命令行工具。
arg
地址解析命令
arp -an ===>列出当前主机的地址ARP表
arp -d ip地址
ping
测试网路的联通状况
ping ip地址
ping 域名
netstat
测试查看网络端口使用情况
netstat -anp
netstat -n ===>列出当前所有网络端口使用情况
netstat -n -t ===>列出所有TCP通信的端口信息
netstat -n -u ===>列出所有UDP通信的端口信息
netstat -n -i ===>列出默认接口上的通信信息
netstat -lnp |grep 8888 ===>查看指定端口上的通信详情
telnet
远程登录工具,默认都是系统安装。
使用格式: telnet ip地址 端口
eg: telnet 192.168.1.1 8888
注意:如果没有写端口,则默认登录23 号端口。
tcpdump
基于命令行
抓包工具
1、tcpdump -n ===>在默认的网卡上开始抓包。
2、根据ip过滤: tcpdump -n src x.x.x.x
tcpdump -n dst x.x.x.x
抓192.168.0.130上面发出和接受到的数据包
sudo tcpdump -n -x src or dst 192.168.0.130
3、查看包中的内容:
tcpdump -n -x src x.x.x.x
tcpdump -n -x dst x.x.x.x
tcpdump -n -x src x.x.x.x >xxx.log
4、根据端口过滤:
tcpdump -n src port xx
tcpdump -n dst port xx
tcpdump -n -p tcp port xx
tcpdump -n udp port xx
tcpdump -n port xx
5、根据协议过滤:
tcpdump -n -p icmp/tcp/udp
6、根据指定接口过滤:
tcpdump -n -i eth0
tcpdump -n -i lo
7、根据以上各种条件组合抓包:
与关系: and
或关系: or
HTTP协议( 超文本传输协议)(b/s模型)
html ,脚本语言,编写网页。
url,统一资源定位符 唯一表示互联网上的某个资源(网页,电影,图片)
http报文结构:两类:请求报文,响应报文
http交互步骤
1. 三次握手
2. 发送请求报文
3. 等待服务器回复 响应报文+数据
4.断开链接