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)

12-网络芯片CH395Q学习开发-模块使用Socket0作为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​

 

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_数据_02

 

 

 

测试本节代码(STM32F103xxxx)

1.用户可以使用杜邦线根据自己的情况设置和连接引脚

 12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_数据_03

 

 

 

2,注意!

要想模块使用SPI通信,模块的TX引脚需要在模块重启之前设置为低电平.

上面的引脚分配把模块的TX引脚接到了单片机的PA3上,也就是串口2的RX上,如果用户使用了串口2,请注意!

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_数据_04

 

3.把模块用网线和路由器或者交换机(和上位机在同一个局域网下)

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_传输协议_05

 

 

注意,连接路由器或者交换机的时候是连接其LAN口.

 

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_传输协议_06

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_数据_07

 

 

 

4.查看自己电脑的IP地址

我的为 192.168.0.103

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_单片机_08

 

5.修改为自己电脑的IP地址

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_单片机_09

 

 

 

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地址等信息

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_单片机_10

 

 

 

8.打开软件

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_路由协议_11

 

 

 

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_传输协议_12

 

 

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_路由协议_13

 

 

 

9.按照下图操作

注:过滤填写的地址是咱网络模块的地址,根据自己的网络模块地址填写 (输入法在英文状态下才可以输入)

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_单片机_14

 

 

 

10.点击某条信息就可以查看

注:单片机每隔一段时间发送一条IP 数据给电脑.

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_封装_15

 

 

 

11.提醒

我使用单片机发送的并不是完整的IP 数据,以下红色标识的都是正确的数据

绿线的不是哈,并不是按照IP协议来的.

TCP传输控制协议那里我就是写了个 "111111" 然后发送了出来......

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_封装_16

 

 

 

 

12,使用调试软件发送IP数据给模块

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_封装_17

 

 

 

 

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_路由协议_18

 

 

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_传输协议_19

 

 

 

13.目的地址填写网络模块的MAC,原地址填写本电脑MAC

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_传输协议_20

 

 

 

 

14.协议填写6(TCP),原地址填写本机IP,目的地址填写网络模块IP

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_数据_21

 

 

 

15,把网络调试助手调整为16进制显示

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_传输协议_22

 

 

 

 

16,点击发送

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_传输协议_23

 

 

 

17.如果有多个网卡,需要选择网卡,最后点击开始

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_传输协议_24

 

 

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_单片机_25

 

  

18,当然这也不是完整的IP数据(TCP数据)

有经验的用户可以按照标准的数据设置完以后再发送.

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_路由协议_26

 

 

 

 

程序说明

1.初始化IP RAW

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_数据_27

 

 

 

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_数据_28

 

 

2.因为是局域网通信,所以需要DHCP

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_单片机_29

 

 

 

3.每隔一段时间发送个数据出去

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_单片机_30

 

 

 

4.在中断检测事件里面处理Socket相关事件(本例中使用的Socket 0)

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_单片机_31

 

 

 

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_传输协议_32

 

 

 12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_传输协议_33

 

 

注意事项

12-网络芯片CH395Q学习开发-模块使用Socket0作为IP RAW模式和调试助手测试通信_封装_34