TCP與UDP挖掘機(二)套接字選項

上回主要梳理了TCP和UDP的相關知識點,這一篇主要梳理一些套接字選項,以作備忘。

套接字選項

  • 用于IP層的套接字選項(IPPROTO_IP)

    參數 解釋
    IP_ADD_MEMBERSHIP 加入組播(廣播)組。<Br>每個套接字最多可以連接一組IP_ADD_MEMBERSHIPS組。
    IP_ADD_SOURCE_MEMBERSHIP 加入特定于源的組播組。
    每個套接字最多可以連接一組IP_MAX_MEMBERSHIPS組。
    IP_BLOCK_SOURCE 阻止從給定源到給定多播組的數據。
    IP_UNBLOCK_SOURCE 取消阻止從給定源到給定多播組的數據。
    IP_DONTFRAG 設置或重置IP標頭中的do not fragment標志。
    IP_DROP_MEMBERSHIP 離開組播(廣播)組。
    IP_DROP_SOURCE_MEMBERSHIP 離開特定于源的組播組。
    IP_MULTICAST_IF 設置應發送傳出多播數據報的接口。
    IP_MULTICAST_IF2 設置應發送傳出多播數據報的IPV6接口。
    IP_MULTICAST_LOOP 指定應將 傳出的多播數據報的副本 回傳到發送主機,只要它是多播組的成員即可。
    IP_MULTICAST_TTL 在傳出的 多播數據報的IP頭中設置生存時間(TTL)。
    IP_OPTIONS 設置IP標頭選項。
    IP_RECVLCLIFADDR 指示是否應返回要接收的數據報的本地接口。
    IP_TOS 在IP標頭中設置服務類型(TOS)和優先級。
    IP_TTL 在IP標頭中設置生存時間(TTL)。
  • 用于TCP層的套接字選項(IPPROTO_TCP

    參數 解釋
    TCP_KEEPALIVE 指定TCP在將報文發送到連接的另一端之前所需要等待的特定于套接字的活動時間。此設置是特定于套接字,將用于替代TCP屬性TCOKEEPALV。僅在套接字上啟用了<font color=red>SO_KEEPALIVE</font>時才會使用它。
    TCP_NODELAY 指定TCP是否遵循<font color=#35b998>Nagle算法</font> 決定何時發送數據。Nagle算法代表通過減少必須發送包的個數來增加網絡軟件系統的效率。即盡可能發送大塊數據避免網絡中充斥著大量的小數據塊。如果要追求高實時性,需要設置關閉Nagle算法;如果需要追求減少網絡交互次數,則設置開啟Nagle算法。
  • 用于套接字層的套接字選項(SOL_SOCKET)

    參數 解釋
    SO_ACCEPTECONNABORTED 啟用偵聽套接字,以便在accept()之前重置偵聽backlog上的連接時,阻塞的accept() 將會返回ECONNABORTED。
    SO_BROADCAST 將消息發送到廣播地址。
    如果目標中指定的接口支持廣播數據包,則啟用此選項可讓應用程序發送廣播消息。
    SO_DEBUG 指定低級別調試是否處于活動狀態。
    SO_DONTROUTE 繞過標準的路由機制,即不查找路由。
    根據目標地址的網絡部分定向到相應的網絡接口。啟用后,此選項允許將數據包發送到直接連接的網絡(主機具有接口的網絡)。
    SO_ERROR 返回套接字上的任何掛起錯誤,并清除錯誤狀態。
    可以使用它來檢查連接的數據報套接字上的異步錯誤或其他異步錯誤(其中一個套接字調用未明確返回的錯誤)。
    SO_KEEPALIVE 保持連接。
    在空閑套接字上發送探測,以驗證套接字是否仍處于活動狀態。
    SO_LINGER 延遲關閉連接。
    啟用此選項,在調用close時如果存在未發送的數據時,在close期間將阻止調用應用程序,直到數據被傳輸或連接超時。
    SO_OOBINLINE 切換帶外數據的接收。
    啟用此選項會導致帶外數據在接收時放入正常數據輸入隊列,使其可用于recvfrom和recv,而無需在這些調用中指定MSG_OOB標志。
    禁用此選項會導致帶外數據在接收時放入優先級數據輸入隊列,只有通過在這些函數中指定MSG_OOB標志才能使其可用于recvfrom和recv。
    什么是帶外數據
    SO_RCVBUF 獲取接收緩沖區的大小。
    SO_RCVLOWAT 獲取接收緩沖區的下限。
    這是在成功完成read,recv,recvfrom,activate_on_receipt或activate_on_receipt_with_length函數之前必須接收的最小數據量。
    SO_RCVTIMEO 獲取接收超時值。
    該值是系統在超時操作之前等待read,recv,recvfrom,tpf_read_TCP_message,activate_on_receipt,activate_on_receipt_with_length,activate_on_receipt_of_TCP_message,accept,activate_on_accept或connect函數成功完成的時間。返回值0表示系統不會超時。
    SO_REUSEADDR 允許本地地址復用。
    啟用此選項允許綁定已使用的本地地址。
    SO_SNDBUF 設置發送緩沖區的大小。
    SO_SNDLOWAT 獲取發送緩沖區的下限。
    啟用此選項即代表這是發送緩沖區的必須可用最小空間量。以允許處理select函數。
    SO_SNDTIMEO 獲取發送超時值。
    該值是系統在超時操作之前等待發送,發送,寫入或寫入功能完成的時間。
    SO_TCPDELAY 返回獲取TCP延遲確認計時器值。<Br>該值是z / TPF系統在發送獨立確認(ACK)以確認此TCP套接字上的數據之前等待的時間。
    SO_TCPDUACK 獲取快速重傳值的重復確認(ACK)。
    SO_TYPE 獲取套接字的類型。
    SO_UDPMPSIZ 獲取套接字的最大數據包大小。
    此選項進隊UDP套接字有效。

參考文獻:getsockopt


Ending......

請關注微信公眾號:進擊的阿黑,謝謝。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容