两类传输协议:TCPUDP总结
兩類傳輸協議:TCP;UDP
TCP是Tranfer Control Protocol的 簡稱,是一種面向連接的保證可靠傳輸的協議。通過TCP協議傳輸,得到的是一個順序的無差錯的數據流。發送方和接收方的成對的兩個socket之間必須建 立連接,以便在TCP協議的基礎上進行通信,當一個socket(通常都是server socket)等待建立連接時,還有一個socket能夠要求進行連接,一旦這兩個socket連接起來,它們就能夠進行雙向傳輸數據,兩方都能夠進行發送 或接收操作。
UDP是User Datagram Protocol的簡稱,是一種無連接的協議,每一個數據報都是一個獨立的信息,包含完整的源地址或目的地址,它在網絡上以不論什么可能的路徑傳往目的地,因此能否到達目的地,到達目的地的時間以及內容的正確性都是不能被保證的。
不同于ISO模型的七個分層,TCP/IP協議參考模型把所有的TCP/IP系列協議歸類到四個抽象層中
應用層:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
傳輸層:TCP,UDP
網絡層:IP,ICMP,OSPF,EIGRP,IGMP
數據鏈路層:SLIP,CSLIP,PPP,MTU
每一抽象層建立在低一層提供的服務上,并且為高一層提供服務,看起來大概是這樣子的
在TCP/IP協議中兩個因特網主機通過兩個路由器和對應的層連接。各主機上的應用通過一些數據通道相互執行讀取操作;
比較:
UDP:
1,每一個數據報中都給出了完整的地址信息,因此無須要建立發送方和接收方的連接。
2,UDP傳輸數據時是有限制大小的,每一個被傳輸的數據報必須限定在64KB之內。
3,UDP是一個不可靠的協議,發送方所發送的數據報并不一定以相同的次序到達接收方
TCP:
1,面向連接的協議,在socket之間進行傳輸數據之前必定要建立連接,所以在TCP中須要連接時間。
2,TCP傳輸數據限制大小,一旦連接建立起來,兩方的socket就能夠按統一的格式傳輸大的數據。
3,TCP是一個可靠的協議,它確保接收方全然正確地獲取發送方所發送的所有數據。
應用:
1,TCP在網絡通信上有極強的生命力,比如遠程連接(Telnet)和文件傳輸(FTP)都須要不定長度的數據被可靠地傳輸。可是可靠的傳輸是要付出代價的,對數據內容正確性的檢驗必定占用計算機的處理時間和網絡的帶寬,因此TCP傳輸的效率不如UDP高。
2,UDP操作簡單,而且僅須要較少的監護,因此通常常使用于局域網高可靠性的分散系統中client/server應用程序。比如視頻會議系統,并不要求音頻視頻數據絕對的正確,僅僅要保證連貫性就能夠了,這樣的情況下顯然使用UDP會更合理一些。
三次握手
在TCP/IP協議中,TCP協議通過三次握手建立一個可靠的連接
第一次握手:客戶端嘗試連接服務器,向服務器發送syn包(同步序列編號Synchronize Sequence Numbers),syn=j,客戶端進入SYN_SEND狀態等待服務器確認
第二次握手:服務器接收客戶端syn包并確認(ack=j+1),同時向客戶端發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態
第三次握手:第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手;
面試中常考到的關于TCP/UDP的問題:
TCP和UDP的區別
1、TCP是面向鏈接的,雖然說網絡的不安全不穩定特性決定了多少次握手都不能保證連接的可靠性,但TCP的三次握手在最低限度上(實際上也很大程度上保證了)保證了連接的可靠性;
而UDP不是面向連接的,UDP傳送數據前并不與對方建立連接,對接收到的數據也不發送確認信號,發送端不知道數據是否會正確接收,當然也不用重發,所以說UDP是無連接的、不可靠的一種數據傳輸協議。
2、也正由于1所說的特點,使得UDP的開銷更小數據傳輸速率更高,因為不必進行收發數據的確認,所以UDP的實時性更好。
知道了TCP和UDP的區別,就不難理解為何采用TCP傳輸協議的MSN比采用UDP的QQ傳輸文件慢了,但并不能說QQ的通信是不安全的,
因為程序員可以手動對UDP的數據收發進行驗證,比如發送方對每個數據包進行編號然后由接收方進行驗證啊什么的,
即使是這樣,UDP因為在底層協議的封裝上沒有采用類似TCP的“三次握手”而實現了TCP所無法達到的傳輸效率。
總結
以上是生活随笔為你收集整理的两类传输协议:TCPUDP总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java线程】互斥 同步 异步 并发
- 下一篇: socket编程总结