什么是傳輸層協議?
傳輸層協議是網絡的重要組成部分,因為其提供了一種將數據包從一個網絡節點傳輸到另一個網絡節點的方法。傳輸協議有多種用途,例如流視頻、互聯網導航和執行交易。兩個核心協議是TCP和UDP。
本文將介紹何時使用這些協議,以及診斷和排除所需的工具。TCP和UDP的基本性質意味著,它們肯定會出現在任何網絡認證中。
什么是傳輸層協議?
TCP和UDP協議與OSI模型的傳輸層相關聯,并作為整個互聯網的基礎數據交換協議。簡而言之,傳輸層協議負責確保設備之間的端到端通信。其還執行錯誤檢測(僅限TCP)、數據分段和數據重組。
尤其是TCP,其負責從加載網頁到在線游戲中交換數據的所有事務。讓我們看看它是如何做到的。
什么是傳輸控制協議(TCP)?
傳輸控制協議(TCP)是互聯網協議(IP)套件的核心協議,負責確保可靠、容錯的數據從一個點發送到另一個點。TCP在確保所有信息無損傳輸方面取得了長足的進步。例如,TCP與UDP的區別之一是重傳丟失的數據。這是以一種特別聰明的方式完成的。
在TCP協議中,每個數據包都被賦予一個唯一的序列號。數據包發送者仔細跟蹤發送了哪些數據包。作為響應,接收系統發出一個ACK數據包(代表“確認”),其中包含確認收到的數據包的序列號。如果序列號不匹配或丟失,發送機器將重新發送數據包。這個過程會持續下去,直到匹配的ACK確認傳輸成功。
數據重傳并不是TCP可靠的唯一方式。其還使用三向握手來建立持久的連接。
在TCP中,三向握手是一種通信機制,以確保所有數據的發送和正確接收。簡而言之,這發生在三個部分:
- 初始化(SYN):SYN是想要建立通信的設備發出的初始數據包。該數據包包含同步標志(SYN)和接收者的IP地址。
- 確認啟動(SYN-ACK):接下來,接收者發回SYN-ACK數據包,假設它已準備好并愿意進行通信。
- 最終確認(ACK):一旦發送方收到SYN-ACK,就會發送最終ACK以確認有效連接。
一旦這三個“握手”完成,傳輸就開始了。三向握手通常被描述為TCP的“面向連接”通信標志。然而,錯誤檢測和流量控制等其他功能也成為TCP面向連接的本質的支柱。
由于TCP在現代IT通信中無處不在,因此不可能列出TCP的每一個用例。然而,這里有一些用例來說明其用處。
- 電子郵件:所有電子郵件均使用TCP發送。如果以UDP方式發送,則電子郵件到達時可能會有丟失一些信息,這會嚴重阻礙通信。
- 在線游戲:貨幣交易、登錄機制和任何關鍵通信都需要TCP。
- 互聯網瀏覽:無論使用HTTP還是HTTPS,第4層協議通常是TCP。當用戶導航到某個網址時,將使用TCP協議。該協議在用戶的網絡瀏覽器和網絡服務器之間建立并維護可靠的連接,確保網頁和相關資源準確無誤地傳輸。
雖然TCP以其可靠性而聞名,但也因其延遲和高開銷著稱。TCP確保每個數據包都被發送和記錄,但這可能不適合所有用例。例如,視頻流不需要每個數據包都能到達用戶——這就是UDP的用武之地。
什么是用戶數據報協議(UDP)?
UDP是TCP的無連接、輕量級版本。與TCP相反,UDP的主要目標是盡可能快地發送數據報,即數據包。
我們可以把UDP想象成一個人把乒乓球扔進桶里。投擲者是發送者,乒乓球是數據包,水桶是接收者。是否每一個乒乓球都能進桶并不重要,重要的是大多數都能進桶。扔球的人自然會丟幾個球——這沒關系。這就是為什么UDP通常被稱為“盡力而為的交付”。
盡力而為交付的最佳用例在于媒體傳輸領域。讓我們看幾個例子:
- VoIP呼叫:VoIP呼叫通常使用UDP進行。這就是為什么時常會出現畫面輕微停頓、人聲跳躍或聽起來像機器人的原因。在語音流中,每個數據包是否完美到達并不重要。畢竟,人們善于把握語境,在交流中不需要那么嚴格。
- 在線游戲:在線游戲的某些方面也使用UDP。每當用戶移動一個字符時,這通常是一個UDP連接?;旧希魏涡枰唔憫獣r間的非關鍵數據都將使用UDP。
- DNS:UDP用于DNS查詢和響應。這是因為DNS解析需要快速,且不需要持續的通信。
如何在TCP和UDP之間選擇?
決定使用哪種協議時,需要考慮幾個因素。讓我們回顧一下其中的一些:
- 可靠性:TCP提供可靠、經過審計的數據,并確保接收到每一條數據。如果應用程序需要高保真度,那么TCP是最佳選擇。
- 延遲和速度:當接收每條數據并不重要時,使用UDP。例如,流媒體音樂可能不需要每個數據包?;蛘?,如果通信只是為了通知另一個應用程序執行其他操作。
- 錯誤處理:TCP有內置的錯誤處理,可以精確地指出遇到的問題。而對于UDP,開發人員將必須開發自定義解決方案。
總之,如果每個信息包的成功傳輸都很重要,那么就使用TCP。如果存在某種可接受的數據丟失程度,那么UDP是最佳選擇。選擇協議的另一個關鍵方面是,了解如何在網絡中有效地掃描它們。接下來讓我們介紹一下。
哪些工具可以掃描網絡端口?
經過培訓的網絡工程師可以使用多種工具;訣竅在于知道何時何地使用它們。具體來說,網絡端口掃描儀是一種工具,允許掃描目標設備并查看哪些端口是開放的,從而容易受到攻擊。本文將介紹幾種可能派上用場的不同端口掃描儀,首先是Nmap。
需要注意的是,不要只掃描想要的任何域,因為這可能會產生法律和道德影響。
- Nmap
Nmap是一個功能強大的偵察工具,用于發現網絡主機和服務。其還被筆測試人員、系統管理員和安全工程師用作端口掃描器。Nmap使用各種技術來掃描端口,例如TCP連接掃描、SYN掃描和UDP掃描。
- Netcat
Netcat,也稱為nc,是一種通用且眾所周知的網絡工具,可以在TCP/IP套件上執行幾乎任何操作。其最顯著的用途是作為TCP代理、網絡守護程序測試、端口掃描、遠程shell等等。
要使用nc執行端口掃描,請輸入以下命令:
nc-zv target_host start_port-end_port
- “z”執行掃描,而不是建立連接。
- “v”代表詳細,以便可以看到返回值。
- 目標主機將是一個URL。start_port是要掃描的第一個端口,end_port將是最后一個。
這是一個實際的例子:
nc-zv www.mywebsite.com 80-100
如果使用的是Mac或Linux,只需打開終端并輸入man nc即可了解如何在設備上使用它。(或者在Windows上輸入nc/?。)
- Zenmap
其他示例僅是CLI,但Zenmap為前面提到的Nmap提供了GUI。Zenmap提供了一種更加用戶友好和結構化的方法來利用Nmap。
Zenmap的優點包括允許保存Nmap配置文件供以后使用、提供更深入的結果分析,以及通過方便的復選框和其他用戶界面使用所有Nmap功能。
這是一個來自維基百科的開源軟件可視化圖:
現在我們已經討論了用于掃描網絡的各種工具,下面討論一些用于評估網絡漏洞的技術。
6種網絡端口掃描技術和結果解釋
雖然端口掃描的最終結果是相同的,但了解用于實現目的的不同技術非常重要。與TCP和UDP一樣,不同的技術也需要權衡,例如速度與安全性。首先我們來看看nc默認的一個常用技術——TCP連接掃描。
- TCP連接掃描
這是安全工程師用來評估設備端口漏洞的常用工具。其解析了三向握手,因此一般不會引發入侵檢測警報。TCP連接掃描通過每個端口并記錄所有端口,從而使其能夠解析三向握手。然而,其非常緩慢。
- SYN(隱形)掃描
SYN掃描,也稱為半端口掃描,旨在比傳統TCP掃描更快地驗證端口的漏洞。SYN掃描通過SYN-ACK數據包等待接收方確認,而不是完成整個握手過程。
這使得其比TCP連接掃描快得多,但更容易受到入侵檢測系統的攻擊。未打開的端口將發送RST信號,而不是SYN-ACK數據包。
- UDP掃描
由于UDP不是面向連接的,因此很難確定UDP端口是否打開。UDP掃描需要依賴于不一定到達的ACK信號。然而,它仍然是一個重要的安全評估工具,但確定性仍然不如TCP掃描。
- 全面的掃描選項和配置
Nmap中可以應用的掃描選項數量幾乎無法計算。Nmap在掃描端口的方式、內容和時間方面提供了很大的靈活性。
下面羅列出一些掃描選項:
nmap-sS-Pn-sV--version-all-O-p 1-65535<some-target>
- -sS:執行SYN掃描(隱形)。
- -Pn:跳過主機發現(假設目標已啟動)。
- -sV--version-all:嘗試識別服務版本。
- -O:嘗試操作系統檢測。
- -p 1-65535:掃描所有端口(1到65,535)。
nmap-p--T4-A-v<some-target>
- -p-:掃描所有65,535個TCP端口。
- -T4:設置激進(快速)掃描的計時模板。
- -A:啟用操作系統檢測、版本檢測、腳本掃描和traceroute。
- -v:啟用詳細結果的詳細輸出。
nmap-p--sS-sU-T4-A-v<some-target>
- -sS:執行SYN掃描(TCP)以進行端口掃描。
- -sU:除了TCP之外,還包括UDP端口掃描。
- -T4:激進的計時模板,可加快掃描速度。
- -A:啟用操作系統檢測、版本檢測、腳本掃描和路由跟蹤。
- -v:詳細輸出的詳細結果。
如何解釋端口掃描結果?
了解開放、關閉和過濾端口
分析結果時要記住的一件事是,永遠不應該打開不知道的端口。只有具有特定用途的端口才能開放通信。過濾端口是對掃描完全沒有響應的端口。當防火墻阻止端口,或某些其他網絡配置阻止有效響應時,可能會發生這種情況。
基于掃描結果分析潛在安全風險
開放且不受監管的端口是IT領域最大的攻擊媒介之一。在分析安全結果時,確定哪些端口是開放的以及哪些服務正在使用該端口非常重要。
例如,如果端口668使用Telnet,且沒有人知道原因,那么這就是一個需要解決的嚴重問題。黑客可能會通過telnet竊取該端口上的數據。這只是一個示例,但理解和可視化結果對于增強和維持適當的安全態勢非常重要。
總結
本文介紹了端口到端口通信中使用哪些協議:TCP和UDP。請記住,TCP用于傳輸過程中不會丟失的關鍵數據。相比之下,UDP速度更快,適用于能夠承受一定量數據丟失的應用程序。
已經開發出工具來通過驗證使用這些協議的端口和服務來監視這些協議。這些工具是Netcat、Nmap及其GUI對應工具Zenmap。
掃描端口的技術有很多種,分別是TCP連接掃描、SYN掃描和UDP掃描。TCP連接掃描速度較慢,但更安全。SYN掃描可能會觸發入侵檢測系統,但速度更快。UDP掃描通常很難解釋,因為UDP不是面向連接的,并且也不一定要向發送方發送響應。