共用方式為


TCP/IP 通訊疑難排解指導

試用虛擬助理 - 其可協助您快速找出並修正常見 Active Directory 複寫問題。

本文旨在協助您針對 TCP/IP 通訊問題進行疑難解答。

疑難排解工具

ping 命令有助於測試基本連線能力。 然而,您不該依賴此工具來證明整體連線能力。 Telnet 和 PsPing 更實用,原因如下:

  • 這些工具可以使用 TCP 或 UDP (僅限 PsPing) 作為傳輸通訊協定來測試與應用程式層的連線能力。
  • 您可以指定將要使用的連接埠。 因此,您可以瀏覽防火牆上開啟的連接埠。
  • 您可以連線到目的地節點上任一「接聽」連接埠,以確認特定應用程式的連接埠的存取權。

疑難排解檢查清單

步驟 1:擷取網路圖表

擷取網路圖表,詳細說明受影響區域路徑中的裝置。 具體而言,請注意下列裝置:

  • 防火牆
  • IPS (入侵保護/預防系統)
  • DPI (深層封包檢查)
  • WAN 加速器

此圖表可協助您可視化並識別要尋找問題原因的位置。

步驟 2:網路追蹤

網路追蹤很適合用來查看問題發生時在網路層級發生的狀況。

步驟 3:Ping 計算機的本機 IP 位址

嘗試偵測電腦的本機IP位址。

如果節點無法偵測其本機 IP,本機堆疊將無法運作。 請注意所顯示的任何錯誤訊息。

如果您收到一 般失敗 錯誤,此錯誤表示沒有有效的介面可處理要求。 此問題可能是硬體問題或堆疊問題所造成。

檢查您是否在系統匣的 [網络連線] 圖示上看到紅色的 “X” 字元或黃色驚嘆號。 紅色 X 表示 Windows 未偵測到網路連線。 黃色驚嘆號表示網路連線狀態指示器 (NSCI) 未通過探查檢查。

若要針對此問題進行疑難解答,請確認網路適配器報告連線能力。 請確定網路適配器已插入,且節點連線所在的交換器埠未處於錯誤狀態。 您可以變更纜線、交換器埠和網路適配器,以縮小發生此問題的位置。 不過,歸根結底,問題不在OS之外。 若要進一步調查,請連絡硬體廠商。

網路驅動程式與 Windows 之間也可能發生問題。 此問題通常是因為堆疊中的損毀。 使用下列疑難解答步驟:

  1. 請確定節點上的最新位 (TCP/IP、NDIS、AFD、Winsock 等等)。

  2. 執行下列命令來重設IP和 Winsock。 備份所有網路設定。

    netsh -c interface dump > C:\netConfig.txt
    netsh int ip reset
    netsh winsock reset
    
  3. 重新啟動節點。

  4. 在重新啟動之後還原網路設定。 只有在介面名稱尚未變更,或腳本更新為使用新名稱時,此作業才有效。

    netsh -f C:\netConfig.txt
    
  5. 視需要卸載或重新安裝網路適配器驅動程式。

  6. 檢查並移除第三方篩選驅動程式(例如防病毒軟體)。

  7. 嘗試使用網路以安全模式啟動電腦。 如果使用網路的安全模式運作,請停用 MSConfig的所有第三方應用程式和服務,以執行「全新開機」程式,然後逐一重新啟用它們,直到問題傳回為止。 然後,您可以連絡廠商以取得支援。

    1. 如果這些項目都沒有成功,問題可能是登錄損毀。
    2. 如果您有登錄的備份復本(例如實體備份或系統還原點),您可以嘗試將節點還原至先前運作中的組態。 捕捉腐敗的根本原因可能很困難,而且非常耗時。 即使找到腐敗,也知道是什麼導致了它更具挑戰性。 手動修改損毀的登錄機碼會將節點置於不支援的狀態。 因此,我們建議客戶還原或重載節點,以更正損毀。

如果 NSCI 失敗其探查檢查 (黃色驚嘆號),這不一定表示連線問題。 請確定一般通訊應該發生。

  • 如果是,調查應該特別著重於 NCSI 為何無法進行探查檢查。 這一點的詳細數據會涵蓋在個別的主題中。
  • 如果沒有,請先調查連線問題,因為這在還原連線之後可能會更正。

步驟 4:針對 Ping 或 telnet 測試期間發生的錯誤訊息進行疑難解答

如果節點可以 Ping 或 telnet 到相同子網或網路區段上的節點,這會確認外部連線正常運作。 還需要進一步測試,才能瞭解是否有基本連線問題存在。

如果節點無法 Ping/telnet 到相同子網/網路區段上的節點。 請注意所顯示的任何錯誤訊息。

  1. 目的地主機無法 連線錯誤表示節點所傳送的ARP要求不會收到回應。

  2. 從您要測試的節點收集兩端追蹤。 請確定來源節點所傳送的 ARP 要求到達目的地節點,且目的地節點會據此回復。 此回復應該會在來源追蹤中看到。 如果此程式失敗,問題可能是設定錯誤或其他影響基礎結構的問題。

    可能的原因可能是:

    1. 不正確的或不相符的 VLAN。
    2. 不正確的交換器埠組態(主幹與存取埠)。
    3. 其他硬體問題。
  3. 要求 時錯誤表示 ARP 要求收到回應,但節點所傳送的 ICMP 回應要求未取得 ICMP 回應回應。 單獨而言,這並不表示問題。 網路上的網路或防火牆軟體可能會封鎖ICMP流量。 關閉防火牆配置檔 (Windows) 或透過防火牆廠商支援的ICMP測試方法加以停用可能很有説明。

    1. Telnet 和 PsPing 更適合用於測試。 從來源節點執行 Telnet 或 PsPing 到接聽埠上的目的地節點(例如 445)。
    2. 如果步驟 1 成功,外部連線就會正常運作。 繼續測試基本連線能力。
    3. 如果步驟 1 未成功(且防火牆配置檔已停用),請收集雙面 netsh netconnection 案例追蹤以進一步進行疑難解答。

步驟 5:Ping 或 Telnet 至預設閘道

當節點可以 Ping 其預設閘道時,可以從來源節點存取外部連線能力(例如現成連線能力)。 還需要進一步測試,才能瞭解是否有基本連線問題存在。 如果節點無法 Ping 或 Telnet 至其預設閘道,這表示 ICMP 回復會在路由器上停用。

步驟 6:檢查影響特定目的地節點的問題

如果來源節點可以 Ping、Telnet 或 PsPing 至目的地子網上的其他節點,則基礎結構內的基本連線和路由正在運作。 此結果指出會影響特定目的地節點的問題。

  1. 嘗試將 Telnet 或 PsPing 移至應用程式正在接聽的特定埠(例如 SMB 的 TCP 連接埠 445)。 如果連線成功,則可以確認基本的應用層級連線。 在此情況下,您必須連絡應用程式廠商,以協助調查應用程式未連線的原因。

    注意

    例如,如果問題無法連線到共用,則應用程式廠商可能會Microsoft。 在這些情況下,採取雙面 netsh netconnection 案例追蹤來收集其他資訊並協助您確認網路堆疊中沒有任何問題,會很有用。

  2. 如果連線到特定埠未成功:

    1. 請確定埠處於「接聽」狀態:
      CMD: netstat -nato | findstr :<port>
      PowerShell:Get-NetTcpConnection -LocalPort <port>
    2. 暫時停用所有防火牆配置檔。 (注意:只停用配置檔。請勿停用服務。
      如果成功,則必須重新設定防火牆,以允許其特定埠上的應用程式流量。
    3. 一次移除任何第三方應用程式,並在每個移除之間進行測試。
      如果成功,請連絡有問題的軟體廠商。
    4. 嘗試使用網路功能的安全模式。
      如果成功,請使用 MSConfig 執行節點的「清除開機」來隔離原因,然後逐一啟用第三方應用程式和服務,直到問題再次發生為止。
    5. 當您重現連線嘗試時,您應該從來源執行 netsh netconnection 案例追蹤至受影響的目的地節點。 網路 SDP 也很有説明。
  3. 如果節點無法 Ping、Telnet 或 PsPing 至目的地子網上的其他節點,問題可能與基礎結構相關。 同樣地,ICMP 可能會在環境中遭到封鎖。 因此,使用 Telnet 或 PsPing 連線到已知接聽埠來確認連線能力。 此時,必須有雙端網路追蹤,才能顯示網路上發生封包遺失的位置。 在嘗試連線測試之前,請確定這兩個追蹤都在執行,以便擷取問題。

常見問題與解決方案

主機的 TCP/IP 連線似乎已停止

發生此問題的原因是 TCP 和 UDP 佇列中的數據遭到封鎖,或有網路或使用者層級的軟體延遲問題。

若要針對此問題進行疑難解答,請使用 netstat -a 命令來顯示本機計算機上 TCP 和 UDP 連接埠上所有活動的狀態。
在傳送和接收佇列中有零個字節時,會建立良好 TCP 連線的狀態。 如果數據在佇列中遭到封鎖,或狀態不規則,則連線可能發生錯誤。 如果沒有,您可能遇到網路或用戶層級的軟體延遲。

使用 Lmhosts 進行名稱解析時的長時間連線時間

之所以發生此問題,是因為 Lmhosts 檔案會循序剖析,以找出沒有 #PRE 選項的專案。

若要針對此問題進行疑難解答,請將常用專案放在檔案頂端附近,並將 #PRE 專案放在底部附近。 如果專案新增至大型 Lmhosts 檔案的結尾,請使用 #PRE 選項,將 Lmhosts 中的專案標示為預先載入的專案。 然後,執行 nbtstat -R 命令以立即更新本機名稱快取。

發生系統錯誤 53

如果使用 命令時 net use ,特定計算機名稱的名稱解析失敗,則會傳回系統錯誤 53。

如果計算機位於本機子網上,請確認名稱已正確拼字,且目標計算機也正在執行 TCP/IP。 如果電腦不在本機子網上,請確定其名稱和IP位址對應可在 Lmhosts 檔案或 WINS 資料庫中使用。 如果所有 TCP/IP 元素似乎都已正確安裝,請使用 ping 命令與遠端電腦一起確認其 TCP/IP 軟體是否正常運作。

無法連線到特定伺服器

之所以發生此問題,是因為 NetBIOS 名稱解析無法解析名稱,或是解析錯誤的 IP 位址。

若要針對此問題進行疑難解答,請使用 nbtstat -n 伺服器上的 命令來判斷網路上註冊的伺服器名稱。 您嘗試連線的電腦電腦名稱應該位於顯示的清單中。 如果未列出名稱,請嘗試顯示的其他其中一個唯一計算機名稱 nbtstat。 如果遠端電腦所使用的名稱與命令所顯示 nbtstat -n 的名稱相同,請確定遠端電腦具有WINS 伺服器或其 Lmhosts 檔案中的伺服器名稱專案。

無法新增預設閘道

之所以發生此問題,是因為預設網關的IP位址不在與IP位址相同的IP網路標識碼上。

若要針對此問題進行疑難解答,請比較預設網關與計算機任何網路適配器的網路標識符,判斷預設網關是否位於與計算機網路適配器相同的邏輯網路上。

例如,計算機具有單一網路適配器,其IP位址為192.168.0.33,子網掩碼為255.255.255.0.0。 這需要預設閘道的格式為 「192.168。<y>.<z>“,因為IP介面的網路標識碼部分是192.168.0.0。

資料收集

在連絡Microsoft支援之前,您可以收集問題的相關信息。

必要條件

  1. TSS 必須由本機系統上具有系統管理員許可權的帳戶執行,而且必須接受 EULA(一旦接受 EULA,TSS 將不會再次提示)。
  2. 我們建議本機電腦 RemoteSigned PowerShell 執行原則。

注意

如果目前的 PowerShell 執行原則不允許執行 TSS,請採取下列動作:

  • 執行 Cmdlet PS C:\> Set-ExecutionPolicy -scope Process -ExecutionPolicy RemoteSignedRemoteSigned設定進程層級的執行原則。
  • 若要確認變更是否生效,請執行 Cmdlet PS C:\> Get-ExecutionPolicy -List
  • 因為進程層級許可權僅適用於目前的 PowerShell 工作階段,一旦指定的 PowerShell 視窗在 TSS 執行時關閉,進程層級的指派許可權也會回到先前設定的狀態。

在連絡Microsoft支援之前收集重要資訊

  1. 在所有節點上下載 TSS ,並將它解壓縮到 C:\tss 資料夾中。

  2. 從提升許可權的 PowerShell 命令提示字元開啟 C:\tss 資料夾。

  3. 使用下列 Cmdlet 在來源和目的地伺服器上啟動追蹤:

    TSS.ps1 -Scenario NET_General
    
  4. 如果追蹤第一次在來源或目的地伺服器上執行,請接受EULA。

  5. 允許錄製 (PSR 或視訊)。

  6. 輸入 Y 之前重現問題。

    注意

    如果您在用戶端和伺服器上收集記錄,請在這兩個節點上等候此訊息,再重現問題。

  7. 輸入 Y 以在重現問題之後完成記錄收集。

追蹤會儲存在 C:\MS_DATA 資料夾中的 zip 檔案中,以便上傳至工作區進行分析。

參考