TCP協議與UDP協議之間的九個區別-JAVA網路面試題
TCP和UDP是兩個傳輸層協議,廣泛應用於網路中不同主機之間傳輸資料。對任何程式設計師來說,熟悉TCP和UDP的工作方式都是至關重要的。這就是為什麼TCP和UDP是一個流行的Java程式設計面試問題。我曾經在各種不同的Java面試中見過這個問題,尤其是對伺服器端Java開發人員的面試。由於FIX(金融資訊交換)協議也是一個基於TCP協議,一些投資銀行,對衝基金,和交換解決方案提供商也在尋找有良好的TCP和UDP的知識的Java開發人員。為高速電子交易平臺編寫FIX引擎和伺服器端元件需要能夠對資料結構、演算法以及網路等基本知識都理解透徹的的開發人員的
順便說一下,使用TCP和UDP並不侷限於一個領域
TCP與UDP之間的不同
我喜歡比較兩事物的不同點,這不僅使他們更加容易比較,而且會更容易記住他們之間的差異。當我們比較TCP,UDP,我們需要了解TCP和UDP各自的工作方式,瞭解哪種協議提供了可靠保證交付和而哪個又沒有。哪種協議是快速的,他為什麼更加快速,最重要的是,當我們瞭解了這些,在建設我們自己的分散式應用程式時,就知道該選擇
基於連線vs無連線
他們之間的第一點並且最重要的區別是:TCP是面向連線的協議,而UDP是無連線的協議。這意味著當一個客戶端和一個伺服器通過TCP傳送資料之前,必須先建立連線,他們可以通過TCP傳送資料。建立連線的過程也被稱為TCP握手,他通過控制訊息在客戶端和伺服器之間互換來實現。下面的圖形象描述了TCP握手過程。客戶端,它也是TCP連線的發起者,傳送一個SYN訊息給伺服器,該伺服器端正在監聽某個TCP
可靠性
TCP提供交付保證,這意味著一個使用TCP協議傳送的訊息是保證交付給客戶端的。如果訊息在傳輸過程中丟失,那麼它將重發,這是由TCP協議本身控制的。另一方面,UDP是不可靠的,它不提供任何交付的保證。一個數據報包在運輸途中可能會丟失。這就是為什麼UDP是不適合保證交付的專案。
有序性
除了提供交付保證,為TCP也保證了訊息的有序性。該訊息將以從伺服器端發出的同樣的順序傳送到客戶端,儘管這些訊息到網路的另一端時可能是無序的。TCP協議將會為你排好序。UDP不提供任何有序性或序列性的保證。資料包將以任何可能的順序到達。這就是為什麼TCP是適合需要順序交付方式的應用,儘管有基於UDP的協議通過使用序列號和重傳來提供有序和可靠性的應用,如TIBCO Rendezvous,他實際上就是一個基於UDP的應用。
資料邊界
TCP不儲存資料的邊界,而UDP保證。在傳輸控制協議,資料以位元組流的形式傳送,並沒有明顯的標誌表明傳輸訊號訊息(段)的邊界。在UDP中,資料包單獨傳送的,只有當他們到達時,才會再次整合。包有明確的界限來哪些包已經收到,這意味著在訊息傳送後,在接收器介面將會有一個讀操作,來生成一個完整的訊息。雖然TCP也將在收集所有位元組之後生成一個完整的訊息,但是這些資訊在傳給傳輸給接受端之前將儲存在TCP緩衝區,以確保更好的使用網路頻寬
速度
總而言之,TCP速度比較慢,而UDP速度比較快,因為TCP必須建立連線,以保證訊息的可靠交付和有序性,他需要做比UDP多的多的事。這就是為什麼UDP更適用於對速度比較敏感的應用,例如:線上視訊媒體,電視廣播和多人線上遊戲。
重量級vs輕量級
由於上述的開銷,TCP被認為是重量級的協議,而與之相比,UDP協議則是一個輕量級的協議。因為UDP傳輸的資訊中不承擔任何間接創造連線,保證交貨或秩序的的資訊。這也反映在用於承載元資料的頭的大小。
頭大小
TCP具有比UDP更大的頭。一個TCP資料包報頭的大小是20位元組,UDP資料報報頭是8個位元組。TCP報頭中包含序列號,ACK號,資料偏移量,保留,控制位,視窗,緊急指標,可選項,填充項,校驗位,源埠和目的埠。而UDP報頭只包含長度,源埠號,目的埠,和校驗和。下圖是TCP和UDP頭:
擁塞和流量控制
TCP有流量控制。在任何使用者資料可以被髮送之前,TCP需要三資料包來設定一個套接字連線。TCP處理的可靠性和擁塞控制。另一方面,UDP不能進行流量控制。
使用和應用
在網際網路中,TCP和UDP都執行在哪些環境中了?在瞭解了TCP和UDP之間的關鍵差異之後,我們可以很容易地得出結論,哪種情況適合他們。由於TCP提供可靠交付和有序性的保證,它是最適合需要高可靠並且對傳輸時間要求不高的應用。UDP是更適合的應用程式需要快速,高效的傳輸的應用,如遊戲。UDP是無狀態的性質,在伺服器端需要對大量客戶端產生的少量請求進行應答的應用中是非常有用的。在實踐中,TCP被用於金融領域,如FIX協議是一種基於TCP的協議,而UDP是大量使用在遊戲和娛樂場所。
基於TCP和UDP的協議
基於TCP協議的最好例子是HTTP協議和HTTPS協議,他們幾乎存在於網際網路的任何地方,實際上,絕大多數你所熟悉的通常協議,都是基於TCP的,例如:Telnet,FTP以及SMTP協議。UDP協議沒有TCP協議那麼受歡迎,但是也被廣泛應用,比如DHCP以及DNS協議,其他還有一些基於UDP的協議如SNMP,TFTP,BOOTP以及NFS(早期版本)。
特別需要記住的是,TCP是面向連線的,可靠的,緩慢的,可靠交付以及保證訊息順序的,而UDP是無連線的,不可靠的,沒有序列保證,但是一個快速傳輸的協議。TCP頭開銷也比UDP高得多,因為它每個資料包中藥傳送更多的元資料。值得一提的是,TCP頭的大小是20個位元組,而UDP頭大小是8個位元組。如果你不想丟失任何訊息,使用TCP協議,而UDP能夠高速傳輸資料,並且丟失少量的資料包是可以接受的,如視訊流或線上多玩家遊戲。對於基於TCP / UDP協議,執行在Linux上的應用,需要牢記的基本網路命令,如Telnet和netstat,他們極大的幫助除錯和排除任何連線問題。
相關推薦
TCP協議與UDP協議之間的九個區別-JAVA網路面試題
TCP和UDP是兩個傳輸層協議,廣泛應用於網路中不同主機之間傳輸資料。對任何程式設計師來說,熟悉TCP和UDP的工作方式都是至關重要的。這就是為什麼TCP和UDP是一個流行的Java程式設計面試問題。我曾經在各種不同的Java面試中見過這個問題,尤其是對伺服器端
淺析TCP協議與UDP協議
linux運維TCP(Transmission Control Protocol),全稱傳輸控制協議。工作在TCP/IP協議棧中的傳輸層,為主機層對主機層的連接提供了可靠的鏈接服務。此協議通過三個步驟使客戶機與服務器建立一個連接,並通過四個步驟關閉此連接,這個過程我們分別稱之為三次握手和四次揮手。UDP((U
TCP協議與UDP協議
用戶 png 理解 等於 序列 收發消息 tag 數據報 size 一.TCP協議: 1.初識TCP:TCP---傳輸控制協議,提供的是面向連接、可靠的字節流服務。當客戶和服務器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之後才能傳輸數據。TCP提供超時重發,丟棄重
TCP協議與UDP協議的區別
首先咱們弄清楚,TCP協議和UCP協議與TCP/IP協議的聯絡,很多人犯糊塗了,一直都是說TCP/IP協議與UDP協議的區別,我覺得這是沒有從本質上弄清楚網路通訊!TCP/IP協議是一個協議簇。裡面包括很多協議的。UDP只是其中的一個。之所以命名為TCP/IP協議,因為TC
計算機網路中TCP協議與UDP協議的比較
在計算機網路層次結構的運輸層中,TCP協議、UDP協議解決了端到端的通訊問題。 在這裡的協議即為軟體,用以解決計算機網路的通訊互聯問題。 計算機網路層次結構概述 現代計算機網路基本層次結構由5個層次組成,自頂向下為:應用層、運輸層、網路層、資料
網路通訊——>TCP協議和UDP協議的客戶端與服務端之間的建立
網路程式設計 OSI有七層模型:它從低到高分別是:物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層。如下圖: 網路程式設計的三要素: 1、IP地址 ## 獲取ip地址和主機名的方式 #需要匯入socket模組 import socket name = socket.g
TCP與UDP協議
效果 數量 傳輸層 理解 1-1 程序 二次 nbsp 連接 概述 首先要看TCP/IP協議,涉及到四層:接入層,網絡層,傳輸層,應用層。TCP/IP協議簇是由OSI七層模型發展而來的。 參考文檔 其中以太網(Ethernet)的數據幀在鏈路層 IP
TCP與UDP協議分析
war 封裝 cde vpd cto tel image 由器 ase 1 案例1:TCP與UDP協議分析1.1 問題1、通過抓包分析TCP與UDP的封裝格式2、通過抓包分析TCP三次握手1.2 方案1、實驗環境由兩臺主機PC1和PC2組成,PC1使用宿主機,PC2使用VM
TCP與UDP協議socket函式例項理解
socket 函式 int socket(int domain, int type, int protocol) 返回值: 非負描述符為成功,-1則出錯 domain: 指明的是網路層協議族/域,通常AF_INET、AF_INET6、AF_LOCAL等 type: 套介面型別
day 27 網際網路TCP與UDP協議 ,三次握手四次揮手
一 . OSI七層模型(網際網路核心協議,從下往上的順序是物理層<資料鏈路層<網路層<傳輸層<會話層<表示層<應用層) 也瞭解下五層通訊的流程: 二 . socket  
【網路協議】TCP分段與UDP/IP分片 (MTU最大傳輸單元,MSS最大分段大小)
我們在學習TCP/IP協議時都知道,TCP報文段如果很長的話,會在傳送時發生分段,在接受時進行重組,同樣IP資料報在長度超過一定值時也會發生分片,在接收端再將分片重組。 我們先來看兩個與TCP報文段分段和IP資料報分片密切相關的概念。 MTU(最大傳
TCP/IP協議與UDP的區別
TCP(Transmission Control Protocol,傳輸控制協議)是面向連線的協議,也就是說,在收發資料前,必須和對方建立可靠的連線。一個TCP連線必須要經過三次“對話”才能建立起來,其中的過程非常複雜,只簡單的描述下這三次對話的簡單過程:主機A向主機B發出
TCP與UDP區別的深入了解(這裏只討論IPV4情況,當然,IPV6下的TCP與UDP協議部分也能適用)
頭部 線程鎖 重傳 發送 協議 分開 讀寫操作 實現 單向 簡單介紹 TCP: 自維持連接的數據“流”傳輸協議 UDP: 數據“報”形式的“單向”傳輸協議 區別 頭部長度的區別: TCP報頭長20個字節,包括:源端口(2)、目的端口(2)、序號(4)、確認號(4)、頭長
基於TCP與UDP協議的socket通訊
基於TCP與UDP協議的socket通訊 C/S架構與初識socket 在開始socket介紹之前,得先知道一個Client端/服務端架構,也就是 C/S 架構,網際網路中處處充滿了 C/S 架構(Client/Server),比如我們需要玩英雄聯盟,就必須連線至英雄聯盟的伺服器上,那麼對於我們玩家來說
12.2-全棧Java筆記: TCP協議和UDP協議
java 區別在網絡通訊中,TCP方式就類似於撥打電話,使用該種方式進行網絡通訊時,需要建立專門的虛擬連接,然後進行可靠的數據傳輸,如果數據發送失敗,則客戶端會自動重發該數據。而UDP方式就類似於發送短信,使用這種方式進行網絡通訊時,不需要建立專門的虛擬連接,傳輸也不是很可靠,如果發送失敗則客戶端無法獲得。這
TCP/IP協議與Http協議的區別
內容 發送請求 nfs bstr quest alibaba 數據包 緩存 med TPC/IP協議是傳輸層協議,主要解決數據如何在網絡中傳輸,而HTTP是應用層協議,主要解決如何包裝數據。關於TCP/IP和HTTP協議的關系,網絡有一段比較容易理解的介紹:“我們在傳輸數
轉!!DNS域名解析使用的是TCP協議還是UDP協議?
本機 post 傳輸協議 接收 不可 pos 比較 數據 速度 原文地址:https://segmentfault.com/a/1190000006100959 DNS同時占用UDP和TCP端口53是公認的,這種單個應用協議同時使用兩種傳輸協議的情況在TCP/IP棧也算
TCP/IP協議與HTTP協議(一)
tar idt 通過 inter bubuko 通信 單位 網絡設備 proto 1、什麽是TCP/IP 如果要了解一個人,可以從他歸屬的集體聊起來。我們的HTTP協議就屬於TCP/IP協議家族中的一員,了解HTTP協議再整個網絡流程中的地位,也能更加充分的理
TCP/IP協議與HTTP協議(二)
動向 沒有 代理 serve 相互 基本 而且 網絡連接 正式 TCP/IP協議是傳輸層協議,主要解決數據如何在網絡中傳輸,而HTTP是應用層協議,主要解決如何包裝數據。 1、TCP連接 手機能夠使用聯網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網絡
DNS用的是TCP協議還是UDP協議
安全保障 tft 無序 本機 而已 都是 基本 另類 線路 DNS占用53號端口,同時使用TCP和UDP協議。那麽DNS在什麽情況下使用這兩種協議? DNS在區域傳輸的時候使用TCP協議,其他時候使用UDP協議。 DNS區域傳輸的時候使用TCP協議: 1.輔域名服務器會定時