程序設計
TCP
服務器端監聽0.0.0.0以獲取所有網卡(主機所有IP地址)收到的請求
netstat -aptn#查看主機端口
socket底層有緩衝區,就算程序阻塞也能暫存收到的數據
代替客戶端發起tcp連接
UDP
用sendto和recvfrom方法通信
因爲端口只能綁定一次,所以服務端需要bind,以防和本地客戶端衝突
查看運行的端口
UDP高級應用
- UDP廣播數據包
廣播只能在一個廣播域(局域網)中傳播,而不能跨網段傳播
ARP協議,做MAC發現
vlan,實現局域網邏輯隔離 - 組播數據包
能夠在組播組中進行傳播的,並且路由器可以進行組播數據轉發
修改套接口選項,實現廣播
如果沒有設置BLOADCASE選項的不遞送。
如果bind端口不匹配不遞送該套接口
如果綁定的不是INADDR_ANY話,那麼BIND的地址和目的地址匹配才能遞送:也就是說你必須BIND一個廣播地址或者綁定INADDR_ANY
用ifconfig命令可以disable塊網卡的BROADCAST標誌,讓其不能接受以太網廣播。
也可以使用ioctl的SIOCSIFFLAGS方法去掉一個接口的標誌IFF_BROADCAST,使之不能接受以太網廣播。
linux抓包工具
如何識別廣播包
MAC:FF:FF:FF:FF:FF:FF
IP:10.0.0.0/8 —>10.255.255.255
192.168.199.1---->192.168.199.255
組播
IP層實現遠程通信,組播需要指定組的IP(也可以是域名),本機IP
bind組播地址
224.0.0.1—239.255.255.255
組播IP和局域網IP差不多,可以複用,是虛擬形式上的IP
將當前UDPsocket加入組