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