子网掩码:
示例 ip(192.168.129/24, 前面24位全1,即子网掩码255.255.255.0 )
常见的特殊IP地址块:
10.0.0.0/8 // A类内部私有地址
172.16.0.0/12 // B类内部私有地址
192.168.0.0/16 // C类内部私有地址
127.0.0.0/8 // 本地回环地址,用于回路测试,不能路由到主机外部
169.254.0.0/16 // 自动配置为成功后分配的ip地址
0.0.0.0/8 // 本地网络,禁止使用
255.255.255.255 // 受限广播地址
net.255 // 网络广播地址
ICMP协议:
使用IP协议进行传输报文,是一种面向无连接的协议,用于报告传输出错及控制,每一个网络层模块必须实现该协议 。
例如:
ping 命令,实际就是发送ICMP查询报文,用于查询网络连通性 。
通常步骤:先ping本机ip,其次ping网关地址,最后ping目的主机地址
traceroute 命令也是基于ICMP协议的,探测网络报文经过的路径 。
传输层协议:
网络传输协议主要分为传输控制协议TCP和用于数据报协议UDP 。
路由器一般工作在IP层,不处理传输层协议,但智能路由器一般带有防火墙功能,需要处理端口号 。
传输数据之前需要进行3次握手连接,并在传输的中间过程进行确认,保证了数据到达目标地址,如果没有到达将立即重传 。
【路由器基础软件模块】
libubox
提供多种基础通用功能接口,包含链表、平衡二叉树、二进制块处理、key-value链表、MD5等,提供多种sock接口封装,提供一套基于事件驱动的机制及任务队列管理功能 。
常用uloop接口函数:
uloop_fd_add // 将一个新文件描述符增加到事件处理循环中
uloop_fd_delete // 从事件处理循环中删除指定的文件描述符
uloop_init // 初始化uloop内部将调用epoll_create函数来创建epoll对象
uloop_run // 进入事件处理循环中
uloop_done // 反初始化uloop,即释放内部epoll对象,删除process对象
uloop_end // 设置uloop内部结束循环标志
uloop_timeout_set // 设置定时器超时时间,并增加到链表中
jshn
是封装JSON对象的转换库,用于脚本语言生成JSON对象和将JSON对象数据取出 。
JSON是一个轻量级的数据交换格式,易于阅读和编写,对程序来说也容易解析和产生 。
jshn定义的命令接口:
json_init // 初始化JSON对象
json_add_string // 增加字符串数据类型,例如json_add_string name jiang
json_dump // 以JSON格式输出所有增加的JSON内容
json_add_int // 增加整型数据,例如 json_add_int age 26
json_add_boolean // 增加布尔型数据
json_set_namespace // 定义命名空间,即定义设置变量的前缀
json_load // 将所有内容读入到JSON对象中,并将这些对象设置到环境变量
json_get_var // 从环境变量中读取JSON对象的值
json_get_type // 从环境变量读取指定JSON对象的类型
json_get_keys // 从环境变量中读取JSON对象的所有名称
json_get_values // 从环境变量中读取JSON对象的所有值
json_select // 选择JSON对象
json_add_object // 增加对象,该命令不需要参数
json_close_object // 完成对象的增加
json_add_array // 增加顺序数组,数组的内容后续通过 json_add_string 增加
json_close_array // 完成顺序数组的增加
json_cleanup // 清楚jshn所有设置的环境变量
ubus
openWrt提供的一种系统总线,主要提供系统级的进程间通信(IPC)功能 。
主要由3部分组成:精灵进程、接口库、实用工具 。
/etc/init.d/ubus中提供ubusd进程的启动,在系统进程启动完成后立即启动,是在网络进程netifd之前启动的,该进程监听一个文件套接字接口和其他应用程序通信 。
接口库名称为libubus.so
libubus.so库中常用接口函数含义:
ubus_add_object // 将对象加入到ubus空间中,即客户端可以访问对象
ubus_register_subscriber // 增加订阅通知
ubus_connect // 连接指定的路径,创建并返回路径所代表的ubus上下文
ubus_send_reply // 执行完成方法调用后发送相应
ubus_notify // 给对象的所有订阅者发送通知
ubus_lookup // 查找对象,参数path为对象的路径,如果为空则查找所有对象
ubus_lookup_id // 查找对象的id
ubus_invoke // 调用对象
ubus_register_event_handler // 注册事件处理句柄
ubus_send_event // 发送事件消息
ubus命令行工具:
ubus提供5种命令行命令 。
ubus list ... -v // 输出所有注册到ubus RPC服务器的对象
ubus call ... // 在指定对象里调用指定的方法并传递消息参数
ubus listen ... // 设置一个监听套接字来接收服务器发出的消息
推荐阅读
- 无基础唱歌技巧和发声方式教学 学习唱歌的方法
- |逆向思维:不要再努力的学习和工作,这是一个天大的错误
- 教你快速学习摩托车驾照怎么考 摩托车学习
- 电路电气图形符号大全 电路图常用符号
- 穿衣搭配|50+想要穿出高级感,快来和这位姐妹学习,普通单品都能超神
- Linux下常用的Shell脚本
- 热熔胶我们常用的几种实用的使用方法 热熔胶怎么用
- 常用消炎漱口水有危害吗
- 翡翠手镯|翡翠手镯知识你了解多少?瑕疵是正常的,来学习一下常识
- 勒脚的作用是什么
