java 链路层封包协议, 实现数据包完整性校验 可用于无线模块(红外/zigbee/433Mhz)实现TCP/IP通信
没有重传确认功能, 发送不保证对方一定收到包,亦不保证顺序。需要结合 tun/tap 才能实现TCP通信
如果收到包,则可保证包数据完整性(使用md5算法校验和)
配合 tun/tap 使用,可实现多终端全双工通信, 建议MTU设置为256以下,恶劣环境下需设置更低的值
虽然433Mhz, 红外功耗低,但传输速率也较低,因此不适合用来浏览互联网,建议用在物联网少量数据传输场景
user-program -> tun/tap -> rawip4j -> wireless(zigbee, 433Mhz, Infrared-ray) -> (THE AIR) -> wireless -> rawip4j -> tun/tap -> user-program
public static void main(String[] args) throws IOException, InterruptedException { // 定义队列用于存储接收到的包 received packet queue final LinkedBlockingQueuequeue = new LinkedBlockingQueue<>(); // 通过 rxtx 获取设备的InputStream 和 OutputStream //TODO get the InputStream & OutputStream from SerialPort devices // you can use librxtx-java (aptitude install librxtx-java) // or http://mvnrepository.com/artifact/org.rxtx/rxtx (untested) InputStream ins = null; OutputStream outs = null; /* *********************************************************************************************************************** */ // 开始读取包,读到的包将放入队列中,这个方法是永不返回的,因此要新开线程执行 // start a thread to receive packet into the queue new Thread(new Runnable() { @Override public void run() { try { RxdUtil.readloop(ins, queue); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } }).start(); /* *********************************************************************************************************************** */ // 新开线程处理接收到的包 // start a received packet handler thread new Thread(new Runnable() { @Override public void run() { while(true){ try { final byte[] data = queue.take(); System.out.println("received packet: " + new String(data)); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); /* *********************************************************************************************************************** */ // 发送包,不保证对方一定接收到包,但如果接收到,则能保证包的数据完整性 // chksumlength: 校验和字节,可以设置为2-16,越大越安全, 建议8 // send a data packet // chksumlength: use md5 to checksum a packet, the value can be 2-16, recommend 8 new PacketFrame((byte)8, "hello, rawip4j".getBytes()).write(outs); /* *********************************************************************************************************************** */ TimeUnit.SECONDS.sleep(Long.MAX_VALUE); }
433MHz模块9600波特率, 距离20米,隔2墙1窗1门,ping丢包率5%, wget 600bytes/s
另外,要补充的是socket三种类型:Datagram socket(使用 UDP协议), stream socket(使用 TCP协议), Raw socket或Raw IP socket(路由器或其他网络设备使用) 原文如下: 要写网络程序就必须用Socket,这是程序员都知道的。而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是liste
pcap4j依赖 libpcap 1.1.1 --linux下安装 WinPcap 4.1.2 --windows下安装wincap jna 5.1.0 --依赖包 slf4j-api 1.7.25 --依赖包 logback-core 1.0.0 --依赖包 logback-classic 1.0.0 --依赖包 以下代码为读pcap抓包文件,过滤TC
目前java实现解析pcap格式的三方库很多,如jnetpcap、jpcap、pcap4j,但是jnetpcap和jpcap已经很久没有更新了,而且jnetpcap的跨平台表现不是很好,在Linux系统上在很多问题,我这边是获取不到网卡信息(root方式启动)。 综合考虑下来决定采用pcap4j,pcap4j 目前支持DNS、SNMP,以及传输层TCP、UDP,网络层的ARP、ICMP等协议,但是
一、配置效果 [root@gs ~]# ip6tables -nvL Chain INPUT (policy DROP 893 packets, 64296 bytes) pkts bytes target prot opt in out source destination 2630 229K ACCEPT all * * ::/0 ::/0 state RELATED,ESTABLISHED
(转自:https://blog.csdn.net/lockey23/article/details/77414093) 名称 iptables/ip6tables — 实现IPv4/IPv6包过滤以及网络地址转换(NAT)的管理员工具 摘要 iptables [-t table] {-A|-C|-D} chain rule-specification ip6tables
1) 什么是raw表?做什么用的? iptables有5个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING,4个表:filter,nat,mangle,raw. 4个表的优先级由高到低的顺序为:raw-->mangle-->nat-->filter 举例来说:如果PRROUTING链上,即有mangle表,也有nat表,那么先由mangle处理,然后由n
一、工具准备 下载安装scapy库(https://blog.csdn.net/qq_23977687/article/details/88046257) 安装完后: ls() 命令可以查看所有支持的协议 ls(IP) 命令列出ip协议头部字段格式,只要想查看哪个协议的参数,括号里就填哪个协议 IP().show() 列出ip包的信息 lsc() 命令列出scapy的所
基础 - ND协议的三个位 ND协议包中有三个位(Auto, Managed, Other): M bit (Managed Address Configuration), M bit如果是1,表示Clients要另外再去跟DHCPv6要IPv6 Prefix O bit (Other Configuration), O bit如果是1,表示Clients要去跟DHCPv6要DNS(RDNSS)等
使用python raw socket进行TCP SYN扫描 1. TCP SYN扫描 端口扫描常用于用于探测服务器或主机开放端口情况,被计算机管理员用于确认安全策略,同时被攻击者用于识别目标主机上的可运作的网络服务。端口扫描是向一定范围的服务器端口发送对应请求,以此确认可使用的端口。虽然其本身并不是恶意的网络活动,但也是网络攻击者探测目标主机服务,以利用该服务的已知漏洞的重要手段。
iptables iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转] -t 表名 可以省略,指定规则存放在哪个表中,默认为filter表 用于存放相同功能的规则 filter表: 负责过滤功能能, nat表: 网络地址转换功能 mangle表: 拆解报文 做出修改并重新封装的功能 raw表: 关闭nat表上启用的连接追踪机制 命令选项 -A 在指定链的末尾
通过iptabls的方式,控制指定ip可以访问 1. 查看所有iptables iptables -L -n 2.设置指定ip可以访问某个端口 iptables -I INPUT -p tcp --dport 80 -j DROP iptables -I INPUT -s 127.0.0.1 -p tcp --dport 80 -j ACCEPT iptables -I INPU
基本问题 1. 封装成帧 2. 透明传输 3. 差错检测 信道分类 1. 广播信道 2. 点对点信道 信道复用技术 1. 频分复用 2. 时分复用 3. 统计时分复用 4. 波分复用 5. 码分复用 CSMA/CD 协议 PPP 协议 MAC 地址 局域网 以太网 交换机 虚拟局域网 基本问题 1. 封装成帧 将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。 2. 透明传输 透明表示一
本文向大家介绍什么是数据链路层?,包括了什么是数据链路层?的使用技巧和注意事项,需要的朋友参考一下 数据链路层是OSI参考模型中的第二层。它表示在计算机传输设置中创建共享的传输介质并频繁传输数据帧。 它为发送方设备的物理层获得自然的项目流。数据的主要流是使用不同的技术生成的,例如电缆,DSL,无线,光纤等。 提供给网络层的服务 数据链路层支持到网络层的明确定义的接口。它可以通过保留多种服务来管理
1. TCP/IP协议栈与数据包封装 TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下图所示(该图出自[TCPIP])。 图 36.1. TCP/IP协议栈 两台计算机通过TCP/IP协议通讯的过程如下所示(该图出自[TCPIP])。 图 36.2. TCP/IP通讯过程 传输层及其以下的机制由内核提供
本文向大家介绍python使用原始套接字发送二层包(链路层帧)的方法,包括了python使用原始套接字发送二层包(链路层帧)的方法的使用技巧和注意事项,需要的朋友参考一下 发送端代码: 1.创建套接字使用地址家族PF_PACKET,类型为SOCK_RAW,自定义类型为0x1234,这个和C语言一模一样。自定义类型我们也可以使用0X0800,这个是ETH_P_IP,相当于我们模拟ip包来发送,那么i
主要内容:蓝牙,Z-Wave,ZigBee智能能源,LoRaWAN物联网数据链路通信协议为网络层提供服务。不同组织为数据链路协议指定了各种协议和标准技术。 蓝牙 蓝牙是射频上的短程无线通信网络。蓝牙主要集成到智能手机和移动设备中。蓝牙通信网络工作在2.4 ISM频段内,数据速率高达3Mbps。 蓝牙技术分为三类: 蓝牙经典 低功耗蓝牙 蓝牙SmartReady 蓝牙5.0版本的功能引入到蓝牙5,它完全是为物联网开发的。 蓝牙网络的属性 标准:蓝牙4.2 频率:2
本文向大家介绍逻辑链路控制适配协议(L2CAP),包括了逻辑链路控制适配协议(L2CAP)的使用技巧和注意事项,需要的朋友参考一下 下图显示了L2CAP在蓝牙协议体系结构中的位置- L2CAP的功能 蓝牙协议栈的高层框架和较低层框架之间的适应。 支持面向连接的服务和无连接的服务。 支持基带层的两个链接- 面向同步连接(SCO)的链路,使用保留的带宽进行实时语音通信。 异步减少连接(ACL)链接,以
本文向大家介绍ios7 层协议,tcp四层协议及如何对应的?相关面试题,主要包含被问及ios7 层协议,tcp四层协议及如何对应的?时的应答技巧和注意事项,需要的朋友参考一下
A client and a server exchange messages consisting of message types and message data. This requires design of a suitable message exchange protocol. This chapter looks at some of the issues involved in