2009-06-30 26 views
1

我負責一些嵌入式軟件,這些嵌入式軟件必須與客戶專用的TCP接口一起工作(也嵌入了,但是在一個衆所周知且廣受好評的RTOS下運行),但它沒有通過三次握手,即使HTTP接口等,都可以正常工作,並且可以使用自定義協議與PC上運行的程序進行通信。看着WireShark捕獲,他的身邊發送一個SYN,我發送一個SYN-ACK,然後他立即發送一個RST,所以看起來問題在他的末端。我的分析是否正確?誰在搞這個TCP連接?

下面是一個典型的三個問題的例子,MAC ID是匿名的(真實的MAC ID是有效的)。很抱歉粘貼原始十六進制,如果有人更好地瞭解如何將WireShark捕獲起來,我肯定是可以接受的。

63 2009-06-29 13:07:49.685057 10.13.91.2 10.13.92.3 TCP 1024 > 49151 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=0 TSV=194 TSER=0 

0000 f1 f1 f1 00 03 09 ab ab ab 60 10 89 08 00 45 00 
0010 00 3c 00 68 40 00 40 06 6f 35 0a 0d 5b 02 0a 0d 
0020 5c 03 04 00 bf ff 7d b3 81 44 00 00 00 00 a0 02 
0030 20 00 9c 2f 00 00 02 04 05 b4 01 03 03 00 01 01 
0040 08 0a 00 00 00 c2 00 00 00 00 

64 2009-06-29 13:07:49.685375 10.13.92.3 10.13.91.2 TCP 49151 > 1024 [SYN, ACK] Seq=0 Ack=1 Win=1460 Len=0 

0000 ab ab ab 60 10 89 f1 f1 f1 00 03 09 08 00 45 00 
0010 00 28 00 02 00 00 64 06 8b af 0a 0d 5c 03 0a 0d 
0020 5b 02 bf ff 04 00 d4 ff ff ff 7d b3 81 45 50 12 
0030 05 b4 47 07 00 00 00 00 00 00 00 00 

65 2009-06-29 13:07:49.685549 10.13.91.2 10.13.92.3 TCP 1024 > 49151 [RST] Seq=1 Win=0 Len=0 

0000 f1 f1 f1 00 03 09 ab ab ab 60 10 89 08 00 45 00 
0010 00 28 00 6a 00 00 40 06 af 47 0a 0d 5b 02 0a 0d 
0020 5c 03 04 00 bf ff 7d b3 81 45 00 00 00 00 50 04 
0030 00 00 21 c9 00 00 00 00 00 00 00 00 
+0

你可以把一些Web服務器上Wireshark的捕獲文件爲我們下載。 – 2009-07-03 04:13:22

回答

1

如果你們兩個都在使用標準的RTOS實現,那麼TCP堆棧就不太可能出現問題。或者,您是否說TCP是在本地實施的?

如果他的客戶端發送一個SYN正確,你可以用SYN+ACK回覆,
這樣看來,無論是你的SYN+ACK沒有很好地形成
(不過,我看不出什麼毛病還),或
像你懷疑的 ,他的TCP棧沒有正確接受SYN+ACK
但是,如果這些是標準實現,那不太可能。

那麼,你還能做什麼?

  • 因爲它是我們正在檢查的TCP握手,你可以讓他連接到您的最終任何其他機器所期望的端口上偵聽

    • 這將檢查他的實現(其如果3路完成,那麼很好)。
  • 您可以檢查與TELNET您的TCP協議棧從另一個本地機器

    • 這將檢查你的實現(如果好的3路完成)連接到該端口。
  • 如果這兩個東西都很好,我們需要懷疑的網絡路徑

    • 例如,莫不是不允許某些防火牆的通信,並積極發送一個RST給你?
0

首先,這些都是無效的MAC地址;一個高位字節& 0x1表示它是一個組播MAC。請參閱http://en.wikipedia.org/wiki/MAC_address

+0

我懷疑sskuce已經擦掉了MACs – nik 2009-06-30 16:02:19

+0

在嵌入式環境中,我認爲他可能是任意選擇的「隨機」MAC,這會導致他的問題。至少,這是在這裏發生的,並且導致制定MAC的高位字節爲0的規則。:) – user47559 2009-06-30 16:08:44

+0

Woops,我忘了提及我已經擦洗了MAC。雙方都有自己的OUI,所以我不希望它們是可識別的。 – 2009-06-30 16:11:57

0

如果您不喜歡使用像自定義tcp堆棧或原始套接字那樣的花式東西,我會懷疑「專有TCP接口」。

這是否曾與該客戶合作? 它可以和其他客戶一起工作嗎?