AP Discovery: Client สแกนหา AP ยังไง
สงสัยกันไหมครับว่า Client สแกนหา AP ยังไง โพสต์นี้เราจะมาคุยเรื่อง AP Discovery กันครับ
Client จะเริ่มกระบวนการ AP Discovery ซึ่งมีอยู่สองประเภทคือ Passive Scan และ Active Scan
ปกติแล้ว AP จะ broadcast SSID ผ่าน Beacon frame ทุกๆ 102.4ms หรือ ประมาณ 10 frame ต่อ 1 วินาที ใน Beacon จะมีข้อมูลที่สำคัญเช่น SSID, BSSID, Channel, Security รวมถึงความสามารถต่างๆที่ AP ตัวนี้รองรับ
Passive Scan คือ client จะ scan แต่ละ channel วนไปเรื่อยๆ พอมันเจอ Beacon มันก็จะเก็บค่า SSID นั้นไว้ เหมือนตอนที่เรากดเครื่องหมาย Wi-Fi มันก็จะมีชื่อ SSID ต่างๆขึ้นมา ทีนี้พอ Client เลือกเกาะ SSID มันก็จะทำการเชื่อมต่อกับ BSSID นั้นๆ โดยการส่ง Authentication Request ถ้า BSSID นัั้นมี PSK หรือ .1X Client ก็ต้องใส่ credential เป็นการจบ AP association process
โดยปกติแล้ว client จะใช้เวลาสแกน Beacon ประมาณ 120ms ต่อ 1 channel หรือที่เรียกกันว่า "Dwell Time" เหตุผลที่ต้องรอ 120ms เพื่อให้ client อยู่ใน channel นั้นนานพอที่จะได้ยิน Beacon ก่อนจะกระโดดไป channel ถัดไป เพราะทั่วไปแล้ว AP จะส่ง Beacon ทุกๆ 102.4ms ฉะนั้นข้อเสียของ Passive Scanning คือจะใช้เวลานานกว่าจะ scan channel ครบทุกช่อง (2.4GHz มี 13 channels + 5GHz มี 25 channels x 120ms) และ Scan หนึ่งรอบกินเวลาเกือบ 5 วินาที
ส่วน Client Scanning ประเภทที่สองเรียกว่า Active Scanning ซึ่งแทนที่จะรอ Beacon จาก AP client จะ broadcast Probe Request frame ประกาศไปว่า "ฉันต้องการจะเกาะ SSID ชื่อ XXX ถ้า BSSID ตัวไหนรองรับ XXX ให้ตอบกลับด้วย" หากมี AP ใน channel นั้นๆรองรับ SSID XXX มันจะส่ง Probe Response กลับไปแล้วก็เข้าสู่กระบวนการ association ต่อไป
ปกติการที่จะทำ Active scanning ตัว client จะต้องมี profile ของ SSID นั้นก่อน เช่นเคยเกาะ SSID ตัวนั้นมาแล้ว ถ้าเราต้องการเช็ค SSID profile ใน Windows เราสามารถรัน
netsh wlan show profiles
ส่วน use case หลักเลยของ Active Scanning คือช่วยในการทำ roaming
เวลาเราเดินออกห่างจาก AP ตัวที่เกาะอยู่ สัญญาณจะเริ่มอ่อนลง พอมันแตะ low RSSI threshold (ค่านี้ขึ้นอยู่กับ NIC card ซึ่งแต่ละ device manufacturer จะมี threshold ที่แตกต่างกัน) client จะเริ่มทำ Active Scanning โดยการไล่ส่ง Probe Request ไปตาม channel ต่างๆ เพื่อหา BSSID ที่สัญญาณดีกว่า ถ้าโชคดี จ๊ะเอ๋เจอ BSSID ตัวใหม่ก่อนที่สัญญาณตัวเก่าจะบอด client ก็จะส่ง Reassociation Request frame (AP จะตอบกลับด้วย Reassociation Response frame) แล้วเข้าสู่กระบวนการ association ตามปกติ แต่ถ้าไม่เจอ client ก็จะหลุดแล้ว scan ต่อไป