WIFI 考勤打卡 淺析
一馏臭、背景
最近產(chǎn)品部提出了在WEB端設置wifi考勤打卡新需求,根據(jù)管理員設置的wifi相關信息(主要是WIFI名稱和MAC地址)退敦,員工用戶利用移動端相連接的wifi進行wifi考勤打卡诅岩。
二、名詞術語解釋
下面的理解全是建立在無線路由器的基礎上芒炼。如有錯誤請指出。
1术徊、SS
SS(Service set)即服務集本刽,是無線局域網(wǎng)中的一個術語,用以描述802.11無線網(wǎng)絡的構成單位(一組互相有聯(lián)系的無線設備)赠涮,使用服務集標識符(SSID)作為識別子寓。
可以分為獨立基本服務集(IBSS)、基本服務集(BSS)和擴展服務集(ESS)三類笋除。其中IBSS屬于對等拓撲模式(又稱Ad-Hoc模式斜友、無線隨意網(wǎng)絡),而BSS和ESS屬于基礎架構模式垃它。這些拓撲是原始的802.11規(guī)范中定義的蝙寨,其他的如網(wǎng)橋、中繼器等則是屬于特定廠商的擴展或者WDS的拓撲模式嗤瞎。
2、SSID
SSID(Service Set Identifier)即服務集標識符听系,是一個或一組基礎架構模式無線網(wǎng)絡的標識贝奇,依照標識方式又可細分為兩種:
基本服務集標識符(BSSID),表示的是AP的數(shù)據(jù)鏈路層的MAC地址靠胜。
擴展服務集標識符(ESSID)掉瞳,一個最長32字節(jié)區(qū)分大小寫的字符串毕源,ESSID標識與SSID相同的網(wǎng)絡。術語SSID最常用陕习。
在此可以理解為無線路由器發(fā)射的某個wifi的名稱霎褐。(SSID=name of network)
3、BSS
BSS(Basic Service Set)即基本服務集该镣,是一組能在PHY層相互通信的所有站冻璃。每個BSS都有一個稱為BSSID的標識(ID),它是服務于BSS的接入點的MAC地址损合。
用在無線路由器發(fā)射出的wifi上可以這樣理解:某一個無線路由器發(fā)射出的wifi信號所覆蓋的范圍可視為BSS省艳。
4、BSSID
BSSID(Basic Service Set Identifier)即基本服務集標識符嫁审。
在上面的基礎上可以這樣理解:對某一個BSS基本服務集的唯一標識跋炕。例如,某無線路由器發(fā)射了一個名稱為A的wifi熱點律适,同一區(qū)域另一個無線路由器也發(fā)出了一個名稱為A的wifi熱點辐烂,當手機連接A熱點時,如何辨別連接的是由哪一個路由器發(fā)射的wifi呢捂贿?
這時候就要用到BSSID了纠修。一般情況下BSSID可以理解為無線路由器的MAC地址,通過查看手機連接wifi的MAC地址即可知道連接的是哪一個路由眷蜓。(BSSID=AP MAC address)
其實準確來說手機得到的BSSID并不是路由器的基準(出廠)MAC地址分瘾。
例如,筆者公司的某款無線路由器B的出廠MAC地址為 XX:XX:XX:XX:XX:F1吁系,當手機連接此wifi查看mac地址時發(fā)現(xiàn)是XX:XX:XX:XX:XX:F2德召,或者是XX:XX:XX:XX:XX:F3。
5汽纤、ESS ESSID
ESS(Extended Service Set )即擴展的基本服務集上岗。
ESSID(Extended Service Set Identifier)即擴展的基本服務集標識符。
BSS+BSS+BSS+BSS+...=ESS蕴坪。ESS為多個BSS的集合肴掷。ESS使用指定的ESSID作識別。
通過將多個BSS比鄰安置背传,可以擴展網(wǎng)絡的范圍呆瞻,如果這些BSS通過各種分布系統(tǒng)互聯(lián)(無論是有線的還是無線的),擁有一致的ESSID径玖,并且對于邏輯鏈路控制層來說可以認為是一個BSS的話痴脾,那么這些BSS可以被統(tǒng)一為一個ESS。
在同一個ESS中的不同BSS之間切換的過程稱為漫游梳星。一般而言赞赖,一個ESS中的BSS都會使用相同的SSID和安全機制以提供接近于無縫漫游的可能滚朵。兩個BSS之間通常有15%左右的重疊范圍來保證漫游時信號不會長時間丟失,并且設置在不同頻段來防止相互干擾前域。
6辕近、MAC
MAC地址采用十六進制數(shù)表示,共六個字節(jié)(48位)匿垄。(XX:XX:XX:XX:XX:XX )其中移宅,前三個字節(jié)是由IEEE的注冊管理機構RA負責給不同廠家分配的代碼(高位24位),也稱為“編制上唯一的標識符”(Organizationally Unique Identifier)年堆,后三個字節(jié)(低位24位)由各廠家自行指派給生產(chǎn)的適配器接口吞杭,稱為擴展標識符(唯一性)。
三变丧、歷程
當產(chǎn)品部提出wifi考勤打卡需求時芽狗,普遍認為一個路由器有一個mac地址,手機連接wifi可以根據(jù)mac地址等信息進行打卡痒蓬。當我們用多個手機連接公司名稱為A(SSID)的wifi時童擎,發(fā)現(xiàn)手機上展示的mac地址并不是一致的,這個就尷尬了攻晒,打翻了原有理念顾复。
然后發(fā)現(xiàn)我們公司共有五個無線路由器,wifi名稱都是A鲁捏。哦芯砸,這時候才感覺到原來以前的知識還是靠譜的,可能是多個手機具體連接的路由器不是同一個给梅。
然后把五個路由器wifi熱點名稱改為A假丧、B、C动羽、D包帚、E,多個手機連接A熱點時运吓,發(fā)現(xiàn)手機得到的mac地址是一致的渴邦,到這里可以得出的結論是手機連接同一個wifi熱點得到的mac地址是一致的。但是.....又尷尬了拘哨。
當多款手機連接B熱點時谋梭,發(fā)現(xiàn)又出現(xiàn)了不一致的mac地址,查找原因發(fā)現(xiàn)倦青,原來B無線路由器中可以設置2.4G Hz和5G Hz兩個不同頻段的wifi熱點瓮床。B路由器中默認是開啟2.4G Hz和5G Hz頻段的wifi熱點,并且wifi名稱(SSID)是同一個。經(jīng)過檢查還有個問題是B路由器的出廠mac地址和手機連接得到的mac地址不一致纤垂。
例如上面舉得例子:筆者公司的某款無線路由器B的出廠MAC地址為 XX:XX:XX:XX:XX:F1,當手機連接此wifi查看mac地址時發(fā)現(xiàn)是XX:XX:XX:XX:XX:F2磷账,另一款手機連接時是XX:XX:XX:XX:XX:F3峭沦。由此可得出的結論是,路由器有一個基準(出廠)mac地址逃糟,然后發(fā)射出wifi的mac在基準mac地址上按照一定的算法進行變動吼鱼,具體的變動算法不清楚,有清楚的請告知我绰咽,非常感謝菇肃。
另外還有一個問題是,C路由器設備后面所寫的出廠說明mac地址是XX:XX:XX:XX:XX:56取募,但是通過路由器后臺看到的出廠mac地址是XX:XX:XX:XX:XX:57琐谤,手機連接后得到的mac地址是XX:XX:XX:XX:XX:56。這就尷尬了玩敏,是廠家寫錯了還是根據(jù)特定的算法算的斗忌?
除了根據(jù)wifi設備分析外,我們也對具有wifi考勤打卡功能的軟件進行了分析旺聚。比如現(xiàn)在比較火爆的由阿里團隊研發(fā)的釘釘织阳,以及紛享銷客APP,在Android端砰粹,他們的處理都是獲取周圍wifi信息(并不是當前手機連接的wifi)進行打卡唧躲。在iOS端,他們的處理都是根據(jù)當前手機連接的wifi信息進行打卡碱璃。據(jù)iOS同事說弄痹,iOS獲取周圍wifi信息需要申請此功能,并最低支持版本是iOS 9厘贼。另外據(jù)可靠消息界酒,分享逍客對mac地址的處理也是通過忽略低4位進行匹配。
四嘴秸、結論
經(jīng)過上述分析毁欣,手機獲取的無線路由器MAC地址的低4位是變化的。那我們實現(xiàn)這個需求時岳掐,除了匹配虛擬位置凭疮、手機信息、wifi相關等其他信息外串述,只針對mac地址执解,我們可以忽略mac地址的低4位來做匹配。
上述分析難免有錯誤,如有發(fā)現(xiàn)衰腌,或者wifi考勤有更好的解決方案新蟆,請聯(lián)系我,非常感謝右蕊。