更新時間:2017-11-14 來源:黑馬程序員 瀏覽量:
要想了解TCP協(xié)議和UDP協(xié)議的區(qū)別,首先我們要了解TCP/IP協(xié)議,TCP/IP協(xié)議是個協(xié)議族。里面包含很多協(xié)議,UDP只是其中的一個,之所以命名為TCP/IP協(xié)議,因為TCP,IP協(xié)議是兩個很重要的協(xié)議,就以它們命名了。TCP/IP協(xié)議包含應用層,傳輸層,網(wǎng)絡層,網(wǎng)絡訪問層。
下面我們就著重講解一下TCP協(xié)議和UDP協(xié)議的區(qū)別:
TCP(Transmission Control Protocol,傳輸控制協(xié)議)是面向連接的協(xié)議,也就是說,在收發(fā)數(shù)據(jù)前必須和對方建立可靠的連接。一個TCP連接必須要經(jīng)過三次“對話”才能建立起來,其中的過程非常復雜,下面只是簡單的描述下這三次對話的簡單過程:主機A向主機B發(fā)送連接請求數(shù)據(jù)包:“我想給你發(fā)送數(shù)據(jù),可以嗎?”,這是第一次會話:主機B向主機A發(fā)送同意連接和要求同步(同步就是兩臺主機一個在發(fā)送,一個在接收,協(xié)調工作)的數(shù)據(jù)包:“可以,什么時候發(fā)呢”,這是第二次對話:主機A再發(fā)出一個數(shù)據(jù)包確認主機B的要求同步:“我現(xiàn)在就發(fā),你接著吧”,這是第三次對話,這三次“對話”的目的是使數(shù)據(jù)包的發(fā)送和接收同步,經(jīng)過三次“對話”之后,主機A才向主機B正式發(fā)送數(shù)據(jù)。
TCP三次握手過程:
1、 主機A通過主機B發(fā)送一個含有同步序列號的標志位的數(shù)據(jù)段給主機B,向主機B請求簡歷連接,通過這個數(shù)據(jù)段,主機A告訴主機B兩件事:
我要和你通信;你可以用哪個序列號作為起始數(shù)據(jù)段來回應我。
2、 主機B接收帶主機A的請求后,用一個帶有確認應答(ACK)和同步序列號(SYN)標志位的數(shù)據(jù)段響應主機A,他也告訴主機A兩件事:
我已經(jīng)接收到你的請求了,你可以傳輸數(shù)據(jù)了;你要用哪個序列號作為起始數(shù)據(jù)段來回應我
3、 主機A接收到這個數(shù)據(jù)段后,在發(fā)送一個確認應答,確認已經(jīng)收到主句B的數(shù)據(jù)段:“我已經(jīng)收到回復,我現(xiàn)在要開始傳輸實際數(shù)據(jù)了”這樣三次握手就完成了主機A和主機B就可以傳輸數(shù)據(jù)了。
三次握手的特點:
沒有應用層的數(shù)據(jù),SYN這個標志位只用在TCP建立連接才會被設置1,握手完成后SYN標志位被設置為0。
UDP 是User Datagram Protocol的簡稱, 中文名是用戶數(shù)據(jù)包協(xié)議,是 OSI 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務的簡單不可靠信息傳送服務。
UDP協(xié)議特點:
1、UDP是一個非連接的協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,當它想傳輸時就簡單的去抓取來自應用程序的數(shù)據(jù),并盡可能快的把它扔在網(wǎng)絡上。在發(fā)送端,UDP傳輸數(shù)據(jù)的速度僅僅是受應用程序產(chǎn)生數(shù)據(jù)的速度、計算機的能力和傳輸寬帶的限制;在接收到,UDP把每個消息放在隊列中,應用程序每次從隊列中讀一個消息段。
2、由于傳輸數(shù)據(jù)不建立連接,因此也就不需要維護連接狀態(tài),包括收發(fā)送狀態(tài)等,因此 一臺服務機可同時向多個客戶機傳輸相同的消息。
3、UDP信息包的標題很短,只有8個字節(jié),相對于TCP的20個字節(jié)信息包的額外開銷很小。
4、吞吐量不受擁擠控制算法的調節(jié),只受應用軟件生成數(shù)據(jù)的速度、傳輸寬帶、源端和終端主機性能的限制。
5、UDP使用盡量最大努力交付,即不保證可靠交付,因此主機不需要維持復雜的連接狀態(tài)表。
6、UDP是面向報文的。發(fā)送方的UDP對應程序交下來的報文,在添加首部后就向下交付給IP層。既不拆分,也不合并,而是保留這些報文的邊界,因此,應用程序需要選擇合適的報文大小
我們經(jīng)常使用“ping”命令來測試兩臺主機之間TCP/IP通信是否正常,其實“ping”命令的原理及時面向對方主機發(fā)送UDP數(shù)據(jù)包,然后對方主機確認收到數(shù)據(jù)包,如果數(shù)據(jù)包是否達到達的消息及時反饋回來,那么網(wǎng)絡就是通的。
小結TCP協(xié)議和UDP協(xié)議區(qū)別:
1、 TCP基于連接,UDP基于無連接;
2、 TCP對系統(tǒng)資源要求較多,UDP較少;
3、 TCP是流模式,UDP是數(shù)據(jù)報模式;
4、 TCP保證數(shù)據(jù)完整性,UDP可能丟包;
5、 TCP保證數(shù)據(jù)順序,UDP不保證;
友情提示:獲得更多學科學習視頻+資料+源碼,請加QQ:3276250747。