Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TCP握手失败-什么';服务器有问题';你的答复是什么?_Tcp_Client Server_Tcpserver_Handshake_Handshaking - Fatal编程技术网

TCP握手失败-什么';服务器有问题';你的答复是什么?

TCP握手失败-什么';服务器有问题';你的答复是什么?,tcp,client-server,tcpserver,handshake,handshaking,Tcp,Client Server,Tcpserver,Handshake,Handshaking,我正在用芯片和芯片来构建一个服务器。芯片通过以太网连接到我的电脑。目前,我正在尝试设置TCP连接,稍后我将在其上构建HTTP连接。我以前从未使用过TCP 我只在嵌入式设备上实现TCP,而不是在PC上。 发送所需的ARP请求和回复后,我打开浏览器,输入芯片的IP地址,然后按enter键。在wireshark中,我看到创建了一个带有SYN标志的TCP request1。我相信SYN标志表示一个新的握手开始,所以这很好,不是吗 我的芯片的reply1已启用SYN和ACK标志。从中,这是答复SYN标记的

我正在用芯片和芯片来构建一个服务器。芯片通过以太网连接到我的电脑。目前,我正在尝试设置TCP连接,稍后我将在其上构建HTTP连接。我以前从未使用过TCP

我只在嵌入式设备上实现TCP,而不是在PC上。

发送所需的ARP请求和回复后,我打开浏览器,输入芯片的IP地址,然后按enter键。在wireshark中,我看到创建了一个带有SYN标志的TCP request1。我相信SYN标志表示一个新的握手开始,所以这很好,不是吗

我的芯片的reply1已启用SYN和ACK标志。从中,这是答复SYN标记的请求的正确方法。芯片发送的确认号是正确的。现在,根据相同的参考,芯片应该得到一个启用ACK标志的应答

然而,这个过程似乎又重新开始了:PC发送的数据包与第一个数据包完全相同,只是“标识”发生了变化。我将我的芯片编程为当它在同一个套接字上不断收到SYN请求时停止应答,所以这是传输的结束,在浏览器中我读到无法联系到服务器

此连接同时在四个插座上进行,所有插座都具有相同的结果

由于我只是将我的PC用作客户机(我的以太网端口/驱动程序没有问题),问题一定是服务器的问题,因此是第二个数据包的问题

第二个数据包有什么问题?Wireshark不会将任何内容标记为不正确,但客户端不会发送ACK


1:这是wireshark收集的数据包:

Client: 3085 > 80 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=8 TSval=0 TSecr=0 SACK_PERM=1
0000  00 13 d4 c6 53 16 00 1a  a0 03 c7 21 08 00 45 00   ....S... ...!..E.
0010  00 40 de 48 40 00 80 06  9a e1 c0 a8 00 01 c0 a8   .@.H@... ........
0020  00 3c 0c 0d 00 50 88 ab  7e 18 00 00 00 00 b0 02   .<...P.. ~.......
0030  ff ff a1 4f 00 00 02 04  05 b4 01 03 03 03 01 01   ...O.... ........
0040  08 0a 00 00 00 00 00 00  00 00 01 01 04 02         ........ ......  

Server: 80 > 3085 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460 WS=8
0000  00 1a a0 03 c7 21 00 13  d4 c6 53 16 08 00 45 00   .....!.. ..S...E.
0010  00 30 88 10 40 00 7f 06  f2 29 c0 a8 00 3c c0 a8   .0..@... .)...<..
0020  00 01 00 50 0c 0d 00 00  00 01 88 ab 7e 19 70 12   ...P.... ....~.p.
0030  ff ff ef 77 00 00 02 04  05 b4 01 03 03 03         ...w.... ......  

Client: 3085 > 80 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=8 TSval=0 TSecr=0 SACK_PERM=1
0000  00 13 d4 c6 53 16 00 1a  a0 03 c7 21 08 00 45 00   ....S... ...!..E.
0010  00 40 de 6f 40 00 80 06  9a ba c0 a8 00 01 c0 a8   .@.o@... ........
0020  00 3c 0c 0d 00 50 88 ab  7e 18 00 00 00 00 b0 02   .<...P.. ~.......
0030  ff ff a1 4f 00 00 02 04  05 b4 01 03 03 03 01 01   ...O.... ........
0040  08 0a 00 00 00 00 00 00  00 00 01 01 04 02         ........ ......  
Client:3085>80[SYN]Seq=0 Win=65535 Len=0 MSS=1460 WS=8 TSval=0 TSecr=0 SACK\u PERM=1
0000 00 13 d4 c6 53 16 00 1a a0 03 c7 21 08 00 45 00…S。。。!。。E
0010 00 40 de 48 40 00 80 06 9a e1 c0 a8 00 01 c0 a8@。H@... ........
002003C0C0D0005088AB7E1800B002。3085[SYN,ACK]序列=0 ACK=1 Win=65535 Len=0 MSS=1460 WS=8
0000 00 1a a0 03 c7 21 00 13 d4 c6 53 16 08 00 45 00。。S…E。
0010 00 30 88 10 40 00 7f 06 f2 29 c0 a8 00 3c c0 a8.0…)。。。80[SYN]序列=0 Win=65535 Len=0 MSS=1460 WS=8 TSval=0 TSecr=0 SACK_PERM=1
0000 00 13 d4 c6 53 16 00 1a a0 03 c7 21 08 00 45 00…S。。。!。。E
0010 00 40 de 6f 40 00 80 06 9a ba c0 a8 00 01 c0 a8@。o@... ........

00200 3c 0c 0d 00 50 88 ab 7e 18 00 00 00 b0 02。我使用text2pcap将您的捕获加载到wireshark中

如果启用TCP校验和验证和绝对序列号,您将在芯片的SYN-ACK数据包中看到错误的TCP校验和


另外,从绝对序列号0开始的芯片非常弱。

您必须在Wireshark中检查更详细/信息模式。Wireshark可以以比hexdump更合理的方式为您轻松解码数据包。我怀疑很多人是否真的会试图理解这个问题。更不用说没有人会从hexdump手动重新计算校验和。很有趣,实际上5分钟前我发现了同样的事情!非常感谢你的工作@CamilStaps如果你发现了一个解决方案,你应该分享。当这个问题出现时,你是否正在写一个答案?@JanDvorak这仅仅是5分钟前(没有隐喻),我还在检查这是否是问题所在(例如,不是谷歌转让的问题)。当然,否则我自己会尽快写一个答案的!我现在可以确认这解决了问题。再次感谢你的工作,很抱歉,我自己也发现了这个问题。
Client: 49562 > 80 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
0000  00 1a a0 03 c7 21 08 9e  01 30 ee 69 08 00 45 00   .....!.. .0.i..E.
0010  00 34 32 3f 40 00 80 06  38 ab c0 a8 00 3c 4a 7d   .42?@... 8....<J}
0020  84 78 c1 9a 00 50 74 b8  31 9c 00 00 00 00 80 02   .x...Pt. 1.......
0030  20 00 56 f7 00 00 02 04  05 b4 01 03 03 08 01 01    .V..... ........
0040  04 02                                              ..               

Server: 80 > 49562 [SYN, ACK] Seq=0 Ack=1 Win=62920 Len=0 MSS=1430 SACK_PERM=1 WS=64
0000  08 9e 01 30 ee 69 00 1a  a0 03 c7 21 08 00 45 00   ...0.i.. ...!..E.
0010  00 34 9e e3 00 00 2e 06  5e 07 4a 7d 84 78 c0 a8   .4...... ^.J}.x..
0020  00 3c 00 50 c1 9a f4 5e  12 bc 74 b8 31 9d 80 12   .<.P...^ ..t.1...
0030  f5 c8 7a 22 00 00 02 04  05 96 01 01 04 02 01 03   ..z".... ........
0040  03 06                                              ..               

Client: 49562 > 80 [ACK] Seq=1 Ack=1 Win=65536 Len=0
0000  00 1a a0 03 c7 21 08 9e  01 30 ee 69 08 00 45 00   .....!.. .0.i..E.
0010  00 28 32 49 40 00 80 06  38 ad c0 a8 00 3c 4a 7d   .(2I@... 8....<J}
0020  84 78 c1 9a 00 50 74 b8  31 9d f4 5e 12 bd 50 10   .x...Pt. 1..^..P.
0030  01 00 af 9e 00 00 00 00  00 00 00 00               ........ ....