linux所有的命令:都是由函数代码所得;即将输入的参数,代入到函数中,得到所需的结果;
协议栈的命令:均是对从传输接口流入的数据包做相应的处理的函数;数据包按照TCP\IP协议的格式存在于内存中,协议栈函数或者是命令可以对它做任何处理,命令如:route,iptables,tc等;
一、命令脚本
1、 makefile:
objects = main.o kbd.o command.o display.o /
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
main.o : main.c defs.h
cc -c main.c
kbd.o : kbd.c defs.h command.h
cc -c kbd.c
command.o : command.c defs.h command.h
cc -c command.c
display.o : display.c defs.h buffer.h
cc -c display.c
insert.o : insert.c defs.h buffer.h
cc -c insert.c
search.o : search.c defs.h buffer.h
cc -c search.c
files.o : files.c defs.h buffer.h command.h
cc -c files.c
utils.o : utils.c defs.h
cc -c utils.c
或:
main.o : defs.h
kbd.o : defs.h command.h
command.o : defs.h command.h
display.o : defs.h buffer.h
insert.o : defs.h buffer.h
search.o : defs.h buffer.h
files.o : defs.h buffer.h command.h
utils.o : defs.h
clean :
rm edit $(objects);
2、 iptables:
a、 防火墙,路由,转发等基本规则;
b、 特殊规则的需求。
3、 shell脚本命令:
a、 makefile为大型的shell脚本;
b、 一般的脚本,即简单的调用各种可执行命令;
任何的通信都是在传输字节字符;最后转变为0、1;到对端再重组;故而没有任何难点,所有的过程都是在传输0和1!
二、设备软件
1、重定向:协议栈的一种,对数据包做处理,根据的自己的需求让用户访问自己的内容或根据自己的需求访问自己希望访问的网站!
2、内核驱动:驱动硬件的程序,内核态;对模拟器的加载,以及都是转换为文件对其进行使用,进行读写操作!包括字节设备和块设备;
3、协议栈:数据包按照协议存放在内存中,协议栈程序对数据包进行处理实现网络的交互!
4、应用:1、系统调用以及数据的存储和取用;2、调用应用层协议。
三、通信
1、进程:
2、线程:
3、多进程线程:
4、服务器对多客户--负载均衡:
基础:程序的算法和数据结构:
项目经历:
1、Vlan:将一个接口虚拟成多个接口 使用命令vconfig;brcrl;即可实现;
2、远程升级:版本号+固件;判断版本号,再下载;判断crc再升级;
3、从开发,到测试反馈,再到思考分析,解决问题的过程:
A、页面问题:页面出现不按要求的排版或错乱-----使用Dreamweaver和谷歌浏览器,定位页面的问题所在;查看变量或函数的使用;再定位到cgi中找出问题点并加于解决;
B、协议或应用问题(如pppoe或升级):抓包或查看日志,分析报文;定位问题,解决;
C、集中升级测试:30台设备同时升级,出现升级一段时间后,部分升级成功其他设备不升级问题--------1、查看ps是否在有升级的进程;2、没有tftp升级进程,进到tftp源码查看问题;3、添加了锁,由于是子进程,没有做进程同步问题,导致死锁; 4、改为用wget下载传输文件。
D、现网西安傲天问题解决:对比测试(距离的对比,位置如现网和酒店设备的对比,自带正常设备和问题设备的对比)-----测试目的,测试步骤,预期结果,测试结果,小结,总结!解决方法。
E、无线漫游问题:测试当终端从两台SSID一样的设备经过时,出现断开后重连的问题;查找wl命令,开启无线漫游功能,wl wl_roam 1;
无线接口丢失问题:使用一段时间后,无线接口wl0.x找不到,通过修改获取无线mac的驱动,将连接设备的mac通过copytouser到/proc/中;另一种方法是创建设备文件/dev/来传输内核到用户空间的数据;
F、无线守护进程:添加多线程,对设备出现的空闲内存不足,进程丢失,设备panic等问题做监控,防止设备出现死机问题。
4、url重定向:
A、sk_buff数据结构;
B、对包协议做判断,检查是否为http协议;
C、根据连接的ssid接口,指定域名的重定向;
5、AP-多CPE分配IP地址:
A、创建虚拟接口,br0:0;
B、dhcpd和dhcpc添加43字段的特殊字符;
C、cpe的br0:0使用dhcpc加入特殊字段获取dhcpd的169.254网段的IP地址;cpe的br0使用dhcpc获取dhcpd的192.168网段的IP地址;
6、AP-多CPE拓扑,snmp获取所有设备的节点信息并存在xml中显示在页面上:
A、snmptrap上报;
B、调用snmpget获取所有节点的参数值;
C、存入到结构体中;
D、写入到xml文件中并保存;
7、AP-专线CPE拓扑,针对特殊需求特殊的用户和cpe对带宽做特殊限制处理;
A、存入页面写入的mac地址到nvram中;
B、调用命令将mac地址通过netlink传到无线驱动中;
C、再netlink回复到apmanage,对相应mac地址做流量的分配。
8、设备管理程序及云后台管理程序:
A、自定义与后台通信的基本协议格式;
B、添加设置微信公众号,当前时间,无线参数信息,取消微信公众号,设备重启,远程telnet到指定Mac设备的功能;添加探测周边设备的功能;升级应用包及升级固件功能;
9、3g\4g、pptp功能:驱动、pppoe的支持,路由表的修改。
一、车载wifi
1、内置TF卡,提供本地娱乐服务;
2、3G\4G访问外网,可远程云后台对设备进行管理和配置,查看设备信息和终端连接信息;
3、GPS定位服务,可通过后台查看汽车运行轨迹;
二、商场商业wifi
1、以太网访问外网,可远程云后台对设备进行管理和配置,查看设备信息和终端连接信息;
2、协同安卓电视提供广告服务;
3、提供商家微信公众号的吸粉服务;
工作内容:
1、完成车载wifi设备软件的基本功能开发;(ssid和mac设置等)
2、完成wifi的数据校准;(art数据校准,相关配置的问题)
3、实现wifi的双分区功能;(bootimage分区)
4、实现设备支持3G、4G模块功能的开发;(option.ko,内核的支持,4g的脚本文件,3g的3gps_custom.c文件)
5、实现设备支持GPS模块的开发;(在option.c添加模块版本型号的支持,3gps_custom.c添加信息的读取ttyusb5)
6、实现设备支持SD卡模块的开发,并开发支持SD卡热插拔功能;(实现进程轮询检测到tf卡不存在,则执行系统调用,对/dev/gpio_sd做重启的操作)
7、添加VPN,pptp拨号上网,实现翻墙功能;(内核模块的支持,内核的支持,路由表的修改)
8、添加app_handle服务程序,处理安卓和IOS应用app程序对设备基本信息和wifi配置等的设置和查看;(socket基于udp传输信息,监听未使用的端口,然后数据包加上数据包包头,数据包类型,数据包长度和数据包内容)
9、添加重定向url模块,实现功能如下:(1、hash链表的使用,保存终端mac、白名单url和ip地址; 2、ssid接口对应的域名重定向;3、添加链接跟踪;)
A、白名单配置:允许指定的url才能访问;
B、wifi接口配置:SSID接口重定向到指定url,包含:重定向到指定本地页面、重定向到指定外网、限流量访问外网、不限流量访问外网、关注指定微信公众号才能访问外网;
C、流量配置:设置终端mac访问外网的流量;(在数据包的流入和流出均统计终端mac访问数据包的大小,根据设置的默认的数据包大小或用户下载的app的数量给定限额的流量,配置允许用户上网的时间)
10、添加探测周边手机并上报mac及与设备关联的状态到后台的功能;(umac.ko在扫描,认证,关联状态下添加netlink上报mac,rssi,ssid等信息)
11、实现远程telnet功能,通过后台即可telnet到远程设备进行调试;(对测试:监听未使用的较大的端口,当ssh访问此端口时,即将数据包的内容全部发给telnet进程,将telnet返回的内容也全部转发给该ssh;实现:server端监听端口,当ssh用telnet访问server并指定该端口时,由于设备上线后均登录到后台,此时已绑定要发向的设备mac,当设备收到server端发送的telnet信息启动时,设备端添加与telnetd通信的线程和与server通信的线程;server端将信息发给设备的守护进程,守护进程将信息都发给telnet,实现远程telnet功能)
12、自定义实现远程传输文件的应用;(server端监听未使用端口,设备端将文件,通过udp把它传输到server端)
13、自定义协议,添加设备管理程序和后台服务程序;实现远程云后台对设备进行管理和配置,查看设备信息和终端连接信息等功能;
包括:
1、设置设备微信公众号APPID;
2、设置设备当前时间;
3、设置设备定时重启时间;
4、上报设备配置信息;
5、设置设备的wifi参数,如SSID;
6、设置手机取消微信关注公众号后不能上网;
7、远程telnet到指定mac的设备;
8、设备重启;
9、探测设备开关和上报时间间隔;
10、远程固件升级;
11、从云后台下载应用包,实现对设备的应用进行升级及修改配置信息;
附:
一、关注微信公众号和取消公众号的流程:
1、连接SSID,弹出重定向显示有关注公众号的页面,点击后跳转到微信页面;
2、关注公众号后即可上报手机mac和设备mac到server后台并将手机的openid和mac一一对应保存,同时添加手机mac到设备的hash中,手机允许上网;
3、当点击取消关注后,微信公众号后台将openid传到后台管理系统,再传到后台程序,后台根据openid和Mac的对应,将取消关注的信息发给设备的设备管理程序;
4、通过netlink将mac和openid发送到url_redict.ko,重定向模块再将该Mac删除,等手机再次连接设备时,无法访问外网并被设备重定向!
二、自定义的协议:TCP,监听未使用的端口;自定义协议头,协议格式,TLV;流程:
1、设备的设备管理程序登录server云后台:发送数据包到server端,使用tcp连接,并收到server端的回复,即表示登录成功;
2、设备内部的devmgr 和devmgrd用udp通信,devmgrd与server用tcp通信;devmgr启用多线程,一条线程用于处理netlink,一条线程用于接受和发送devmgrd的信息;
3、devmgrd启用多线程,一条用于登录,一条用于与devmgr通信,一条用于与server通信;
4、server启用多线程,一条用于接受devmgrd的信息,一条用于给devmgrd发送信息,一条用于处理web的任务(存储在sql数据库中);