在介紹完TCP/IP協(xié)議族后,接下來為大家介紹TCP與UDP協(xié)議。
在介紹之前我們先來了解一下協(xié)議的意思,協(xié)議呢就像是規(guī)章制度,只不過它是由計算機規(guī)定的規(guī)章制度,在規(guī)章制度上有很多的條例需要去遵守,例如怎么建立連接,怎么相互識別等等。當(dāng)然在計算中有許多協(xié)議,TCP協(xié)議和UDP協(xié)議只是其中的兩個協(xié)議,它們都存在于TCP/IP模型中,如下圖。
如圖所示TCP協(xié)議和UDP協(xié)議都在傳輸層中,傳輸層就是進行數(shù)據(jù)傳輸以及糾正錯誤的。在簡單的介紹后我們進入正題。
TCP協(xié)議:
TCP協(xié)議英文全拼為Transmission Control Protocol,中文意思是傳輸控制協(xié)議,提供的是面向連接、可靠的字節(jié)流服務(wù)。當(dāng)客戶和服務(wù)器彼此交換數(shù)據(jù)前,必須先在雙方之間建立一個TCP連接,之后才能傳輸數(shù)據(jù)。比如說用手機打電話必須等對方接通后才能聊天,所以說TCP連接就只適合雙方的通信。從這個分析可以看出,建立連接可以在需要在雙方建立一個傳遞信息的通道,在發(fā)送方發(fā)送請求連接信息接收方響應(yīng)后才能開始傳遞信息,而且是在一個通道中傳送,因此接受方能比較完整地收到發(fā)送方發(fā)出的信息,即信息傳遞的可靠性比較高。但也正因為需要建立連接,使資源開銷加大(在建立連接前必須等待接受方響應(yīng),傳輸信息過程中必須確認信息是否傳到及斷開連接時發(fā)出相應(yīng)的信號等),獨占一個通道,在斷開連接錢不能建立另一個連接,即兩人在通話過程中第三方不能打入電話。通信TCP提供超時重發(fā),丟棄重復(fù)數(shù)據(jù),檢驗數(shù)據(jù),流量控制等功能,保證數(shù)據(jù)能從一端傳到另一端。
UDP協(xié)議:
UDP協(xié)議英文全拼為User Datagram Protocol,中文意思是用戶數(shù)據(jù)報協(xié)議,是一個簡單的面向數(shù)據(jù)報也就是面向無連接的傳輸層協(xié)議。UDP不提供可靠性,它只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報發(fā)送出去,但是并不能保證它們能到達目的地,比如用手機發(fā)短信,不用等對方應(yīng)答,由于UDP在傳輸數(shù)據(jù)報前不用在客戶和服務(wù)器之間建立一個連接,且沒有超時重發(fā)等機制,故而傳輸速度很快。但是因為它是先不需要接受方的響應(yīng),因而在一定程度上也無法保證信息傳遞的可靠性了,也就像寫信一樣,我們只是將信寄出去,卻不能保證收信人一定可以收到。
TCP與UDP區(qū)別小結(jié):
現(xiàn)在我們來總結(jié)一下TCP與UDP的區(qū)別。TCP:面向連接(如手機通話)、穩(wěn)定、需要資源多、保證數(shù)據(jù)正確性、保證數(shù)據(jù)順序。UDP:面向無連接(如手機發(fā)短信)、不穩(wěn)定、需要資源少、不保證數(shù)據(jù)順序。我們要實現(xiàn)的功能是計算機雙方消息準(zhǔn)確地接收。因此我們選擇的TCP協(xié)議的Socket編程。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導(dǎo)課程