天天看點

工作3年的技術積累概要

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資料庫中);