ref: https://www.hwchiu.com/ping-implementation.html
本篇文章是難得的自產文章,該文章分享一下自己觀察不同 ping 指令與不同發行版本下的實作方式,主要探討的點是 ICMP 封包是如何產生的。
就我目前認知,目前至少有三種常見方式來設定 ping 指令讓其能夠順利收送 ICMP 封包。
常見的 TCP/UDP 應用程式實際上都是讓 Kernel 幫忙處理底層的 L3/L4 封包,使用者的應用程式則是專注於資料的交換與處理,簡單的說法就是專心處理 L7 資料。
但是 ICMP 封包不同於上述的 TCP/UDP 封包,一種方式就是透過 RAW Socket 的形式自行去拼湊組裝 ICMP 格式,自行處理一切封包的處理。
RAW Socket 本身也不允許每個使用者都能輕易開啟,必須要有相關的權限才可以執行,因此一種 PING 的實作方式就是透過 SetUID 的方式,讓所有能夠執行 ping 指令的使用者會短暫瞬間提權變成 Root 的身份
也因為是 Root 就可以順利的開啟 RAW Socket。
SetUID 強大且方便,簡簡單單就可以讓使用者瞬間變成 Root,但是也因為簡單好像就安全角度來看會覺得不太嚴謹,畢竟我想要的只是一個能夠開啟 RAW Socket 的權限,你去把整個 Root 都送給我。
因此第二種實作方式就是透過 Linux Capability 來達到更細緻化的權限控管,讓任何可以執行 ping 指令的使用者都可以短暫獲得 cap_net_raw 的權限,最終順利的開啟 RAW Socket
而第三種方式則是跳脫的權限的概念,與其透過 RAW Socket 來自行打造 ICMP 封包,不如讓 Linux Kernel 幫忙處理 ICMP 封包,ping 的程式只要跟 Kernel 要求建立一個基於 ICMP 協定的 socket 即可。
透過第三種方式最終可以達到 setuid-less 的架構,ping 的應用程式再也不需要任何的特殊權限,每個使用者都可以順利執行來收送 ICMP 封包。
文章內會針對三種方式進行實驗跟觀察,對 PING 指令有興趣別忘了參考看看
同時也有239部Youtube影片,追蹤數超過41萬的網紅宅水電,也在其Youtube影片中提到,🔨 成為頻道會員「支持宅水電創作,享有會員專屬福利」:https://bit.ly/30eTHOG ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ 開關插座我們做了很多集 但有沒有想過為什麼 同樣的兩個孔孔,價格卻差這麼多 從20元到80元都有,甚至還有更貴的 今天我們就來秉持實驗的精神 把4個不同品牌的插座...
「socket」的推薦目錄:
- 關於socket 在 矽谷牛的耕田筆記 Facebook 的精選貼文
- 關於socket 在 軟體開發學習資訊分享 Facebook 的最佳貼文
- 關於socket 在 軟體開發學習資訊分享 Facebook 的最佳解答
- 關於socket 在 宅水電 Youtube 的最佳貼文
- 關於socket 在 遊戲職人社長 Youtube 的最佳貼文
- 關於socket 在 白同學DIY教室 Youtube 的最佳解答
- 關於socket 在 第 37 章 socket編程 的評價
- 關於socket 在 在伯恩茅斯拍賣的Socket Sets - Marketplace - Facebook 的評價
- 關於socket 在 reactphp/socket: Async, streaming plaintext TCP/IP ... - GitHub 的評價
- 關於socket 在 Python Socket Programming Tutorial - YouTube 的評價
socket 在 軟體開發學習資訊分享 Facebook 的最佳貼文
NT 430 特價中
系統程式設計 – 從頭學習 Netlink Socket、作業系統、可載入核心模組、C 程式設計
https://softnshare.com/netlinksockets/
socket 在 軟體開發學習資訊分享 Facebook 的最佳解答
課程特價中
學習 C# .Net 的 Socket 程式設計,使用 async/await 建立分散式應用程式,建構類別程式庫( class library )
https://softnshare.com/tcpip-socket-programming-for-coders-using-csharp-net/
socket 在 宅水電 Youtube 的最佳貼文
🔨 成為頻道會員「支持宅水電創作,享有會員專屬福利」:https://bit.ly/30eTHOG
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
開關插座我們做了很多集
但有沒有想過為什麼
同樣的兩個孔孔,價格卻差這麼多
從20元到80元都有,甚至還有更貴的
今天我們就來秉持實驗的精神
把4個不同品牌的插座切開來
看看裡面到底長什麼樣子
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
✅宅水電的Youtube頻道 | http://bit.ly/2OR4E2p
✅ 宅水電FB粉絲團專業|http://bit.ly/2uRAzqo
✅ 宅水電FB社團|http://bit.ly/303j30O
✅合作邀約|nicehomerepair@gmail.com
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
#插座 #銅 #插頭
socket 在 遊戲職人社長 Youtube 的最佳貼文
#WIRECARE宅電防護員 #預防電線走火 #居家檢測
插座老化偵測 WIRECARE的原理與實測:
https://www.strongpilab.com/power-socket-detector-wirecare/
wirecare宅電防護員(現貨優惠中)
https://shopee.tw/wirecare%E5%AE%85%E9%9B%BB%E9%98%B2%E8%AD%B7%E5%93%A1%EF%BC%88%E9%A0%90%E8%B3%BC%E4%B8%AD%EF%BC%89%E9%A0%90%E8%A8%888%E6%9C%88%E4%B8%8B%E6%97%AC%E5%88%B0%E8%B2%A8-i.130189889.3696718929?position=15
socket 在 白同學DIY教室 Youtube 的最佳解答
寶馬BMW通病維修【汽車環保材質接頭維護 】E36汽油幫浦插頭修護 DIYCar line socket repair
https://www.youtube.com/watch?v=vPLokLnTyk0
覺得內容精采想打賞贊助白同學的朋友們,歡迎您贊助打賞~謝謝
綠界斗內入口 https://p.ecpay.com.tw/7799A89
socket 在 在伯恩茅斯拍賣的Socket Sets - Marketplace - Facebook 的推薦與評價
Facebook Marketplace 有位於伯恩茅斯的全新和二手Socket Sets 商品。快來尋找好康特惠,還能免手續費銷售商品。 ... <看更多>
socket 在 reactphp/socket: Async, streaming plaintext TCP/IP ... - GitHub 的推薦與評價
Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP. - GitHub - reactphp/socket: Async, streaming plaintext ... ... <看更多>
socket 在 第 37 章 socket編程 的推薦與評價
socket 本身有“插座”的意思,因此用來描述網絡連接的一對一關係。 TCP/IP協議最早在BSD UNIX上實現,為TCP/IP協議設計的應用層編程介面稱為socket API。 ... <看更多>