從專業的角度說,tcp的可靠保證,是它的三次握手機制,這一機制保證校驗了資料,保證了他的可靠性。而udp就沒有了,所以不可靠。不過udp的速度是tcp比不了的,而且udp的反應速度更快,qq就是用udp協議傳輸的,http是用tcp協議傳輸的,不用我說什麼,自己體驗一下就能發現區別了。再有就是udp和tcp的目的埠不一樣(這句話好象是多餘的),而且兩個協議不在同一層,tcp在三層,udp不是在四層就是七層。
tcp/ip協議介紹
tcp/ip的通訊協議
這部分簡要介紹一下tcp/ip的內部結構,為討論與網際網路有關的安全問題打下基礎。tcp/ip協議組之所以流行,部分原因是因為它可以用在各種各樣的通道和底層協議(例如t1和x.25、乙太網以及rs-232序列介面)之上。確切地說,tcp/ip協議是一組包括tcp協議和ip協議,udp(user datagram protocol)協議、icmp(internet control message protocol)協議和其他一些協議的協議組。
tcp/ip整體構架概述
應用層:應用程式間溝通的層,如簡單電子郵件傳輸(smtp)、檔案傳輸協議(ftp)、網路遠端訪問協議(telnet)等。
傳輸層:在此層中,它提供了節點間的資料傳送服務,如傳輸控制協議(tcp)、使用者資料報協議(udp)等,tcp和udp給資料報加入傳輸資料並把它傳輸到下一層中,這一層負責傳送資料,並且確定資料已被送達並接收。
互連網路層:負責提供基本的資料封包傳送功能,讓每一塊資料報都能夠到達目的主機(但不檢查是否被正確接收),如網際協議(ip)。
網路介面層:對實際的網路**的管理,定義如何使用實際網路(如ethernet、serial line等)來傳送資料。
tcp/ip中的協議
以下簡單介紹tcp/ip中的協議都具備什麼樣的功能,都是如何工作的:
1. ip
網際協議ip是tcp/ip的心臟,也是網路層中最重要的協議。
ip層接收由更低層(網路介面層例如乙太網裝置驅動程式)發來的資料報,並把該資料報傳送到更高層---tcp或udp層;相反,ip層也把從tcp或udp層接收來的資料報傳送到更低層。ip資料報是不可靠的,因為ip並沒有做任何事情來確認資料報是按順序傳送的或者沒有被破壞。ip資料報中含有傳送它的主機的位址(源位址)和接收它的主機的位址(目的位址)。
高層的tcp和udp服務在接收資料報時,通常假設包中的源位址是有效的。也可以這樣說,ip位址形成了許多服務的認證基礎,這些服務相信資料報是從乙個有效的主機傳送來的。ip確認包含乙個選項,叫作ip source routing,可以用來指定一條源位址和目的位址之間的直接路徑。對於一些tcp和udp的服務來說,使用了該選項的ip包好象是從路徑上的最後乙個系統傳遞過來的,而不是來自於它的真實地點。這個選項是為了測試而存在的,說明了它可以被用來欺騙系統來進行平常是被禁止的連線。那麼,許多依靠ip源位址做確認的服務將產生問題並且會被非法入侵。
2. tcp
如果ip資料報中有已經封好的tcp資料報,那麼ip將把它們向『上』傳送到tcp層。tcp將包排序並進行錯誤檢查,同時實現虛電路間的連線。tcp資料報中包括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。
tcp將它的資訊送到更高層的應用程式,例如telnet的服務程式和客戶程式。應用程式輪流將資訊送回tcp層,tcp層便將它們向下傳送到ip層,裝置驅動程式和物理介質,最後到接收方。
面向連線的服務(例如telnet、ftp、rlogin、x windows和smtp)需要高度的可靠性,所以它們使用了tcp。dns在某些情況下使用tcp(傳送和接收網域名稱資料庫),但使用udp傳送有關單個主機的資訊。
3.udp
udp與tcp位於同一層,但對於資料報的順序錯誤或重發。因此,udp不被應用於那些使用虛電路的面向連線的服務,udp主要用於那些面向查詢---應答的服務,例如nfs。相對於ftp或telnet,這些服務需要交換的資訊量較小。使用udp的服務包括ntp(網落時間協議)和dns(dns也使用tcp)。
欺騙udp包比欺騙tcp包更容易,因為udp沒有建立初始化連線(也可以稱為握手)(因為在兩個系統間沒有虛電路),也就是說,與udp相關的服務面臨著更大的危險。
4.icmp
icmp與ip位於同一層,它被用來傳送ip的的控制資訊。它主要是用來提供有關通向目的位址的路徑資訊。icmp的『redirect』資訊通知主機通向其他系統的更準確的路徑,而『unreachable』資訊則指出路徑有問題。另外,如果路徑不可用了,icmp可以使tcp連線『體面地』終止。ping是最常用的基於icmp的服務。
5. tcp和udp的埠結構
tcp和udp服務通常有乙個客戶/伺服器的關係,例如,乙個telnet服務程序開始在系統上處於空閒狀態,等待著連線。使用者使用telnet客戶程式與服務程序建立乙個連線。客戶程式向服務程序寫入資訊,服務程序讀出資訊並發出響應,客戶程式讀出響應並向使用者報告。因而,這個連線是雙工的,可以用來進行讀寫。
兩個系統間的多重telnet連線是如何相互確認並協調一致呢?tcp或udp連線唯一地使用每個資訊中的如下四項進行確認:
源ip位址 傳送包的ip位址。
目的ip位址 接收包的ip位址。
源埠 源系統上的連線的埠。
目的埠 目的系統上的連線的埠。
埠是乙個軟體結構,被客戶程式或服務程序用來傳送和接收資訊。乙個埠對應乙個16位元的數。服務程序通常使用乙個固定的埠,例如,smtp使用25、xwindows使用6000。這些埠號是『廣為人知』的,因為在建立與特定的主機或服務的連線時,需要這些位址和目的位址進行通訊。
埠 TCP和UDP輸出
任何時候,多個程序可能同時使用 tcp udp sctp 這三種傳輸層協議中的任何一種。這三種協議都使用 16 位整數的埠號來區分這些程序。當乙個客戶想要和乙個伺服器聯絡時,它必須標識想要與之通訊的這個伺服器。一方面,tcp udp sctp 定義了一組眾所周知的埠,用於標識眾所周知的服務。舉例說明...
Linux測試UDP 和 TCP 埠
1 tcp埠的連通性 tc埠的連通性,一般通過telnet檢測 tcp協議是面向連線的,可以直接通過telnet命令連線 telnet host ip port2 udp埠的連通性 因為公司網路防火牆一般對埠會有一些限制,通過公司網路訪問外部伺服器特定埠時,需要檢測與目標伺服器特定埠的連通性 對於u...
TCP和UDP協議常用埠彙總
埠 協議說明 udp常用埠 echo 將收到的資料報送給傳送端 smtp 簡單郵件傳輸協議 host name server 主機名服務 tacacs 登入主機協議 dns網域名稱服務 dhcp 動態主機配置檔案 tftp 簡單檔案傳輸協議 snmp 簡單網路管理協議 snmp 簡單網路管理協議 t...