第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Go 中為 TCP 數(shù)據(jù)包設(shè)置“不分段”標(biāo)志位?

如何在 Go 中為 TCP 數(shù)據(jù)包設(shè)置“不分段”標(biāo)志位?

Go
飲歌長嘯 2022-01-17 17:54:02
我打算在 Go 中設(shè)置“不分段”標(biāo)志位,與這篇文章在 C 中的內(nèi)容相同。我檢查了常量列表,但沒有找到這個選項(xiàng)。那么 Go 中對應(yīng)的選項(xiàng)是什么?
查看完整描述

1 回答

?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個贊

如何在 Go 中為 TCP 數(shù)據(jù)包設(shè)置“不分段”標(biāo)志位?


首先你應(yīng)該知道 TCP 真的不喜歡 IP 片段。大多數(shù)(如果不是全部)主要實(shí)現(xiàn)通過使用路徑 MTU 發(fā)現(xiàn)來避免 TCP 段的分段。


TL;DR 是包含 TCP 段的典型 IP 數(shù)據(jù)包設(shè)置了 DF 位。您可以(并且應(yīng)該)嘗試一下。在這里,我在我的機(jī)器和 stackoverflow.com 之間嗅探了幾秒鐘的流量:


% tshark -w /tmp/tcp.pcap tcp and host stackoverflow.com

<wait a few seconds>

% tshark -r /tmp/tcp.pcap -T fields -e ip.flags | sort | uniq -c

    186 0x00000002

0x02 表示設(shè)置了 DF 位。我承認(rèn)在其他捕獲中,我曾在沒有 DF 位的 IP 數(shù)據(jù)包中看到偶爾的 TCP 段;我懷疑rfc1191對此有解釋。


現(xiàn)在回到您的問題,我認(rèn)為沒有可移植的方式來設(shè)置 DF 位,這是一個更普遍的問題(甚至沒有 POSIX 可移植的方式)。在golang.org/x/sys下的相關(guān)包中(可能)有一個逃生艙口供您實(shí)施。


例如,在支持FreeBSDIP_DONTFRAG的 Unix 上,可以使用和挖掘相關(guān)的常量值。unix.SetsockoptInt


在 Linux 上沒有IP_DONTFRAG,正如您從鏈接的問題中發(fā)現(xiàn)的那樣。解決方法似乎是使用IP_MTU_DISCOVER恰好在 unix 包中作為常量可用的。您可以使用它unix.SetsockoptInt來設(shè)置它。


查看完整回答
反對 回復(fù) 2022-01-17
  • 1 回答
  • 0 關(guān)注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號