Java 网络编程(二) 两类传输协议:TCP UDP
?
兩類傳輸協(xié)議:TCP,UDP
?
TCP
TCP是Transfer Control Protocol(傳輸控制協(xié)議)的簡稱,是一種面向連接的保證可靠傳輸?shù)膮f(xié)議。
在TCP/IP協(xié)議中,
IP層主要負(fù)責(zé)網(wǎng)絡(luò)主機(jī)的定位,數(shù)據(jù)傳輸?shù)穆酚?#xff0c;由IP地址可以唯一確定Internet上的一臺主機(jī)。
而TCP層則提供面向應(yīng)用的可靠的或非可靠的數(shù)據(jù)傳輸機(jī)制,這是網(wǎng)絡(luò)編程的主要對象,一般不需要關(guān)心IP層是如何處理數(shù)據(jù)的。
通過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ā)送或接收操作。
TCP是一個基于連接的協(xié)議,它能夠提供兩臺計算機(jī)之間的可靠的數(shù)據(jù)流。
HTTP、FTP、Telnet等應(yīng)用都需要這種可靠的通信通道。
?
UDP
UDP是User Datagram Protocol的簡稱,是一種無連接的協(xié)議。
UDP是從一臺計算機(jī)向另一臺計算機(jī)發(fā)送稱為數(shù)據(jù)報的獨(dú)立數(shù)據(jù)包的協(xié)議,該協(xié)議并不保證數(shù)據(jù)報是否能正確地到達(dá)目的地,它是一個非面向連接的協(xié)議。
每個數(shù)據(jù)報都是一個獨(dú)立的信息,包括完整的源地址或目的地址,它在網(wǎng)絡(luò)上以任何可能的路徑傳往目的地,因此能否到達(dá)目的地,到達(dá)時間以及內(nèi)容的正確性都是不能保證的。
?
TCP和UDP的比較
使用UDP時,每個數(shù)據(jù)報中都給出了完整的地址信息,因此無需建立發(fā)送方和接收方的連接。
對于TCP協(xié)議,由于它是一個面向連接的協(xié)議,在socket之間進(jìn)行數(shù)據(jù)傳輸之前必然要建立連接,所以在TCP中多了一個連接建立的時間。
?
使用UDP傳輸數(shù)據(jù)時是有大小限制的,每個被傳輸?shù)臄?shù)據(jù)報必須限定在64KB之內(nèi)。
TCP沒有這方面的限制,一旦連接建立起來,雙方的socket就可以按統(tǒng)一的格式傳輸大量的數(shù)據(jù)。
?
UDP是一個不可靠的協(xié)議,發(fā)送方所發(fā)送的數(shù)據(jù)報并不一定以相同的次序到達(dá)接收方。
TCP是一個可靠的協(xié)議,它確保接收方完全正確地獲取發(fā)送方所發(fā)送的全部數(shù)據(jù)。
可靠的傳輸是要付出代價的,對數(shù)據(jù)內(nèi)容正確性的檢驗(yàn)必然占用計算機(jī)的處理時間和網(wǎng)絡(luò)的帶寬。因此TCP傳輸?shù)男什蝗鏤DP高。
?
TCP在網(wǎng)路通信上有極強(qiáng)的生命力,例如遠(yuǎn)程連接(Telnet)和文件傳輸(FTP)都需要不定長度的數(shù)據(jù)被可靠地傳輸。
相比之下UDP操作簡單,而且僅需要較少的監(jiān)護(hù),因此通常用于局域網(wǎng)高可靠性的分散系統(tǒng)中client/server應(yīng)用程序。
此處推薦書籍《TCP/IP詳解》,分三卷。
?
TCP/IP模型
TCP/IP模型包括四個層次:
應(yīng)用層
傳輸層
網(wǎng)絡(luò)層
網(wǎng)絡(luò)接口
TCP/IP與OSI參考模型的對應(yīng)關(guān)系:
?
JDK中的網(wǎng)絡(luò)類
通過java.net包中的類,java程序能夠使用TCP或UDP協(xié)議在互聯(lián)網(wǎng)上進(jìn)行通訊。
Java通過擴(kuò)展已有的流式輸入/輸出接口和增加在網(wǎng)絡(luò)上建立輸入/輸出對象特性這兩個方法支持TCP/IP。
Java支持TCP和UDP協(xié)議族。
TCP用于網(wǎng)絡(luò)的可靠的流式輸入/輸出。
UDP支持更簡單的、快速的、點(diǎn)對點(diǎn)的數(shù)據(jù)報模式。
?
參考資料
圣思園張龍老師Java SE系列視頻教程。
轉(zhuǎn)載于:https://www.cnblogs.com/mengdd/archive/2013/03/09/2951841.html
總結(jié)
以上是生活随笔為你收集整理的Java 网络编程(二) 两类传输协议:TCP UDP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js中this和回调方法循环-我们到底能
- 下一篇: java ioutils_关于Java: