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 指令有興趣別忘了參考看看
同時也有1部Youtube影片,追蹤數超過11萬的網紅FITWHEY,也在其Youtube影片中提到,กล้ามเนื้อทำงาน: กล้ามเนื้อหลัก:ไหล่หน้า/กลาง/หลัง กล้ามเนื้อรอง: ท้องแขน กล้ามเนื้อทรงตัว:บ่า/ลำตัว Set x rep: 4 x 6-8 ... ถ้าจะเล่นเพื่อให้กล้าม ...
「raw socket」的推薦目錄:
- 關於raw socket 在 矽谷牛的耕田筆記 Facebook 的最佳解答
- 關於raw socket 在 矽谷牛的耕田筆記 Facebook 的最佳解答
- 關於raw socket 在 CheckCheckCin Facebook 的精選貼文
- 關於raw socket 在 FITWHEY Youtube 的最讚貼文
- 關於raw socket 在 [Linux C] 使用RAW socket 實現簡易的Ping 功能 - 通訊雜記 的評價
- 關於raw socket 在 Raw Socket 接收和发送数据包 - GitHub 的評價
- 關於raw socket 在 what is RAW socket in socket programming - Stack Overflow 的評價
- 關於raw socket 在 Raw Sockets - Simon Buchheit - YouTube 的評價
- 關於raw socket 在 ss shows a raw socket. What does it mean that it is listening on 的評價
raw socket 在 矽谷牛的耕田筆記 Facebook 的最佳解答
本文延續前篇效能校正的經驗談,上篇文章探討了關於Locality與中斷中可以最佳化的部分,。本篇文章將繼續剩下最佳化步驟的探討。
The Case of the Nosy Neighbor
從前述最後的火焰圖中,作者觀察到幾個跟網路有關的 kernel call,譬如 dev_queue_xmit_nit 以及 __netif_receive_skb_core 等有可能有成長的空間,於是輾轉前往這邊去研究。
作者觀察到 packet_rev 這個函式有不少的比例,而該函式的意思是有人嘗試透過使用 AF_PACKET 等方式開啟了 RAW socket 來處理封包。透過 ss 這個指令,作者觀察到系統中有其他的應用程式透過 AF_PACKET/SOCKET_RAW 也在處理封包,最後輾轉發現原來是系統上的 dhclient。
DHCP Client 必須要在系統有 IP 以前就有收送封包的能力,所以使用 AF_PACKET 也滿合理的。作者思考是否有辦法可以讓 DHCP Client 拿到 IP 之後就關閉 AF_PACKET,改使用純 UDP 的方式來進行後續的 DHCP Renewal 功能,可惜這個方向沒有辦法達成。
根據 AWS 的官方文件,當一個 IP 被分配到一個機器後,這個 IP 會跟該機器同生死,因此這種情況下 其實不需要透過 DHCP Renewal 來反覆取得 IP,只要取得一次 IP 即可。
作者變修改相關腳本,當 DHCP 取得 IP 後關閉 dhclient,此外還必須要記得去修改網卡層級關於該 IP 的記憶,預設期間是一小時,作者將其修改為永遠。
透過這樣簡單的設定,整體的效能又再度提升了 6%,從 1.06M req/s 提升到 1.12M req/s
The Battle Against the Spin Lock
作者陳述自己花了非常多時間與 Spin Lock(作者心魔的大白鯨) 奮戰,幾乎是茶不思飯不想的滿腦都在思考如何加速,然後再經歷過反反覆覆的失敗後,作者最後決定還是要寫出一些關於 Spin Lock 的嘗試與研究心得,算是一個很精彩的踩雷心得。
這部分的篇幅很長,而且內容也滿深的,最後的解決方式也只有提升 2%左右的效能,所以對這部分有興趣的讀者再自行閱讀囉
This Goes to Twelve
終於來到最後的最佳化步驟了,這個步驟中的範疇都只能勉強壓榨出些許的效能,包含了關閉 GRO, TCP壅塞控制以及靜態中斷處理。
(Generic Receive Offload)GRO 是一個網路相關的功能,目的是用來將 Kernel 層級的封包給聚合起來變成一個大封包,而 Kernel 收到這個封包後會把該大封包重新組合變成本來的小封包,對於使用者的應用程式來說不會有任何感覺,但是對於整體的封包傳輸來說能夠節省花費的並提升效能。大部分情況下這個功能都是開啟的,Amazon Linux 2 預設也是打開這個選項。
然而針對作者的測試情境,由於所有的封包基本上都是同一條連線且資料量也不大,因此 GRO 雖然可以帶來聚合的效果,但是也會拖延封包進入到 Linux Kernel Network Stack 的時間點,因此開啟 GRO 帶來的好處沒有很大。
TCP 壅塞控制有不同的演算法,Amazon Linux2 內建兩種演算法 Cubic 以及 Reno,除此這兩個之外常見的還有 Google 多年前貢獻的 BBR。根據作者測試,其實驗環境中有比較好效能的則是 Reno
註: 不同算法針對不同應用場景,所以要切換演算法前要先釐清自己的應用情境以及用哪種演算法比較合適。
全部零零總總的修改後提升了 4%,整體的效能服務來到了 1.2M reqs/s
這篇文章真的很長,有些最佳化的方式是針對該應用場景而特別去使用的,這也意味者並非所有的修正方式都可以套用到各位的應用程式。
本篇文章還是很值得一讀,整個分析的思路與想法都非常有趣,雖然不一定用得到但是也許未來有一天會有機會使用。
https://talawah.io/blog/extreme-http-performance-tuning-one-point-two-million/
raw socket 在 CheckCheckCin Facebook 的精選貼文
【潮濕天易水腫?】雙眼皮一覺睡醒變單眼皮
⭐大眼都變成細眼而且非常無神
⭐睡不夠太累都容易眼腫腫
#星期一踢走BlueMonday
尋找眼皮浮腫真兇
有些人就算化了妝,上班時還是一副睡不醒的模樣,因為早上醒來總是眼皮浮腫,雙眼皮驟變單眼皮!導致眼皮浮腫的原因有很多,你犯了以下哪一項?
1. 昨晚煲韓劇哭了一場
2. 臨睡前口渴喝了兩杯水
3. 吃了個杯麵做宵夜
4. 和朋友歡聚酒喝多了
以上四項都沒有做的話卻依然眼腫腫,你可能是脾虛濕盛,中醫理論認為,肺、脾及腎臟失調都會影響水液運行,未能將多餘水濕排出體外,就會引起水腫。
以下有幾個急救眼皮浮腫問題的方法, 但長遠還是要改善肺、脾及腎虛問題,尤其脾氣虛,平日嗜吃生冷食物、嗜甜及重口味食物、飲食不定時、經常用腦思慮過多都會損傷脾胃,以致水濕停滯體內而形成水腫,要改善體質首先要少吃生冷,適量進食益氣健脾食物例如白米、薯仔、淮山、蓮子、薏米、白扁豆等,每日飲一杯米水都有助健脾養胃。
消除眼腫有妙法
方法一:冰凍金屬匙羹
將金屬湯匙放入冰箱冷凍5分鐘以上,自冰箱取出後敷在眼窩上,冷凍效果有助消腫。
方法二:按摩睛明穴
功效:促進眼周血液循環
位置:眼內角上方凹陷處
按法:以中指或食指指腹輕壓皮膚,畫小圈按揉,每次按壓3-5秒後鬆開,重覆動作5-10次。
✔推介茶療:水腫腫
材料:淮山、扁豆衣、茯苓、陳皮
功效:健脾祛濕
適用於:身體浮腫、下肢水腫、眼簾浮腫
售價:每盒$79(內附5包)
✔推介米水:朝米水
功效:去水腫、消胃脹、改善面黃
🛒歡迎 Facebook inbox 或 WhatsApp 訂購:
Facebook: http://bit.ly/CCC-FB
WhatsApp: +852-9347 4374
https://api.whatsapp.com/send?phone=85293474374
留言或按讚👍🏻支持一下我們吧!❤️ 歡迎 Follow 我們獲得更多養生資訊。
Causes of swollen eyes
Some people look sleepy at work even if they wear makeup, as their eyes are always puffy when they wake up in the morning. Their double eyelids may even suddenly change to single eyelids! There are many causes of swollen eyes. Which of the following are you guilty of?
1. Sobbing while you watch korean drama
2. Have 2 cups of water before going bed
3. Eat cup noodles for late night snack
4. Drink too much with friends
If you have swollen eyes even if you do not have above behaviour, you may have an asthenic spleen and dampness in body. Chinese medicine theory believes that the disorder of the lungs, spleen and kidneys will affect fluid transportation, dampness cannot be dispelled normally which leads to edema.
There are several quick methods to relieve swollen eyes, but in the long run, it is still necessary to improve the lung, spleen and kidney deficiency problems. This is especially true for those with spleen qi deficiency as they usually prefer cold/raw foods, sweet and thick sauced food, irregular diet time, and excessive thinking will harm the spleen and stomach. All this results in stagnation of dampness in the body and formation of edema. To improve the body condition, eat less raw/cold food first, and appropriately consume ingredients that can promote qi and strengthen the spleen such as white rice, potato, Chinese yam, lotus seed, coix seed, hyacinth bean. Drink a cup of rice water every day to strengthen the spleen and stomach.
Reduce swollen eyes
Method 1: Cold spoon
Freeze the metal spoon in the refrigerator for more than 5 minutes. Put it on the eye socket, the cold helps to reduce swelling.
Method 2: massage Jing Ming Point
Effects: Improves blood circulation near the eye
Location: In the depression slightly above the inner canthus.
Method: Use your middle finger or index finger to gently apply pressure on skin in circular motion for 3 to 5 seconds and release. Repeat for 5-10 times.
✔ Recommendation: ‘Edema’ health tea
Ingredients: Chinese Yam, hyacinth bean coat, poria, dried citrus peel
Effects: Strengthens the spleen and dispels dampness
Suitable for: Bloatedness, lower-body bloating, eye lid swelling
Price: $79/5 packs
✔ Recommendation: Dawn Rice Water
Effects: reduces water retention, relieves abdominal bloating, improves yellowish complexion
🛒Inbox our Facebook page or WhatsApp us to place order:
Facebook:
https://www.facebook.com/checkcheckcin
WhatsApp: +852-9347 4374
https://api.whatsapp.com/send?phone=85293474374
Comment below or like 👍🏻 this post to support us. ❤️ Follow us for more healthy living tips.
#男 #女 #我胖了 #痰濕
raw socket 在 FITWHEY Youtube 的最讚貼文
กล้ามเนื้อทำงาน:
กล้ามเนื้อหลัก:ไหล่หน้า/กลาง/หลัง
กล้ามเนื้อรอง: ท้องแขน
กล้ามเนื้อทรงตัว:บ่า/ลำตัว
Set x rep: 4 x 6-8 ... ถ้าจะเล่นเพื่อให้กล้าม ลึก คม ชัดไปได้ต่ำสุดถึง 3rep max (ไม่แนะนำสำหรับคนเล่นต่ำกว่า 1ปี)
ทำไมถึงเรียก Power Movement: การดันแบบหลังชิดเบาะนั่นเป็นmovement "ตามตำรา" แต่ไม่ธรรมชาติ Power movement คือการดันในตำแหน่งที่ธรรมชาติ ออกแรงได้เยอะและฐานมั่นคง
หัวไหล่ควรเล่นหนักไหม?
หัวไหล่เป็นมัดที่ข้อต่อบาดเจ็บง่ายที่สุดมัดหนึ่งเพราะ socket (ภาษาไทยผมไม่แน่ใจคืออะไร) อยู่ตื้นครับและในบางมุมอยู่ในจุดที่อ่อนแอมากโดยเฉพาะท่าที่ไม่ธรรมชาติทั้งหลาย(ไหล่คนเราเลยหลุดง่าย..... คุณมักไม่ค่อยได้ยินคน "ข้อสะโพก" หลุด) อย่างไรก็ตามหัวไหล่นั้นเต็มไปด้วยกล้ามเนื้อ IIB ที่มีประสิทธิภาพในการดัน Load หนักๆมากกว่าอกด้วยซ้ำ (แต่เพราะอกเป็นมัดใหญ่กว่า อยู่ในตำแหน่งการดันที่ดีกว่า และมีหัวไหล่ช่วยเลยดันได้เยอะกว่าตามธรรมชาติ) ......กล้ามหัวไหล่ถือว่าเป็นกล้ามเนื้อที่อาศัย Raw strength(กำลังดิบ) มากที่สุดโดยสังเกตุท่า Olympic lift แทบทุกท่าวัดความแข็งแรงที่หัวไหล่เป็นหลัก ..... สรุปคือหัวไหล่ควรเล่นหนักมากครับ
ถ้าจะบอกว่ากล้ามมัดไหนคุณยายแถวเยาวราช สายตาฝ้าฟางก็ยังบอกได้ว่าคุณเล่นกล้าม คำตอบคือ "หัวไหล่"
DANNY - Part of a FITWHEY TEAM
เพราะเราไม่ใช่แค่คนขายเวย์
raw socket 在 Raw Socket 接收和发送数据包 - GitHub 的推薦與評價
The code snippets of all kinds of languages and some docs. - snippet/raw-socket.md at master · xgfone/snippet. ... <看更多>
raw socket 在 [Linux C] 使用RAW socket 實現簡易的Ping 功能 - 通訊雜記 的推薦與評價
使用Ping 指令可以讓你迅速知道目標主機現在是否存活(當然有其他例外) 。而這篇文章就是要探討, 該如何使用RAW socket 來實現簡單的Ping 功能. ... <看更多>