2016-06-23 19 views
0

Wenn eine Socket-Option (z. B. SO_BROADCAST, der Socket ist ein TCP-Socket) durch den Systemaufruf setsockopt() auf Serverseite eingestellt ist, ist es irgendwie möglich, es auf Client-Seite (z. B. getsockopt()) abrufen? Mit anderen Worten, ist die Socket-Option einfach eine lokale Einstellung? (Im Gegensatz zu "local", wenn eine TCP-Option (zB Window Scale) für ein Paket gesetzt ist, kann es natürlich auf der anderen Seite empfangen werden.)Ist die Socket-Option in Linux lokal?

Vielen Dank im Voraus!

+0

SO_BROADCAST ist keine TCP-Option. – EJP

+0

@EJP Ich meine nicht, es ist eine TCP-Option ..... – zzy

+0

Das ist, was Ihr Titel sagt. Du könntest es immer reparieren. – EJP

Antwort

0

Die Antwort auf diese Frage ist gerade Nein. Ihre lokalen Socket-Optionen sind auf der anderen Seite nicht erkennbar, es sei denn, sie ändern direkt das Protokollverhalten. SO_BROADCAST ändert das Protokollverhalten nicht und ist nicht erkennbar. Auf der anderen Seite sind TCP-Optionen, die das Protokollverhalten ändern (zum Beispiel TCP_NODELAY), zumindest in der Theorie erkennbar.

+0

'TCP_NODELAY' steuert, wie oft und wie viele Daten der lokale Kernel ausstehende Daten gleichzeitig sendet. Es ist auf der anderen Seite nicht direkt erkennbar, da es das Protokoll selbst nicht verändert. Der Empfänger müsste Heuristiken verwenden, um zu analysieren, wie oft Daten empfangen werden und erraten, ob "TCP_NODELAY" verwendet wird oder nicht. –

+0

@RemyLebeau, das ist genau das, was ich mit "in der Theorie" meinte. Durch das Überwachen von Mustern kann jemand eine fundierte Vermutung treffen. – SergeyA

Verwandte Themen