frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
什么是IP RAW
好多人常说:TCP/IP通信.我问下什么是TCP/IP?
咱们一般都是使用TCP或UDP的API函数做网络通信.这一层在网络通信中是最顶层.
这一层的下一层就是IP层,咱操作TCP或UDP的API函数的时候其实就是按照下面的格式进行打包.
IP层的数据是这样子的(IP RAW)
假设使用TCP通信,然后客户端的IP为:192.168.0.102 端口号为1000 MAC地址为:84:C2:E4:EC:AC:43
假设服务器的IP为:192.168.0.103 端口号为6000 MAC地址为:F4:B5:20:09:8A:F9
那么咱们调用TCP发送数据API,实际打包的数据为: (IP层的数据)
目的MAC 源MAC 类型 整个IP首部 (192.168.0.102) (192.168.0.103)
F4 B5 20 09 8A F9 84 C2 E4 EC AC 43 08 00 45 00 00 1A 00 04 00 00 80 06 B8 BC C0 A8 00 66 C0 A8 00 67
(1000) (6000) IPRAW数据部分 (后面还有各种标识然后还有真实数据)
03E8 1770 XXXXXXXXXXXXXXXXXXXXXXXXXXXX
咱们在使用最上层的TCP或者UDP的API函数的时候,这些数据已经被解析到了最上层.
所以不需要关心IP层的数据.
当然再下一层就是物理层,其实就是用信号线做数据传输.
网络的信号线和RS422类似,其中两根用差分信号做信号接收,另外两根用差分信号做信号发送.
说明
这节演示一下模块使用Socket0作为IP RAW模式和调试助手测试通信
提醒:无论是SPI,USART,并口,程序操作步骤都是一样的!
只是不同的接口发指令发给模块,然后用不同的接收接收数据而已.
安装软件
一般的调试助手只有TCP和UDP最上层功能,如果要测试IP层通信,咱需要下载安装个软件
科来网络分析系统
http://www.colasoft.com.cn/download.php
测试本节代码(STM32F103xxxx)
1.用户可以使用杜邦线根据自己的情况设置和连接引脚
2,注意!
要想模块使用SPI通信,模块的TX引脚需要在模块重启之前设置为低电平.
上面的引脚分配把模块的TX引脚接到了单片机的PA3上,也就是串口2的RX上,如果用户使用了串口2,请注意!
3.把模块用网线和路由器或者交换机(和上位机在同一个局域网下)
注意,连接路由器或者交换机的时候是连接其LAN口.
4.查看自己电脑的IP地址
我的为 192.168.0.103
5.修改为自己电脑的IP地址
6.关于IP包协议类型(我写的是0x06,IP数据就是TCP数据)
最上层打包的时候如果是TCP那么到了IP层,协议类型就是0x06, 如果是UDP就是0x11 (17)
0 HOPOPT IPv6 逐跳选项
1 ICMP Internet 控制消息
2 IGMP Internet 组管理
3 GGP 网关对网关
4 IP IP 中的 IP(封装)
5 ST 流
6 TCP 传输控制
7 CBT CBT
8 EGP 外部网关协议
9 IGP 任何专用内部网关
(Cisco 将其用于 IGRP)
10 BBN-RCC-MON BBN RCC 监视
11 NVP-II 网络语音协议
12 PUP PUP
13 ARGUS ARGUS
14 EMCON EMCON
15 XNET 跨网调试器
16 CHAOS Chaos
17 UDP 用户数据报
18 MUX 多路复用
19 DCN-MEAS DCN 测量子系统
20 HMP 主机监视
21 PRM 数据包无线测量
22 XNS-IDP XEROX NS IDP
23 TRUNK-1 第 1 主干
24 TRUNK-2 第 2 主干
25 LEAF-1 第 1 叶
26 LEAF-2 第 2 叶
27 RDP 可靠数据协议
28 IRTP Internet 可靠事务
29 ISO-TP4 ISO 传输协议第 4 类
30 NETBLT 批量数据传输协议
31 MFE-NSP MFE 网络服务协议
32 MERIT-INP MERIT 节点间协议
33 SEP 顺序交换协议
34 3PC 第三方连接协议
35 IDPR 域间策略路由协议
36 XTP XTP
37 DDP 数据报传送协议
38 IDPR-CMTP IDPR 控制消息传输协议
39 TP++ TP++ 传输协议
40 IL IL 传输协议
41 IPv6 Ipv6
42 SDRP 源要求路由协议
43 IPv6-Route IPv6 的路由标头
44 IPv6-Frag IPv6 的片断标头
45 IDRP 域间路由协议
46 RSVP 保留协议
47 GRE 通用路由封装
48 MHRP 移动主机路由协议
49 BNA BNA
50 ESP IPv6 的封装安全负载
51 AH IPv6 的身份验证标头
52 I-NLSP 集成网络层安全性 TUBA
53 SWIPE 采用加密的 IP
54 NARP NBMA 地址解析协议
55 MOBILE IP 移动性
56 TLSP 传输层安全协议
使用 Kryptonet 密钥管理
57 SKIP SKIP
58 IPv6-ICMP 用于 IPv6 的 ICMP
59 IPv6-NoNxt 用于 IPv6 的无下一个标头
60 IPv6-Opts IPv6 的目标选项
61 任意主机内部协议
62 CFTP CFTP
63 任意本地网络
64 SAT-EXPAK SATNET 与后台 EXPAK
65 KRYPTOLAN Kryptolan
66 RVD MIT 远程虚拟磁盘协议
67 IPPC Internet Pluribus 数据包核心
68 任意分布式文件系统
69 SAT-MON SATNET 监视
70 VISA VISA 协议
71 IPCV Internet 数据包核心工具
72 CPNX 计算机协议网络管理
73 CPHB 计算机协议检测信号
74 WSN 王安电脑网络
75 PVP 数据包视频协议
76 BR-SAT-MON 后台 SATNET 监视
77 SUN-ND SUN ND PROTOCOL-Temporary
78 WB-MON WIDEBAND 监视
79 WB-EXPAK WIDEBAND EXPAK
80 ISO-IP ISO Internet 协议
81 VMTP VMTP
82 SECURE-VMTP SECURE-VMTP
83 VINES VINES
84 TTP TTP
85 NSFNET-IGP NSFNET-IGP
86 DGP 异类网关协议
87 TCF TCF
88 EIGRP EIGRP
89 OSPFIGP OSPFIGP
90 Sprite-RPC Sprite RPC 协议
91 LARP 轨迹地址解析协议
92 MTP 多播传输协议
93 AX.25 AX.25 帧
94 IPIP IP 中的 IP 封装协议
95 MICP 移动互联控制协议
96 SCC-SP 信号通讯安全协议
97 ETHERIP IP 中的以太网封装
98 ENCAP 封装标头
99 任意专用加密方案
100 GMTP GMTP
101 IFMP Ipsilon 流量管理协议
102 PNNI IP 上的 PNNI
103 PIM 独立于协议的多播
104 ARIS ARIS
105 SCPS SCPS
106 QNX QNX
107 A/N 活动网络
108 IPComp IP 负载压缩协议
109 SNP Sitara 网络协议
110 Compaq-Peer Compaq 对等协议
111 IPX-in-IP IP 中的 IPX
112 VRRP 虚拟路由器冗余协议
113 PGM PGM 可靠传输协议
114 任意 0 跳协议
115 L2TP 第二层隧道协议
116 DDX D-II 数据交换 (DDX)
117 IATP 交互式代理传输协议
118 STP 计划传输协议
119 SRP SpectraLink 无线协议
120 UTI UTI
121 SMP 简单邮件协议
122 SM SM
123 PTP 性能透明协议
124 ISIS over IPv4
125 FIRE
126 CRTP Combat 无线传输协议
127 CRUDP Combat 无线用户数据报
128 SSCOPMCE
129 IPLT
130 SPS 安全数据包防护
131 PIPE IP 中的专用 IP 封装
132 SCTP 流控制传输协议
133 FC 光纤通道
134-254 未分配
255 保留
7.下载程序到单片机
正常情况会打印模块的MAC地址, IP地址等信息
8.打开软件
9.按照下图操作
注:过滤填写的地址是咱网络模块的地址,根据自己的网络模块地址填写 (输入法在英文状态下才可以输入)
10.点击某条信息就可以查看
注:单片机每隔一段时间发送一条IP 数据给电脑.
11.提醒
我使用单片机发送的并不是完整的IP 数据,以下红色标识的都是正确的数据
绿线的不是哈,并不是按照IP协议来的.
TCP传输控制协议那里我就是写了个 "111111" 然后发送了出来......
12,使用调试软件发送IP数据给模块
13.目的地址填写网络模块的MAC,原地址填写本电脑MAC
14.协议填写6(TCP),原地址填写本机IP,目的地址填写网络模块IP
15,把网络调试助手调整为16进制显示
16,点击发送
17.如果有多个网卡,需要选择网卡,最后点击开始
18,当然这也不是完整的IP数据(TCP数据)
有经验的用户可以按照标准的数据设置完以后再发送.
程序说明
1.初始化IP RAW
2.因为是局域网通信,所以需要DHCP
3.每隔一段时间发送个数据出去
4.在中断检测事件里面处理Socket相关事件(本例中使用的Socket 0)
注意事项