Ich habe einen QTcpServer geschrieben, wohin sich ein Gerät verbindet und Daten übermittelt.
Das Empfangen mit readAll() der Daten klappt auch, jedoch schaffe ich diese nicht zu quittieren.
Wenn ich die Kommunikation zum Original Software mit Wireshark beobachte, sehe ich daß nachdem die Daten übermittelt wurden, im ACK Packet als Daten
0x06
0x0d
0x0a
stehen.
Ich habe versucht diese mit write() zu schreiben. Das klappt auch, jedoch nicht sofort als ACK, sondern als übernähstes Packet.
Also
readAll() // Daten sind angekommen
ACK // gesendet wohl vom Socket
write() // hier erst werden meine Daten gesendet
Beim Original Software
- Daten werden gelesen
- ACK mit Daten wird gesendet
Desweiteren steht bei dem Original-Übertragung (in wireshark)
This is an ACK to the segment in frame: 299
299 war das Packet, daß gelesen wurde.
Kann mir jemand sagen, ob ich so ein ACK mit QTcpSocket realisieren kann und wenn ja, wie?
Wenn Mitschnitte, oder sonstige Infos nötig sind, kann ich sie gerne posten.
QTcpSocket, Daten im ACK
Vielleicht formuliere ich die Frage nochmal anderes.
Kann mir jemand sagen, wie ich Daten in das ACK Packet einschleusen kann? Oder QT davon abhalten kann den ACK zu senden und statt dessen selber ein ACK auf das vorhergehende Packet, aber mit Daten generieren kann?
Bzw. wo im QT-Code wird das ACK Packet erstellt?
Kann mir jemand sagen, wie ich Daten in das ACK Packet einschleusen kann? Oder QT davon abhalten kann den ACK zu senden und statt dessen selber ein ACK auf das vorhergehende Packet, aber mit Daten generieren kann?
Bzw. wo im QT-Code wird das ACK Packet erstellt?
Netzwerk programmiert man in voneinander getrennten Schichten (siehe http://de.wikipedia.org/wiki/OSI-Modell). Du befindest dich mit deiner Qt-Applikation in der Anwendungsschicht und hast nichts auf der Transportebene verloren.
Daher:
Nirgends.. Qt verwendet die entsprechende Betriebsystem-API, welche die Transport-Schicht ebenfalls schützt.
Entweder verstehst du was in der Kommunikation mit deinem Client falsch (der dürfte sich ebenfalls nur auf der Anwenderschicht bewegen) oder du hast ein echt spezielles (Embedded-)Gerät und damit ein Problem: es gibt IMHO keinen plattformunabhängigen Zugang zu RAW-SOCKETS..
Ich vermute du hast irgend eine Protokoll-Spezifikation.. was genau musst du denn als Antwort senden?
Daher:
Gar nicht..Kann mir jemand sagen, wie ich Daten in das ACK Packet einschleusen kann?
Code: Alles auswählen
Bzw. wo im QT-Code wird das ACK Packet erstellt?Entweder verstehst du was in der Kommunikation mit deinem Client falsch (der dürfte sich ebenfalls nur auf der Anwenderschicht bewegen) oder du hast ein echt spezielles (Embedded-)Gerät und damit ein Problem: es gibt IMHO keinen plattformunabhängigen Zugang zu RAW-SOCKETS..
Ich vermute du hast irgend eine Protokoll-Spezifikation.. was genau musst du denn als Antwort senden?
Danke für deine Antwort.
Natürlich hast du Recht, da habe ich garnicht mehr drüber nachgedacht.
Es handelt sich um eine Alarmanlage. Normalerweise werden die Meldungen hier per Telefon, mit der SIA Protokoll übertragen, was ich soweit auch verarbeiten kann.
Neue Anlagen können diese Übertragung auch per IP erledigen.
Unten habe ich ein Mitschnitt angehängt.
Die erste Übertragung ist im Packet 299. Inhalt ist
#9999 Nri1CL000
Zuerst ein Identnummer (Kundennummer) 9999, ri1 = Bereich 1, CL000 = Scharfgeschaltet.
Packet 300 ist das Antwort, wo auch Daten eingebettet sind.
Um das zu erreichen, hätte ich also nur die Möglichkeit am Betriebsystem vorbei zu programmieren und einen eigenen Transportschicht zu implementieren?
[/b]
Natürlich hast du Recht, da habe ich garnicht mehr drüber nachgedacht.
Es handelt sich um eine Alarmanlage. Normalerweise werden die Meldungen hier per Telefon, mit der SIA Protokoll übertragen, was ich soweit auch verarbeiten kann.
Neue Anlagen können diese Übertragung auch per IP erledigen.
Unten habe ich ein Mitschnitt angehängt.
Die erste Übertragung ist im Packet 299. Inhalt ist
#9999 Nri1CL000
Zuerst ein Identnummer (Kundennummer) 9999, ri1 = Bereich 1, CL000 = Scharfgeschaltet.
Packet 300 ist das Antwort, wo auch Daten eingebettet sind.
Um das zu erreichen, hätte ich also nur die Möglichkeit am Betriebsystem vorbei zu programmieren und einen eigenen Transportschicht zu implementieren?
Code: Alles auswählen
No. Time Source Destination Protocol Info
296 103.122617 192.168.100.240 192.168.100.103 TCP scp-config > scp-config [SYN] Seq=0 Win=2047 Len=0 MSS=1024
Frame 296 (60 bytes on wire, 60 bytes captured)
Arrival Time: Jun 14, 2010 16:16:30.838467000
[Time delta from previous captured frame: 27.824148000 seconds]
[Time delta from previous displayed frame: 27.824148000 seconds]
[Time since reference or first frame: 103.122617000 seconds]
Frame Number: 296
Frame Length: 60 bytes
Capture Length: 60 bytes
[Frame is marked: False]
[Protocols in frame: eth:ip:tcp]
[Coloring Rule Name: TCP SYN/FIN]
[Coloring Rule String: tcp.flags & 0x02 || tcp.flags.fin == 1]
Ethernet II, Src: Pronet_99:cc:33 (00:20:4a:99:cc:33), Dst: Shuttle_33:91:3e (00:30:1b:33:91:3e)
Destination: Shuttle_33:91:3e (00:30:1b:33:91:3e)
Address: Shuttle_33:91:3e (00:30:1b:33:91:3e)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Source: Pronet_99:cc:33 (00:20:4a:99:cc:33)
Address: Pronet_99:cc:33 (00:20:4a:99:cc:33)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Trailer: 0000
Internet Protocol, Src: 192.168.100.240 (192.168.100.240), Dst: 192.168.100.103 (192.168.100.103)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 44
Identification: 0x256b (9579)
Flags: 0x02 (Don't Fragment)
0.. = Reserved bit: Not Set
.1. = Don't fragment: Set
..0 = More fragments: Not Set
Fragment offset: 0
Time to live: 64
Protocol: TCP (0x06)
Header checksum: 0xcab8 [correct]
[Good: True]
[Bad : False]
Source: 192.168.100.240 (192.168.100.240)
Destination: 192.168.100.103 (192.168.100.103)
Transmission Control Protocol, Src Port: scp-config (10001), Dst Port: scp-config (10001), Seq: 0, Len: 0
Source port: scp-config (10001)
Destination port: scp-config (10001)
[Stream index: 1]
Sequence number: 0 (relative sequence number)
Header length: 24 bytes
Flags: 0x02 (SYN)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...0 .... = Acknowledgement: Not set
.... 0... = Push: Not set
.... .0.. = Reset: Not set
.... ..1. = Syn: Set
[Expert Info (Chat/Sequence): Connection establish request (SYN): server port scp-config]
[Message: Connection establish request (SYN): server port scp-config]
[Severity level: Chat]
[Group: Sequence]
.... ...0 = Fin: Not set
Window size: 2047
Checksum: 0x21cd [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
Options: (4 bytes)
Maximum segment size: 1024 bytes
0000 00 30 1b 33 91 3e 00 20 4a 99 cc 33 08 00 45 00 .0.3.>. J..3..E.
0010 00 2c 25 6b 40 00 40 06 ca b8 c0 a8 64 f0 c0 a8 .,%k@.@.....d...
0020 64 67 27 11 27 11 c9 ad 0d 96 00 00 00 00 60 02 dg'.'.........`.
0030 07 ff 21 cd 00 00 02 04 04 00 00 00 ..!.........
No. Time Source Destination Protocol Info
297 103.122699 192.168.100.103 192.168.100.240 TCP scp-config > scp-config [SYN, ACK] Seq=0 Ack=1 Win=64240 Len=0 MSS=1460
Frame 297 (58 bytes on wire, 58 bytes captured)
Arrival Time: Jun 14, 2010 16:16:30.838549000
[Time delta from previous captured frame: 0.000082000 seconds]
[Time delta from previous displayed frame: 0.000082000 seconds]
[Time since reference or first frame: 103.122699000 seconds]
Frame Number: 297
Frame Length: 58 bytes
Capture Length: 58 bytes
[Frame is marked: False]
[Protocols in frame: eth:ip:tcp]
[Coloring Rule Name: TCP SYN/FIN]
[Coloring Rule String: tcp.flags & 0x02 || tcp.flags.fin == 1]
Ethernet II, Src: Shuttle_33:91:3e (00:30:1b:33:91:3e), Dst: Pronet_99:cc:33 (00:20:4a:99:cc:33)
Destination: Pronet_99:cc:33 (00:20:4a:99:cc:33)
Address: Pronet_99:cc:33 (00:20:4a:99:cc:33)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Source: Shuttle_33:91:3e (00:30:1b:33:91:3e)
Address: Shuttle_33:91:3e (00:30:1b:33:91:3e)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol, Src: 192.168.100.103 (192.168.100.103), Dst: 192.168.100.240 (192.168.100.240)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 44
Identification: 0xdbe6 (56294)
Flags: 0x02 (Don't Fragment)
0.. = Reserved bit: Not Set
.1. = Don't fragment: Set
..0 = More fragments: Not Set
Fragment offset: 0
Time to live: 128
Protocol: TCP (0x06)
Header checksum: 0xd43c [correct]
[Good: True]
[Bad : False]
Source: 192.168.100.103 (192.168.100.103)
Destination: 192.168.100.240 (192.168.100.240)
Transmission Control Protocol, Src Port: scp-config (10001), Dst Port: scp-config (10001), Seq: 0, Ack: 1, Len: 0
Source port: scp-config (10001)
Destination port: scp-config (10001)
[Stream index: 1]
Sequence number: 0 (relative sequence number)
Acknowledgement number: 1 (relative ack number)
Header length: 24 bytes
Flags: 0x12 (SYN, ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgement: Set
.... 0... = Push: Not set
.... .0.. = Reset: Not set
.... ..1. = Syn: Set
[Expert Info (Chat/Sequence): Connection establish acknowledge (SYN+ACK): server port scp-config]
[Message: Connection establish acknowledge (SYN+ACK): server port scp-config]
[Severity level: Chat]
[Group: Sequence]
.... ...0 = Fin: Not set
Window size: 64240
Checksum: 0x5d23 [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
Options: (4 bytes)
Maximum segment size: 1460 bytes
[SEQ/ACK analysis]
[This is an ACK to the segment in frame: 296]
[The RTT to ACK the segment was: 0.000082000 seconds]
0000 00 20 4a 99 cc 33 00 30 1b 33 91 3e 08 00 45 00 . J..3.0.3.>..E.
0010 00 2c db e6 40 00 80 06 d4 3c c0 a8 64 67 c0 a8 .,..@....<..dg..
0020 64 f0 27 11 27 11 ff f3 cf fe c9 ad 0d 97 60 12 d.'.'.........`.
0030 fa f0 5d 23 00 00 02 04 05 b4 ..]#......
No. Time Source Destination Protocol Info
298 103.122884 192.168.100.240 192.168.100.103 TCP scp-config > scp-config [ACK] Seq=1 Ack=1 Win=2047 Len=0
Frame 298 (60 bytes on wire, 60 bytes captured)
Arrival Time: Jun 14, 2010 16:16:30.838734000
[Time delta from previous captured frame: 0.000185000 seconds]
[Time delta from previous displayed frame: 0.000185000 seconds]
[Time since reference or first frame: 103.122884000 seconds]
Frame Number: 298
Frame Length: 60 bytes
Capture Length: 60 bytes
[Frame is marked: False]
[Protocols in frame: eth:ip:tcp]
[Coloring Rule Name: TCP]
[Coloring Rule String: tcp]
Ethernet II, Src: Pronet_99:cc:33 (00:20:4a:99:cc:33), Dst: Shuttle_33:91:3e (00:30:1b:33:91:3e)
Destination: Shuttle_33:91:3e (00:30:1b:33:91:3e)
Address: Shuttle_33:91:3e (00:30:1b:33:91:3e)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Source: Pronet_99:cc:33 (00:20:4a:99:cc:33)
Address: Pronet_99:cc:33 (00:20:4a:99:cc:33)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Trailer: 000000000000
Internet Protocol, Src: 192.168.100.240 (192.168.100.240), Dst: 192.168.100.103 (192.168.100.103)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 40
Identification: 0x256c (9580)
Flags: 0x02 (Don't Fragment)
0.. = Reserved bit: Not Set
.1. = Don't fragment: Set
..0 = More fragments: Not Set
Fragment offset: 0
Time to live: 64
Protocol: TCP (0x06)
Header checksum: 0xcabb [correct]
[Good: True]
[Bad : False]
Source: 192.168.100.240 (192.168.100.240)
Destination: 192.168.100.103 (192.168.100.103)
Transmission Control Protocol, Src Port: scp-config (10001), Dst Port: scp-config (10001), Seq: 1, Ack: 1, Len: 0
Source port: scp-config (10001)
Destination port: scp-config (10001)
[Stream index: 1]
Sequence number: 1 (relative sequence number)
Acknowledgement number: 1 (relative ack number)
Header length: 20 bytes
Flags: 0x10 (ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgement: Set
.... 0... = Push: Not set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 2047
Checksum: 0x67d2 [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
[SEQ/ACK analysis]
[This is an ACK to the segment in frame: 297]
[The RTT to ACK the segment was: 0.000185000 seconds]
0000 00 30 1b 33 91 3e 00 20 4a 99 cc 33 08 00 45 00 .0.3.>. J..3..E.
0010 00 28 25 6c 40 00 40 06 ca bb c0 a8 64 f0 c0 a8 .(%l@.@.....d...
0020 64 67 27 11 27 11 c9 ad 0d 97 ff f3 cf ff 50 10 dg'.'.........P.
0030 07 ff 67 d2 00 00 00 00 00 00 00 00 ..g.........
No. Time Source Destination Protocol Info
299 103.467664 192.168.100.240 192.168.100.103 TCP scp-config > scp-config [PSH, ACK] Seq=1 Ack=1 Win=2047 Len=24
Frame 299 (78 bytes on wire, 78 bytes captured)
Arrival Time: Jun 14, 2010 16:16:31.183514000
[Time delta from previous captured frame: 0.344780000 seconds]
[Time delta from previous displayed frame: 0.344780000 seconds]
[Time since reference or first frame: 103.467664000 seconds]
Frame Number: 299
Frame Length: 78 bytes
Capture Length: 78 bytes
[Frame is marked: False]
[Protocols in frame: eth:ip:tcp:data]
[Coloring Rule Name: TCP]
[Coloring Rule String: tcp]
Ethernet II, Src: Pronet_99:cc:33 (00:20:4a:99:cc:33), Dst: Shuttle_33:91:3e (00:30:1b:33:91:3e)
Destination: Shuttle_33:91:3e (00:30:1b:33:91:3e)
Address: Shuttle_33:91:3e (00:30:1b:33:91:3e)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Source: Pronet_99:cc:33 (00:20:4a:99:cc:33)
Address: Pronet_99:cc:33 (00:20:4a:99:cc:33)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol, Src: 192.168.100.240 (192.168.100.240), Dst: 192.168.100.103 (192.168.100.103)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 64
Identification: 0x256e (9582)
Flags: 0x02 (Don't Fragment)
0.. = Reserved bit: Not Set
.1. = Don't fragment: Set
..0 = More fragments: Not Set
Fragment offset: 0
Time to live: 64
Protocol: TCP (0x06)
Header checksum: 0xcaa1 [correct]
[Good: True]
[Bad : False]
Source: 192.168.100.240 (192.168.100.240)
Destination: 192.168.100.103 (192.168.100.103)
Transmission Control Protocol, Src Port: scp-config (10001), Dst Port: scp-config (10001), Seq: 1, Ack: 1, Len: 24
Source port: scp-config (10001)
Destination port: scp-config (10001)
[Stream index: 1]
Sequence number: 1 (relative sequence number)
[Next sequence number: 25 (relative sequence number)]
Acknowledgement number: 1 (relative ack number)
Header length: 20 bytes
Flags: 0x18 (PSH, ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgement: Set
.... 1... = Push: Set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 2047
Checksum: 0x0c2e [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
[SEQ/ACK analysis]
[Number of bytes in flight: 24]
Data (24 bytes)
Data: 33C4233939393918C84E726931434C3030306C40308F0D0A
[Length: 24]
0000 00 30 1b 33 91 3e 00 20 4a 99 cc 33 08 00 45 00 .0.3.>. J..3..E.
0010 00 40 25 6e 40 00 40 06 ca a1 c0 a8 64 f0 c0 a8 .@%n@.@.....d...
0020 64 67 27 11 27 11 c9 ad 0d 97 ff f3 cf ff 50 18 dg'.'.........P.
0030 07 ff 0c 2e 00 00 33 c4 23 39 39 39 39 18 c8 4e ......3.#9999..N
0040 72 69 31 43 4c 30 30 30 6c 40 30 8f 0d 0a ri1CL000l@0...
No. Time Source Destination Protocol Info
300 103.472539 192.168.100.103 192.168.100.240 TCP scp-config > scp-config [PSH, ACK] Seq=1 Ack=25 Win=64216 Len=3
Frame 300 (57 bytes on wire, 57 bytes captured)
Arrival Time: Jun 14, 2010 16:16:31.188389000
[Time delta from previous captured frame: 0.004875000 seconds]
[Time delta from previous displayed frame: 0.004875000 seconds]
[Time since reference or first frame: 103.472539000 seconds]
Frame Number: 300
Frame Length: 57 bytes
Capture Length: 57 bytes
[Frame is marked: False]
[Protocols in frame: eth:ip:tcp:data]
[Coloring Rule Name: TCP]
[Coloring Rule String: tcp]
Ethernet II, Src: Shuttle_33:91:3e (00:30:1b:33:91:3e), Dst: Pronet_99:cc:33 (00:20:4a:99:cc:33)
Destination: Pronet_99:cc:33 (00:20:4a:99:cc:33)
Address: Pronet_99:cc:33 (00:20:4a:99:cc:33)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Source: Shuttle_33:91:3e (00:30:1b:33:91:3e)
Address: Shuttle_33:91:3e (00:30:1b:33:91:3e)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol, Src: 192.168.100.103 (192.168.100.103), Dst: 192.168.100.240 (192.168.100.240)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 43
Identification: 0xdc0b (56331)
Flags: 0x02 (Don't Fragment)
0.. = Reserved bit: Not Set
.1. = Don't fragment: Set
..0 = More fragments: Not Set
Fragment offset: 0
Time to live: 128
Protocol: TCP (0x06)
Header checksum: 0xd418 [correct]
[Good: True]
[Bad : False]
Source: 192.168.100.103 (192.168.100.103)
Destination: 192.168.100.240 (192.168.100.240)
Transmission Control Protocol, Src Port: scp-config (10001), Dst Port: scp-config (10001), Seq: 1, Ack: 25, Len: 3
Source port: scp-config (10001)
Destination port: scp-config (10001)
[Stream index: 1]
Sequence number: 1 (relative sequence number)
[Next sequence number: 4 (relative sequence number)]
Acknowledgement number: 25 (relative ack number)
Header length: 20 bytes
Flags: 0x18 (PSH, ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgement: Set
.... 1... = Push: Set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 64216
Checksum: 0x64c8 [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
[SEQ/ACK analysis]
[This is an ACK to the segment in frame: 299]
[The RTT to ACK the segment was: 0.004875000 seconds]
[Number of bytes in flight: 3]
Data (3 bytes)
Data: 060D0A
[Length: 3]
0000 00 20 4a 99 cc 33 00 30 1b 33 91 3e 08 00 45 00 . J..3.0.3.>..E.
0010 00 2b dc 0b 40 00 80 06 d4 18 c0 a8 64 67 c0 a8 .+..@.......dg..
0020 64 f0 27 11 27 11 ff f3 cf ff c9 ad 0d af 50 18 d.'.'.........P.
0030 fa d8 64 c8 00 00 06 0d 0a ..d......
No. Time Source Destination Protocol Info
301 103.483606 192.168.100.240 192.168.100.103 TCP scp-config > scp-config [ACK] Seq=25 Ack=4 Win=2047 Len=0
Frame 301 (60 bytes on wire, 60 bytes captured)
Arrival Time: Jun 14, 2010 16:16:31.199456000
[Time delta from previous captured frame: 0.011067000 seconds]
[Time delta from previous displayed frame: 0.011067000 seconds]
[Time since reference or first frame: 103.483606000 seconds]
Frame Number: 301
Frame Length: 60 bytes
Capture Length: 60 bytes
[Frame is marked: False]
[Protocols in frame: eth:ip:tcp]
[Coloring Rule Name: TCP]
[Coloring Rule String: tcp]
Ethernet II, Src: Pronet_99:cc:33 (00:20:4a:99:cc:33), Dst: Shuttle_33:91:3e (00:30:1b:33:91:3e)
Destination: Shuttle_33:91:3e (00:30:1b:33:91:3e)
Address: Shuttle_33:91:3e (00:30:1b:33:91:3e)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Source: Pronet_99:cc:33 (00:20:4a:99:cc:33)
Address: Pronet_99:cc:33 (00:20:4a:99:cc:33)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Trailer: 000000000000
Internet Protocol, Src: 192.168.100.240 (192.168.100.240), Dst: 192.168.100.103 (192.168.100.103)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 40
Identification: 0x256f (9583)
Flags: 0x02 (Don't Fragment)
0.. = Reserved bit: Not Set
.1. = Don't fragment: Set
..0 = More fragments: Not Set
Fragment offset: 0
Time to live: 64
Protocol: TCP (0x06)
Header checksum: 0xcab8 [correct]
[Good: True]
[Bad : False]
Source: 192.168.100.240 (192.168.100.240)
Destination: 192.168.100.103 (192.168.100.103)
Transmission Control Protocol, Src Port: scp-config (10001), Dst Port: scp-config (10001), Seq: 25, Ack: 4, Len: 0
Source port: scp-config (10001)
Destination port: scp-config (10001)
[Stream index: 1]
Sequence number: 25 (relative sequence number)
Acknowledgement number: 4 (relative ack number)
Header length: 20 bytes
Flags: 0x10 (ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgement: Set
.... 0... = Push: Not set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 2047
Checksum: 0x67b7 [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
[SEQ/ACK analysis]
[This is an ACK to the segment in frame: 300]
[The RTT to ACK the segment was: 0.011067000 seconds]
0000 00 30 1b 33 91 3e 00 20 4a 99 cc 33 08 00 45 00 .0.3.>. J..3..E.
0010 00 28 25 6f 40 00 40 06 ca b8 c0 a8 64 f0 c0 a8 .(%o@.@.....d...
0020 64 67 27 11 27 11 c9 ad 0d af ff f3 d0 02 50 10 dg'.'.........P.
0030 07 ff 67 b7 00 00 00 00 00 00 00 00 ..g.........
Ok, ich sehe was du meinst... die schlechte Nachricht: das kannst du definitiv mit Qt (und auch sonst mit der normalen Betriebssystem-API) nicht beeinflussen.
Die gute Nachricht: das brauchst du IMHO auch gar nicht, weil es dem Client (der Alarmanlage) eigentlich egal sein müsste, ob die Daten gleich mit dem ACK-Packet geliefert werden oder ob sie später in einem separaten ACK/PSH-Packet nachkommen (was IMHO eigentlich eher der Normalfall ist).
Die Frage lautet also: was genau geschieht denn, wenn du diese drei Bytes sendest? Ich meine: wie kommst du darauf, das der Client mit der Antwort Probleme hat?
Die gute Nachricht: das brauchst du IMHO auch gar nicht, weil es dem Client (der Alarmanlage) eigentlich egal sein müsste, ob die Daten gleich mit dem ACK-Packet geliefert werden oder ob sie später in einem separaten ACK/PSH-Packet nachkommen (was IMHO eigentlich eher der Normalfall ist).
Die Frage lautet also: was genau geschieht denn, wenn du diese drei Bytes sendest? Ich meine: wie kommst du darauf, das der Client mit der Antwort Probleme hat?
wenn ich einfach diese Bytes sende, passiert nichts, bis ich nicht die Verbindung disconnecte (auch nach längeren Wartezeit). Wenn ich nach 10sek trenne, kommt eine Wiederholung der Meldung, wenn ich viel später trenne, kommt Kommunikationsfehler per Telefonübertragung.
Ich habe mich durch viele Seiten gegooglet. Dabei habe ich was von
Dalayed ACK
und von http://de.wikipedia.org/wiki/Nagle-Algorithmus
Wenn ich das richtig verstehe, geht es unteranderem darum, nicht für jedes Packet ein ACK gesendet werden soll. Desweiteren soll nicht nur ein kleines leeres ACK versendet werden, sondern es sollten sich Daten in der ACK befinden.
D.h. das währe genau das, was ich suche. Das sei wohl POSIX. Aber wie kann ich das anwenden?
Hier steht auch was dazu http://doc.qt.nokia.com/4.6/qabstractso ... ption-enum
aber wie ich das verstehe, ist das bei QT schon an. Muss ich gleich mal testen.
Das ist der Inhalt meiner Übertragung:
Wie man sehen kann, Daten kommen an, ACK ohne Daten werden gesendet und dann erst werden mein per write geschriebene Daten gesendet, was aber nicht als ACK für das vorhergehendes Packet ist.
Ich habe mich durch viele Seiten gegooglet. Dabei habe ich was von
Dalayed ACK
und von http://de.wikipedia.org/wiki/Nagle-Algorithmus
Wenn ich das richtig verstehe, geht es unteranderem darum, nicht für jedes Packet ein ACK gesendet werden soll. Desweiteren soll nicht nur ein kleines leeres ACK versendet werden, sondern es sollten sich Daten in der ACK befinden.
D.h. das währe genau das, was ich suche. Das sei wohl POSIX. Aber wie kann ich das anwenden?
Hier steht auch was dazu http://doc.qt.nokia.com/4.6/qabstractso ... ption-enum
aber wie ich das verstehe, ist das bei QT schon an. Muss ich gleich mal testen.
Das ist der Inhalt meiner Übertragung:
Code: Alles auswählen
No. Time Source Destination Protocol Info
4 0.376195 192.168.100.240 192.168.178.39 TCP scp-config > scp-config [PSH, ACK] Seq=1 Ack=1 Win=2047 Len=24
Frame 4 (78 bytes on wire, 78 bytes captured)
Arrival Time: Jun 19, 2010 15:53:55.731934000
[Time delta from previous captured frame: 0.327760000 seconds]
[Time delta from previous displayed frame: 0.327760000 seconds]
[Time since reference or first frame: 0.376195000 seconds]
Frame Number: 4
Frame Length: 78 bytes
Capture Length: 78 bytes
[Frame is marked: False]
[Protocols in frame: eth:ip:tcp:data]
[Coloring Rule Name: TCP]
[Coloring Rule String: tcp]
Ethernet II, Src: Avm_fe:b0:8d (00:1f:3f:fe:b0:8d), Dst: AsustekC_8d:c8:5f (00:1f:c6:8d:c8:5f)
Destination: AsustekC_8d:c8:5f (00:1f:c6:8d:c8:5f)
Address: AsustekC_8d:c8:5f (00:1f:c6:8d:c8:5f)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Source: Avm_fe:b0:8d (00:1f:3f:fe:b0:8d)
Address: Avm_fe:b0:8d (00:1f:3f:fe:b0:8d)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol, Src: 192.168.100.240 (192.168.100.240), Dst: 192.168.178.39 (192.168.178.39)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 64
Identification: 0xcdde (52702)
Flags: 0x02 (Don't Fragment)
0.. = Reserved bit: Not Set
.1. = Don't fragment: Set
..0 = More fragments: Not Set
Fragment offset: 0
Time to live: 62
Protocol: TCP (0x06)
Header checksum: 0xd670 [correct]
[Good: True]
[Bad : False]
Source: 192.168.100.240 (192.168.100.240)
Destination: 192.168.178.39 (192.168.178.39)
Transmission Control Protocol, Src Port: scp-config (10001), Dst Port: scp-config (10001), Seq: 1, Ack: 1, Len: 24
Source port: scp-config (10001)
Destination port: scp-config (10001)
[Stream index: 0]
Sequence number: 1 (relative sequence number)
[Next sequence number: 25 (relative sequence number)]
Acknowledgement number: 1 (relative ack number)
Header length: 20 bytes
Flags: 0x18 (PSH, ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgement: Set
.... 1... = Push: Set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 2047
Checksum: 0x9c91 [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
[SEQ/ACK analysis]
[Number of bytes in flight: 24]
Data (24 bytes)
Data: 33C4233939393918C84E726931434C3030306C40308F0D0A
[Length: 24]
0000 00 1f c6 8d c8 5f 00 1f 3f fe b0 8d 08 00 45 00 ....._..?.....E.
0010 00 40 cd de 40 00 3e 06 d6 70 c0 a8 64 f0 c0 a8 .@..@.>..p..d...
0020 b2 27 27 11 27 11 23 ed c1 ea 6a 74 78 c8 50 18 .''.'.#...jtx.P.
0030 07 ff 9c 91 00 00 33 c4 23 39 39 39 39 18 c8 4e ......3.#9999..N
0040 72 69 31 43 4c 30 30 30 6c 40 30 8f 0d 0a ri1CL000l@0...
No. Time Source Destination Protocol Info
5 0.376279 192.168.178.39 192.168.100.240 TCP scp-config > scp-config [ACK] Seq=1 Ack=25 Win=5840 Len=0
Frame 5 (54 bytes on wire, 54 bytes captured)
Arrival Time: Jun 19, 2010 15:53:55.732018000
[Time delta from previous captured frame: 0.000084000 seconds]
[Time delta from previous displayed frame: 0.000084000 seconds]
[Time since reference or first frame: 0.376279000 seconds]
Frame Number: 5
Frame Length: 54 bytes
Capture Length: 54 bytes
[Frame is marked: False]
[Protocols in frame: eth:ip:tcp]
[Coloring Rule Name: TCP]
[Coloring Rule String: tcp]
Ethernet II, Src: AsustekC_8d:c8:5f (00:1f:c6:8d:c8:5f), Dst: Avm_fe:b0:8d (00:1f:3f:fe:b0:8d)
Destination: Avm_fe:b0:8d (00:1f:3f:fe:b0:8d)
Address: Avm_fe:b0:8d (00:1f:3f:fe:b0:8d)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Source: AsustekC_8d:c8:5f (00:1f:c6:8d:c8:5f)
Address: AsustekC_8d:c8:5f (00:1f:c6:8d:c8:5f)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol, Src: 192.168.178.39 (192.168.178.39), Dst: 192.168.100.240 (192.168.100.240)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 40
Identification: 0x9193 (37267)
Flags: 0x02 (Don't Fragment)
0.. = Reserved bit: Not Set
.1. = Don't fragment: Set
..0 = More fragments: Not Set
Fragment offset: 0
Time to live: 64
Protocol: TCP (0x06)
Header checksum: 0x10d4 [correct]
[Good: True]
[Bad : False]
Source: 192.168.178.39 (192.168.178.39)
Destination: 192.168.100.240 (192.168.100.240)
Transmission Control Protocol, Src Port: scp-config (10001), Dst Port: scp-config (10001), Seq: 1, Ack: 25, Len: 0
Source port: scp-config (10001)
Destination port: scp-config (10001)
[Stream index: 0]
Sequence number: 1 (relative sequence number)
Acknowledgement number: 25 (relative ack number)
Header length: 20 bytes
Flags: 0x10 (ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgement: Set
.... 0... = Push: Not set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 5840
Checksum: 0xe94c [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
[SEQ/ACK analysis]
[This is an ACK to the segment in frame: 4]
[The RTT to ACK the segment was: 0.000084000 seconds]
0000 00 1f 3f fe b0 8d 00 1f c6 8d c8 5f 08 00 45 00 ..?........_..E.
0010 00 28 91 93 40 00 40 06 10 d4 c0 a8 b2 27 c0 a8 .(..@.@......'..
0020 64 f0 27 11 27 11 6a 74 78 c8 23 ed c2 02 50 10 d.'.'.jtx.#...P.
0030 16 d0 e9 4c 00 00 ...L..
No. Time Source Destination Protocol Info
6 0.376720 192.168.178.39 192.168.100.240 TCP scp-config > scp-config [PSH, ACK] Seq=1 Ack=25 Win=5840 Len=3
Frame 6 (57 bytes on wire, 57 bytes captured)
Arrival Time: Jun 19, 2010 15:53:55.732459000
[Time delta from previous captured frame: 0.000441000 seconds]
[Time delta from previous displayed frame: 0.000441000 seconds]
[Time since reference or first frame: 0.376720000 seconds]
Frame Number: 6
Frame Length: 57 bytes
Capture Length: 57 bytes
[Frame is marked: False]
[Protocols in frame: eth:ip:tcp:data]
[Coloring Rule Name: TCP]
[Coloring Rule String: tcp]
Ethernet II, Src: AsustekC_8d:c8:5f (00:1f:c6:8d:c8:5f), Dst: Avm_fe:b0:8d (00:1f:3f:fe:b0:8d)
Destination: Avm_fe:b0:8d (00:1f:3f:fe:b0:8d)
Address: Avm_fe:b0:8d (00:1f:3f:fe:b0:8d)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Source: AsustekC_8d:c8:5f (00:1f:c6:8d:c8:5f)
Address: AsustekC_8d:c8:5f (00:1f:c6:8d:c8:5f)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol, Src: 192.168.178.39 (192.168.178.39), Dst: 192.168.100.240 (192.168.100.240)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 43
Identification: 0x9194 (37268)
Flags: 0x02 (Don't Fragment)
0.. = Reserved bit: Not Set
.1. = Don't fragment: Set
..0 = More fragments: Not Set
Fragment offset: 0
Time to live: 64
Protocol: TCP (0x06)
Header checksum: 0x10d0 [correct]
[Good: True]
[Bad : False]
Source: 192.168.178.39 (192.168.178.39)
Destination: 192.168.100.240 (192.168.100.240)
Transmission Control Protocol, Src Port: scp-config (10001), Dst Port: scp-config (10001), Seq: 1, Ack: 25, Len: 3
Source port: scp-config (10001)
Destination port: scp-config (10001)
[Stream index: 0]
Sequence number: 1 (relative sequence number)
[Next sequence number: 4 (relative sequence number)]
Acknowledgement number: 25 (relative ack number)
Header length: 20 bytes
Flags: 0x18 (PSH, ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgement: Set
.... 1... = Push: Set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 5840
Checksum: 0x9886 [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
[SEQ/ACK analysis]
[Number of bytes in flight: 3]
Data (3 bytes)
Data: 060D0A
[Length: 3]
0000 00 1f 3f fe b0 8d 00 1f c6 8d c8 5f 08 00 45 00 ..?........_..E.
0010 00 2b 91 94 40 00 40 06 10 d0 c0 a8 b2 27 c0 a8 .+..@.@......'..
0020 64 f0 27 11 27 11 6a 74 78 c8 23 ed c2 02 50 18 d.'.'.jtx.#...P.
0030 16 d0 98 86 00 00 06 0d 0a .........