2016-06-23 8 views
0

サーバー側のシステムコールsetsockopt()によってソケットオプション(例:SO_BROADCAST、ソケットがTCPソケット)が設定されている場合、何らかの方法でクライアント側で取得できますか(例:getsockopt())?つまり、ソケットオプションは単にローカル設定ですか? (「ローカル」とは対照的に、パケットにTCPオプション(例:Window Scale)が設定されている場合は、相手側で自然に受信することができます)。Linuxのソケットオプションはローカルですか?

ありがとうございます!

+0

SO_BROADCASTはTCPオプションではありません。 – EJP

+0

@EJP私はそれがTCPオプションだとは限りません..... – zzy

+0

あなたのタイトルが言うことです。あなたはいつもそれを修正することができます。 – EJP

答えて

0

この質問に対する回答はストレートナンバーです。ローカルのソケットオプションは、プロトコルの動作を直接変更しない限り、相手側では検出できません。 SO_BROADCASTはプロトコルの動作を変更せず、検出できません。一方、プロトコルの動作(TCP_NODELAYなど)を変更するTCPオプションは、少なくとも理論的には発見可能です。

+0

'TCP_NODELAY'は、ローカルカーネルが一度に保留中のデータを送信する頻度と量を制御します。プロトコル自体を変更しないので、反対側では直接検出することはできません。受信者は、ヒューリスティックを使用して、データが受信されている頻度を分析し、 'TCP_NODELAY'が使用されているかどうかを推測する必要があります。 –

+0

@RemyLebeau、これはまさに私が '理論的に'意味していたものです。パターンを監視することで、誰かが、推測された推測をすることができます。 – SergeyA

関連する問題