我有一个有点复杂的设置,但它不起作用,而且我正在努力寻找根本原因。
首先来看一下总体情况:
节点后端是一个运行 JBoss 5 的中型 Windows Azure 工作角色。它正在流出 HTTP 多部分/分块 JSON 数据。
节点前端是运行 JBoss 5 的中型 Windows Azure 工作角色。它从后端节点请求 HTTP 多部分/分块 JSON 数据,然后通过 http 再次发布该数据。
这些流非常直接,可以使用浏览器或 wget 进行测试。
我们观察到,这些流在一段时间后(几小时到几天)就停止工作了。为了追踪这个问题,我在前端(即客户端)启动了一个 wget,并启动了一个 wireshark 来查看发生了什么。Wireshark 设置为转储到文件的环形缓冲区。流速度大约为 100KB/s,因此性能应该不是问题。我观察到的是:wget 的接收窗口从 130000 开始,然后减少到 517 字节。它最终达到 0,然后 wget 在那里停留了相当长一段时间(有时是几秒,有时长达 100 秒),直到它再次接受数据。参见这个 wireshark:
编号 时间 源 目标 协议信息 138300 17:33:47.038970 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=12610206 Win=27 长度=0 138301 17:33:47.069346 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12610206 确认=1 获胜=514 长度=118 138302 17:33:47.069353 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12610324 确认=1 赢=514 长度=119 138303 17:33:47.069358 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12610443 确认=1 获胜=514 长度=118 138304 17:33:47.069362 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12610561 确认=1 获胜=514 长度=109 138305 17:33:47.069366 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12610670 确认=1 获胜=514 长度=126 138306 17:33:47.069370 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12610796 确认=1 获胜=514 长度=115 138307 17:33:47.069374 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12610911 确认=1 Win=514 长度=119 138308 17:33:47.069378 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=12611030 确认=1 赢=514 长度=116 138309 17:33:47.069382 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12611146 确认=1 获胜=514 长度=115 138310 17:33:47.069386 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=12611261 确认=1 Win=514 长度=116 138311 17:33:47.069390 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12611377 确认=1 获胜=514 长度=115 138312 17:33:47.069499 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=12611492 Win=22 长度=0 138313 17:33:47.069569 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12611492 确认=1 获胜=514 长度=132 138314 17:33:47.069573 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12611624 确认=1 获胜=514 长度=121 138315 17:33:47.069577 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12611745 确认=1 赢=514 长度=103 138316 17:33:47.069581 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12611848 确认=1 获胜=514 长度=107 138317 17:33:47.069585 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12611955 确认=1 赢=514 长度=118 138318 17:33:47.069589 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12612073 确认=1 赢=514 长度=118 138319 17:33:47.069593 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12612191 确认=1 获胜=514 长度=117 138320 17:33:47.069597 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12612308 确认=1 获胜=514 长度=126 138321 17:33:47.069601 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12612434 确认=1 获胜=514 长度=108 138322 17:33:47.069605 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12612542 确认=1 赢=514 长度=112 138323 17:33:47.069609 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12612654 确认=1 获胜=514 长度=109 138324 17:33:47.069613 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12612763 确认=1 获胜=514 长度=107 138325 17:33:47.069617 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12612870 确认=1 赢=514 长度=104 138326 17:33:47.069621 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12612974 确认=1 赢=514 长度=115 138327 17:33:47.069625 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12613089 确认=1 赢=514 长度=107 138328 17:33:47.069629 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12613196 确认=1 获胜=514 长度=107 138329 17:33:47.069633 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12613303 确认=1 Win=514 长度=123 138330 17:33:47.069638 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12613426 确认=1 获胜=514 长度=105 138331 17:33:47.069641 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12613531 确认=1 获胜=514 长度=129 138332 17:33:47.069712 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=12613660 Win=14 长度=0 138333 17:33:47.069756 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12613660 确认=1 赢=514 长度=111 138334 17:33:47.069761 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12613771 确认=1 Win=514 长度=114 138335 17:33:47.069765 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12613885 确认=1 赢=514 长度=127 138336 17:33:47.069769 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12614012 确认=1 Win=514 长度=109 138337 17:33:47.069773 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12614121 确认=1 Win=514 长度=107 138338 17:33:47.069777 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12614228 确认=1 获胜=514 长度=106 138339 17:33:47.069781 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12614334 确认=1 获胜=514 长度=120 138340 17:33:47.069785 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12614454 确认=1 获胜=514 长度=110 138341 17:33:47.069789 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12614564 确认=1 获胜=514 长度=114 138342 17:33:47.069793 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12614678 确认=1 赢=514 长度=107 138343 17:33:47.069797 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12614785 确认=1 获胜=514 长度=109 138344 17:33:47.069801 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12614894 确认=1 赢=514 长度=119 138345 17:33:47.069805 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12615013 确认=1 Win=514 长度=113 138346 17:33:47.069809 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12615126 确认=1 获胜=514 长度=116 138347 17:33:47.069813 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12615242 确认=1 赢=514 长度=120 138348 17:33:47.069817 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12615362 确认=1 获胜=514 长度=114 138349 17:33:47.069870 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=12615476 Win=7 长度=0 138350 17:33:47.069908 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12615476 确认=1 赢=514 长度=108 138351 17:33:47.069912 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12615584 确认=1 获胜=514 长度=107 138352 17:33:47.069916 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12615691 确认=1 获胜=514 长度=107 138353 17:33:47.069919 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12615798 确认=1 获胜=514 长度=115 138354 17:33:47.069923 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12615913 确认=1 赢=514 长度=120 138355 17:33:47.069927 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12616033 确认=1 赢=514 长度=107 138356 17:33:47.069931 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12616140 确认=1 赢=514 长度=119 138357 17:33:47.069935 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12616259 确认=1 赢=514 长度=122 138358 17:33:47.069939 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12616381 确认=1 获胜=514 长度=105 138359 17:33:47.069943 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12616486 确认=1 获胜=514 长度=113 138360 17:33:47.069947 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12616599 确认=1 获胜=514 长度=107 138361 17:33:47.069950 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12616706 确认=1 赢=514 长度=114 138362 17:33:47.069954 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12616820 确认=1 赢=514 长度=127 138363 17:33:47.069959 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12616947 确认=1 获胜=514 长度=132 138364 17:33:47.070004 10.211.148.222 94.245.90.204 TCP [TCP ZeroWindow] 52902 > 5284 [ACK] 序列号=1 确认=12617079 Win=0 长度=0 138365 17:33:47.390902 94.245.90.204 10.211.148.222 TCP [TCP ZeroWindowProbe] 5284 > 52902 [ACK] 序列号=12617079 确认=1 赢=514 长度=1 138366 17:33:47.599283 10.211.148.222 94.245.90.204 TCP [TCP ZeroWindow] [TCP ACKed 丢失段] 52902 > 5284 [ACK] Seq=1 Ack=12617080 Win=0 Len=0 138367 17:33:48.203458 94.245.90.204 10.211.148.222 TCP [TCP ZeroWindowProbe] 5284 > 52902 [ACK] 序列号=12617080 确认=1 Win=514 长度=1 138368 17:33:48.411799 10.211.148.222 94.245.90.204 TCP [TCP ZeroWindow] [TCP ACKed 丢失段] 52902 > 5284 [ACK] Seq=1 Ack=12617081 Win=0 Len=0 139055 17:33:50.015857 94.245.90.204 10.211.148.222 TCP [TCP ZeroWindowProbe] 5284 > 52902 [ACK] 序列号=12617081 确认=1 Win=514 长度=1 139056 17:33:50.224262 10.211.148.222 94.245.90.204 TCP [TCP ZeroWindow] [TCP ACKed 丢失段] 52902 > 5284 [ACK] Seq=1 Ack=12617082 Win=0 Len=0 141485 17:33:54.234768 94.245.90.204 10.211.148.222 TCP [TCP ZeroWindowProbe] 5284 > 52902 [ACK] 序列号=12617082 确认=1 Win=514 长度=1 141972 17:33:54.442993 10.211.148.222 94.245.90.204 TCP [TCP ZeroWindow] [TCP ACKed 丢失段] 52902 > 5284 [ACK] Seq=1 Ack=12617083 Win=0 Len=0 146212 17:34:03.422127 94.245.90.204 10.211.148.222 TCP [TCP ZeroWindowProbe] 5284 > 52902 [ACK] 序列号=12617083 确认=1 Win=514 长度=1 146214 17:34:03.630469 10.211.148.222 94.245.90.204 TCP [TCP ZeroWindow] [TCP ACKed 丢失段] 52902 > 5284 [ACK] Seq=1 Ack=12617084 Win=0 Len=0 153400 17:34:22.203389 94.245.90.204 10.211.148.222 TCP [TCP ZeroWindowProbe] 5284 > 52902 [ACK] 序列号=12617084 确认=1 赢=514 长度=1 153967 17:34:22.411696 10.211.148.222 94.245.90.204 TCP [TCP ZeroWindow] [TCP ACKed 丢失段] 52902 > 5284 [ACK] Seq=1 Ack=12617085 Win=0 Len=0 156977 17:34:59.547273 94.245.90.204 10.211.148.222 TCP [TCP ZeroWindowProbe] 5284 > 52902 [ACK] 序列号=12617085 确认=1 Win=514 长度=1 156978 17:34:59.755506 10.211.148.222 94.245.90.204 TCP [TCP ZeroWindow] [TCP ACKed 丢失段] 52902 > 5284 [ACK] Seq=1 Ack=12617086 Win=0 Len=0 156983 17:35:49.424340 10.211.148.222 94.245.90.204 TCP [TCP 窗口更新] 52902 > 5284 [ACK] Seq=1 Ack=12617086 Win=517 Len=0 156984 17:35:49.427810 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12617086 确认=1 赢=514 长度=1440 156985 17:35:49.427893 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12618526 确认=1 获胜=514 长度=1440 156986 17:35:49.427934 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=12619966 Win=506 长度=0 156987 17:35:49.427960 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12619966 确认=1 获胜=514 长度=1440 156988 17:35:49.427991 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列号=12621406 确认=1 赢=514 长度=1440
我不明白为什么 wget 会忙这么久。我还看到我们的 JBoss/java 客户端有类似的行为。“通常”流如下所示:
编号 时间 源 目标 协议信息 46 17:31:04.858278 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=1 确认=1 赢=514 长度=108 50 17:31:04.858306 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=109 赢=516 长度=0 61 17:31:04.858528 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=109 确认=1 赢=514 长度=95 166 17:31:04.861793 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=204 确认=1 赢=514 长度=107 167 17:31:04.861813 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=311 胜利=515 长度=0 320 17:31:04.869327 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=311 确认=1 胜利=514 长度=102 326 17:31:04.869393 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=413 确认=1 赢=514 长度=117 327 17:31:04.869408 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=530 赢=515 长度=0 328 17:31:04.869419 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=530 确认=1 获胜=514 长度=96 329 17:31:04.870048 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=626 确认=1 赢=514 长度=113 330 17:31:04.870069 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=739 赢=514 长度=0 337 17:31:04.870431 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=739 确认=1 赢=514 长度=107 383 17:31:04.871195 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=846 确认=1 赢=514 长度=116 388 17:31:04.871222 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=962 胜利=513 长度=0 423 17:31:04.872362 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=962 确认=1 赢=514 长度=99 440 17:31:04.873151 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=1061 确认=1 赢=514 长度=100 446 17:31:04.873182 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=1161 胜利=512 长度=0 508 17:31:04.875097 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=1161 确认=1 Win=514 长度=98 599 17:31:04.877254 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=1259 确认=1 赢=514 长度=104 604 17:31:04.877307 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=1363 赢=517 长度=0 639 17:31:04.878517 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=1363 确认=1 赢=514 长度=115 657 17:31:04.878662 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=1478 确认=1 赢=514 长度=104 660 17:31:04.878693 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=1582 胜利=516 长度=0 683 17:31:04.879737 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=1582 确认=1 获胜=514 长度=106 716 17:31:04.880392 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=1688 确认=1 赢=514 长度=100 720 17:31:04.880448 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=1788 Win=515 长度=0 767 17:31:04.882359 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=1788 确认=1 赢=514 长度=104 841 17:31:04.883507 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=1892 确认=1 赢=514 长度=108 843 17:31:04.883527 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=2000 Win=515 长度=0 851 17:31:04.884238 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=2000 确认=1 赢=514 长度=101 896 17:31:04.885225 94.245.90.204 10.211.148.222 TCP 5284 > 52902 [PSH,ACK] 序列=2101 确认=1 赢=514 长度=116 904 17:31:04.885276 10.211.148.222 94.245.90.204 TCP 52902 > 5284 [ACK] 序列=1 确认=2217 赢=514 长度=0
另外,我真的不明白为什么窗口只有 517 字节。有什么想法吗?由于当前使用的 Level 7 协议,数据包非常小(100-200 字节)。
编辑:6GB 或 8GB 后数据传输失败。似乎没有 32 位的东西。链接/硬件未知,但应该在一个 Microsoft Azure 数据中心内。这是 wget 的连接设置(删除一些位以获得最低限度的隐私):
编号 时间 源 目标 协议信息 157007 17:50:49.590140 10.211.148.222 94.245.90.204 TCP 58291 > 5284 [SYN] 序列=0 Win=8192 Len=0 MSS=1460 WS=8 帧 157007(线路上 66 字节,已捕获 66 字节) 到达时间:2012年4月16日 17:50:49.590140000 车架号:157007 帧长度:66字节 捕获长度:66字节 以太网 II,源:00:15:5d:36:03:6d(00:15:5d:36:03:6d),目标:02:f5:0a:d3:ff:0a(02:f5:0a:d3:ff:0a) 目的地:02:f5:0a:d3:ff:0a(02:f5:0a:d3:ff:0a) 地址:02:f5:0a:d3:ff:0a(02:f5:0a:d3:ff:0a) .... ...0 .... .... .... .... = IG 位:单独地址(单播) .... ..1. .... .... .... .... = LG 位:本地管理地址(这不是出厂默认值) 来源:00:15:5d:36:03:6d(00:15:5d:36:03:6d) 地址:00:15:5d:36:03:6d(00:15:5d:36:03:6d) .... ...0 .... .... .... .... = IG 位:单独地址(单播) .... ..0. .... .... .... .... = LG 位:全局唯一地址(出厂默认) 类型: IP (0x0800) 互联网协议,源:10.211.148.222(10.211.148.222),目标:94.245.90.204(94.245.90.204) 版本:4 报头长度:20字节 差异化服务字段:0x00(DSCP 0x00:默认;ECN:0x00) 0000 00.. = 差异化服务代码点:默认(0x00) .... ..0. = ECN 能力传输 (ECT):0 .... ...0 = ECN-CE: 0 总长度:52 标识:0x17ac (6060) 标志:0x02(不碎片) 0.. = 保留位:未设置 .1. = 不碎片:设置 ..0 = 更多碎片:未设置 片段偏移量:0 生存时间:128 协议:TCP(0x06) 来源:10.211.148.222 (10.211.148.222) 目的地:94.245.90.204 (94.245.90.204) 传输控制协议,源端口:58291(58291),目标端口:5284(5284),序号:0,长度:0 源端口:58291 (58291) 目标端口:5284(5284) 序列号:0(相对序列号) 报头长度:32字节 标志:0x02(SYN) 0... .... = 拥塞窗口减少 (CWR):未设置 .0.. .... = ECN-Echo:未设置 ..0. .... = 紧急:未设置 ...0 .... = 确认:未设置 .... 0... = 推送:未设置 .... .0.. = 重置:未设置 .... ..1. = Syn: 设置 [专家信息(聊天/序列):连接建立请求(SYN):服务器端口 5284] [消息:连接建立请求(SYN):服务器端口 5284] [严重程度:聊天] [群组:序列] .... ...0 = 鳍:未设置 窗口大小:8192 选项:(12字节) 最大段大小:1460 字节 不适用 窗口比例:8(乘以256) 不适用 不适用 允许 SACK 编号 时间 源 目标 协议信息 157008 17:50:49.591169 94.245.90.204 10.211.148.222 TCP 5284 > 58291 [SYN,ACK] 序列=0 确认=1 赢=8192 长度=0 MSS=1440 WS=8 帧 157008(线路上 66 字节,已捕获 66 字节) 到达时间:2012年4月16日 17:50:49.591169000 车架号:157008 帧长度:66字节 捕获长度:66字节 以太网 II,源:02:f5:0a:d3:ff:0a(02:f5:0a:d3:ff:0a),目标:00:15:5d:36:03:6d(00:15:5d:36:03:6d) 目的地:00:15:5d:36:03:6d(00:15:5d:36:03:6d) 地址:00:15:5d:36:03:6d(00:15:5d:36:03:6d) .... ...0 .... .... .... .... = IG 位:单独地址(单播) .... ..0. .... .... .... .... = LG 位:全局唯一地址(出厂默认) 来源:02:f5:0a:d3:ff:0a(02:f5:0a:d3:ff:0a) 地址:02:f5:0a:d3:ff:0a(02:f5:0a:d3:ff:0a) .... ...0 .... .... .... .... = IG 位:单独地址(单播) .... ..1. .... .... .... .... = LG 位:本地管理地址(这不是出厂默认值) 类型: IP (0x0800) 互联网协议,源:94.245.90.204(94.245.90.204),目标:10.211.148.222(10.211.148.222) 版本:4 报头长度:20字节 差异化服务字段:0x00(DSCP 0x00:默认;ECN:0x00) 0000 00.. = 差异化服务代码点:默认(0x00) .... ..0. = ECN 能力传输 (ECT):0 .... ...0 = ECN-CE: 0 总长度:52 标识:0x6cbb (27835) 标志:0x02(不碎片) 0.. = 保留位:未设置 .1. = 不碎片:设置 ..0 = 更多碎片:未设置 片段偏移量:0 生存时间:127 协议:TCP(0x06) 来源:94.245.90.204 (94.245.90.204) 目的地:10.211.148.222 (10.211.148.222) 传输控制协议,源端口:5284(5284),目标端口:58291(58291),序列号:0,确认:1,长度:0 源端口:5284 (5284) 目标端口:58291(58291) 序列号:0(相对序列号) 确认号:1(相对确认号) 报头长度:32字节 标志:0x12(SYN,ACK) 0... .... = 拥塞窗口减少 (CWR):未设置 .0.. .... = ECN-Echo:未设置 ..0. .... = 紧急:未设置 ...1 .... = 确认:设置 .... 0... = 推送:未设置 .... .0.. = 重置:未设置 .... ..1. = Syn: 设置 [专家信息(聊天/序列):连接建立确认(SYN+ACK):服务器端口 5284] [消息:连接建立确认(SYN+ACK):服务器端口 5284] [严重程度:聊天] [群组:序列] .... ...0 = 鳍:未设置 窗口大小:8192 选项:(12字节) 最大段大小:1440 字节 不适用 窗口比例:8(乘以256) 不适用 不适用 允许 SACK 【SEQ/ACK分析】 [这是对帧 157007 中的段的 ACK] [确认该段的 RTT 为:0.001029000 秒] 编号 时间 源 目标 协议信息 157009 17:50:49.591242 10.211.148.222 94.245.90.204 TCP 58291 > 5284 [ACK] 序列=1 确认=1 Win=132352 长度=0 帧 157009(线路上 54 字节,已捕获 54 字节) 到达时间:2012年4月16日 17:50:49.591242000 车架号:157009 帧长度:54字节 捕获长度:54字节 以太网 II,源:00:15:5d:36:03:6d(00:15:5d:36:03:6d),目标:02:f5:0a:d3:ff:0a(02:f5:0a:d3:ff:0a) 目的地:02:f5:0a:d3:ff:0a(02:f5:0a:d3:ff:0a) 地址:02:f5:0a:d3:ff:0a(02:f5:0a:d3:ff:0a) .... ...0 .... .... .... .... = IG 位:单独地址(单播) .... ..1. .... .... .... .... = LG 位:本地管理地址(这不是出厂默认值) 来源:00:15:5d:36:03:6d(00:15:5d:36:03:6d) 地址:00:15:5d:36:03:6d(00:15:5d:36:03:6d) .... ...0 .... .... .... .... = IG 位:单独地址(单播) .... ..0. .... .... .... .... = LG 位:全局唯一地址(出厂默认) 类型: IP (0x0800) 互联网协议,源:10.211.148.222(10.211.148.222),目标:94.245.90.204(94.245.90.204) 版本:4 报头长度:20字节 差异化服务字段:0x00(DSCP 0x00:默认;ECN:0x00) 0000 00.. = 差异化服务代码点:默认(0x00) .... ..0. = ECN 能力传输 (ECT):0 .... ...0 = ECN-CE: 0 总长度:40 标识:0x17ad (6061) 标志:0x02(不碎片) 0.. = 保留位:未设置 .1. = 不碎片:设置 ..0 = 更多碎片:未设置 片段偏移量:0 生存时间:128 协议:TCP(0x06) 来源:10.211.148.222 (10.211.148.222) 目的地:94.245.90.204 (94.245.90.204) 传输控制协议,源端口:58291(58291),目标端口:5284(5284),序号:1,确认:1,长度:0 源端口:58291 (58291) 目标端口:5284(5284) [流索引:2] 序列号:1(相对序列号) 确认号:1(相对确认号) 报头长度:20字节 标志:0x10(ACK) 0... .... = 拥塞窗口减少 (CWR):未设置 .0.. .... = ECN-Echo:未设置 ..0. .... = 紧急:未设置 ...1 .... = 确认:设置 .... 0... = 推送:未设置 .... .0.. = 重置:未设置 .... ..0. = Syn:未设置 .... ...0 = 鳍:未设置 窗口大小:132352(缩放) 【SEQ/ACK分析】 [这是对帧 157008 中的段的 ACK] [确认该段的 RTT 为:0.000073000 秒] 编号 时间 源 目标 协议信息 157010 17:50:49.591565 10.211.148.222 94.245.90.204 TCP 58291 > 5284 [PSH,ACK] 序列=1 确认=1 获胜=132352 长度=389 帧 157010(线路上 443 字节,已捕获 443 字节) 到达时间:2012年4月16日 17:50:49.591565000 车架编号:157010 帧长度:443字节 捕获长度:443 字节 以太网 II,源:00:15:5d:36:03:6d(00:15:5d:36:03:6d),目标:02:f5:0a:d3:ff:0a(02:f5:0a:d3:ff:0a) 目的地:02:f5:0a:d3:ff:0a(02:f5:0a:d3:ff:0a) 地址:02:f5:0a:d3:ff:0a(02:f5:0a:d3:ff:0a) .... ...0 .... .... .... .... = IG 位:单独地址(单播) .... ..1. .... .... .... .... = LG 位:本地管理地址(这不是出厂默认值) 来源:00:15:5d:36:03:6d(00:15:5d:36:03:6d) 地址:00:15:5d:36:03:6d(00:15:5d:36:03:6d) .... ...0 .... .... .... .... = IG 位:单独地址(单播) .... ..0. .... .... .... .... = LG 位:全局唯一地址(出厂默认) 类型: IP (0x0800) 互联网协议,源:10.211.148.222(10.211.148.222),目标:94.245.90.204(94.245.90.204) 版本:4 报头长度:20字节 差异化服务字段:0x00(DSCP 0x00:默认;ECN:0x00) 0000 00.. = 差异化服务代码点:默认(0x00) .... ..0. = ECN 能力传输 (ECT):0 .... ...0 = ECN-CE: 0 总长度:429 标识:0x17ae (6062) 标志:0x02(不碎片) 0.. = 保留位:未设置 .1. = 不碎片:设置 ..0 = 更多碎片:未设置 片段偏移量:0 生存时间:128 协议:TCP(0x06) 来源:10.211.148.222 (10.211.148.222) 目的地:94.245.90.204 (94.245.90.204) 传输控制协议,源端口:58291(58291),目标端口:5284(5284),序号:1,确认:1,长度:389 源端口:58291 (58291) 目标端口:5284(5284) 序列号:1(相对序列号) [下一个序列号:390(相对序列号)] 确认号:1(相对确认号) 报头长度:20字节 标志:0x18(PSH,ACK) 0... .... = 拥塞窗口减少 (CWR):未设置 .0.. .... = ECN-Echo:未设置 ..0. .... = 紧急:未设置 ...1 .... = 确认:设置 .... 1... = 按下:设置 .... .0.. = 重置:未设置 .... ..0. = Syn:未设置 .... ...0 = 鳍:未设置 窗口大小:132352(缩放) 【SEQ/ACK分析】 [传输中的字节数:389] 数据(389字节) 0000 47 45 54 20 2f 69 6e 74 65 72 66 61 63 65 73 2f 获取 /接口/ ... 0100 54 54 50 2f 31 2e 30 0d 0a 52 61 6e 67 65 3a 20 TTP/1.0..范围: 0110 62 79 74 65 73 3d 37 35 35 37 30 32 33 35 39 36 字节=7557023596 0120 2d 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 57 -..用户代理:W 0130 67 65 74 2f 31 2e 31 31 2e 34 0d 0a 41 63 63 65 获取/1.11.4..访问 0140 70 74 3a 20 2a 2f 2a 0d 0a 48 6f 73 74 3a 20 73 pt:*/*。 0170 63 74 69 6f 6e 3a 20 4b 65 65 70 2d 41 6c 69 76 操作:Keep-Aliv 0180 65 0d 0a 0d 0a e....
编辑:固定标题
答案1
窗口大小为零意味着操作系统已在其接收缓冲区中接收到此连接的所有数据,并正在等待应用程序读取()。换句话说,如果您不读取服务器发送给您的数据(速度与发送速度一样快),则在某个时候它会像这样阻塞。您如何使用 wget,您可以粘贴确切的脚本/命令吗?您的 java 程序也是如此,您确定它正在从服务器读取所有数据,并且从未备份,或者错过数据已准备好的事件/通知,或者遇到无法跟上其读取()速度的问题?
另外,检查netstat -anp
并查看Recv-Q
此连接的列,如果它不是 0,则表示有数据缓冲,等待您的应用程序读取它。编辑:啊,Windows,此链接可能有帮助。
答案2
抱歉,更新延迟了。长话短说,这一切的原因是 Microsoft Azure 云中的 NAT 损坏。它忽略了 RFC 5382。它们的 TCP 连接超时为 60 秒。当达到该超时时,连接不会主动关闭(RST 或类似,如 RFC 中建议的那样),或者只是被忽略。相反,发生了非常奇怪的转换,导致包在正确的 VM 上带有乱码的源/目标 IP。VM 会丢弃它们,但这使得在 wireshark 中捕获它们变得非常棘手。它会将它们视为完全不同的连接。
解决方案是 60 年代应用程序级心跳。