User Datagram Protocol
一、是⼀個⽆鏈接的簡單的⾯向數據報的傳輸層協議。 UDP不提供可靠性, 它只是把應⽤程序傳給IP層的數據報發送出去, 可是並不能保證它們能到達⽬的地。 因爲UDP在傳輸數據報前不⽤在客戶和服務器之間建⽴鏈接, 且沒有超時重發等機制, 故⽽傳輸速度很快服務器
二、UDP⼀般⽤於多點通訊和實時的數據業務, ⽐如:網絡
語⾳⼴播
視頻
QQ
TFTP(簡單⽂件傳送)
能夠理解爲寫信tcp
Transmission Control Protocol
一、是一種面向鏈接的、可靠的、基於字節流的傳輸層通訊協議,面向鏈接意味着兩個使用TCP的應用(一般是一個客戶端和一個服務器)在彼此交換數據包以前必須先創建一個TCP鏈接3d
二、TCP鏈接必需要通過三次握手才能創建起來,其中的過程以下:code
第一次握手:客戶端先發送 SYN(SEQ=x)報文(請求同步)到服務端,而且進入SYN_SENT(請求鏈接)狀態
,等待服務器確認;視頻
第二次握手:服務端收到客戶端發送過來的請求同步的 SYN報文以後,給客戶端發送 贊成鏈接 的 ACK(ACK=x+1)報文 ACK(確認響應);同時也給客戶端發送一個請求同步的 SYN (SEQ=y)報文,此時服務端進入SYN_RECV(SYN派遣狀態)
;blog
第三次握手:客戶端收到服務端發送的SYN + ACK兩個報文以後,向服務端發送確認鏈接的ACK(ACK=y+1)報文,等此包發送完畢,客戶端與服務端進入ESTABLISHED(TCP鏈接成功)狀態
,完成三次握手,客戶端與服務端正式開始傳輸數據排序
三、終止一個TCP鏈接要通過四次揮手,其過程以下:同步
第一次揮手:主動關閉方(active close)
調用close,會發送一個長度爲0的數據包以及FIN分節(結束標誌)用來關閉主動方與被動關閉方之間的數據傳輸,告訴被動關閉方:我不會再給你發數據了,可是,此時主動關閉方還能夠接受數據;io
第二次揮手:被動關閉方收到FIN分節後,發送一個ACK給對方,確認序號爲收到序號 + 1;
第三次揮手:被動關閉方再給主動關閉方發送一個FIN,用來關閉被動關閉方與主動關閉方之間的數據傳輸,也就是告訴主動關閉方,個人數據也發送完了,不會再給你發數據了;
第四次揮手:主動關閉方收到FIN後,發送一個ACK給被動關閉方,確認序號爲收到序號 + 1,至此,完成四次揮手。
1.應用數據被分割成TCP認爲最適合發送的數據塊。這和UDP徹底不一樣,應用程序產生的數據長度將保持不變。由TCP傳遞給IP的信息單位稱爲報文段或段(segment)。
2.當TCP發出一個段後,它啓動一個定時器,等待目的端確認收到這個報文段。若是不能及時收到一個確認,將重發這個報文段。當TCP收到發自TCP鏈接另外一端的數據,它將發送一個確認。TCP有延遲確認的功能,在此功能沒有打開,則是當即確認。功能打開,則由定時器觸發確認時間點。
3.TCP將保持它首部和數據的檢驗和。這是一個端到端的檢驗和,目的是檢測數據在傳輸過程當中的任何變化。若是收到段的檢驗和有差錯,TCP將丟棄這個報文段和不確認收到此報文段(但願發端超時並重發)。
4.既然TCP報文段做爲IP數據報來傳輸,而IP數據報的到達可能會失序,所以TCP報文段的到達也可能會失序。若是必要,TCP將對收到的數據進行從新排序,將收到的數據以正確的順序交給應用層。
5.既然IP數據報會發生重複,TCP的接收端必須丟棄重複的數據。
6.TCP還能提供流量控制。TCP鏈接的每一方都有固定大小的緩衝空間。TCP的接收端只容許另外一端發送接收端緩衝區所能接納的數據。這將防止較快主機導致較慢主機的緩衝區溢出。
TCP 是面向鏈接的傳輸控制協議,而UDP 提供了無鏈接的數據報服務
;TCP 具備高可靠性,確保傳輸數據的正確性,不出現丟失或亂序
;UDP 在傳輸數據前不創建鏈接,不對數據報進行檢查與修改,無須等待對方的應答,因此會出現分組丟失、重複、亂序,應用程序須要負責傳輸可靠性方面的全部工做
;UDP 具備較好的實時性,工做效率較 TCP 協議高
;UDP 段結構比 TCP 的段結構簡單,所以網絡開銷也小
;TCP 協議能夠保證接收端毫無差錯地接收到發送端發出的字節流,爲應用程序提供可靠的通訊服務
;對可靠性要求高的通訊系統每每使用 TCP 傳輸數據。好比 HTTP 運用 TCP 進行數據的傳輸
。