日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

网络协议-TCP和UDP最完整的区别介绍

發(fā)布時(shí)間:2024/3/13 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络协议-TCP和UDP最完整的区别介绍 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?網(wǎng)絡(luò)協(xié)議-TCP和UDP最完整的區(qū)別介紹

前言:為了方便后期翻看,公眾號(hào)在慢慢整理所發(fā)文章,關(guān)于Java網(wǎng)絡(luò)編程內(nèi)容的文章,可以在菜單欄-文章整理-進(jìn)階篇模塊中查看。


TCP與UDP基本區(qū)別
? 1.基于連接與無(wú)連接
? 2.TCP要求系統(tǒng)資源較多,UDP較少;?
? 3.UDP程序結(jié)構(gòu)較簡(jiǎn)單?
? 4.流模式(TCP)與數(shù)據(jù)報(bào)模式(UDP);?
? 5.TCP保證數(shù)據(jù)正確性,UDP可能丟包?
? 6.TCP保證數(shù)據(jù)順序,UDP不保證?
  
UDP應(yīng)用場(chǎng)景:
??1.面向數(shù)據(jù)報(bào)方式
? 2.網(wǎng)絡(luò)數(shù)據(jù)大多為短消息?
? 3.擁有大量Client
? 4.對(duì)數(shù)據(jù)安全性無(wú)特殊要求
? 5.網(wǎng)絡(luò)負(fù)擔(dān)非常重,但對(duì)響應(yīng)速度要求高
?
具體編程時(shí)的區(qū)別
???1.socket()的參數(shù)不同?
???2.UDP Server不需要調(diào)用listen和accept?
 3.UDP收發(fā)數(shù)據(jù)用sendto/recvfrom函數(shù)?
 4.TCP:地址信息在connect/accept時(shí)確定?
 5.UDP:在sendto/recvfrom函數(shù)中每次均 需指定地址信息?
 6.UDP:shutdown函數(shù)無(wú)效

?
編程區(qū)別
? ?通常我們?cè)谡f(shuō)到網(wǎng)絡(luò)編程時(shí)默認(rèn)是指TCP編程,即用前面提到的socket函數(shù)創(chuàng)建一個(gè)socket用于TCP通訊,函數(shù)參數(shù)我們通常填為SOCK_STREAM。即socket(PF_INET, SOCK_STREAM, 0),這表示建立一個(gè)socket用于流式網(wǎng)絡(luò)通訊。?
  ?SOCK_STREAM這種的特點(diǎn)是面向連接的,即每次收發(fā)數(shù)據(jù)之前必須通過(guò)connect建立連接,也是雙向的,即任何一方都可以收發(fā)數(shù)據(jù),協(xié)議本身提供了一些保障機(jī)制保證它是可靠的、有序的,即每個(gè)包按照發(fā)送的順序到達(dá)接收方。?

  而SOCK_DGRAM這種是User Datagram Protocol協(xié)議的網(wǎng)絡(luò)通訊,它是無(wú)連接的,不可靠的,因?yàn)橥ㄓ嶋p方發(fā)送數(shù)據(jù)后不知道對(duì)方是否已經(jīng)收到數(shù)據(jù),是否正常收到數(shù)據(jù)。任何一方建立一個(gè)socket以后就可以用sendto發(fā)送數(shù)據(jù),也可以用recvfrom接收數(shù)據(jù)。根本不關(guān)心對(duì)方是否存在,是否發(fā)送了數(shù)據(jù)。它的特點(diǎn)是通訊速度比較快。大家都知道TCP是要經(jīng)過(guò)三次握手的,而UDP沒(méi)有。?

基于上述不同,UDP和TCP編程步驟也有些不同,如下:


TCP:?

TCP編程的服務(wù)器端一般步驟是:?
  1、創(chuàng)建一個(gè)socket,用函數(shù)socket();?
  2、設(shè)置socket屬性,用函數(shù)setsockopt(); * 可選?
  3、綁定IP地址、端口等信息到socket上,用函數(shù)bind();?
  4、開(kāi)啟監(jiān)聽(tīng),用函數(shù)listen();?
  5、接收客戶端上來(lái)的連接,用函數(shù)accept();?
  6、收發(fā)數(shù)據(jù),用函數(shù)send()和recv(),或者read()和write();?
  7、關(guān)閉網(wǎng)絡(luò)連接;?
  8、關(guān)閉監(jiān)聽(tīng);?

TCP編程的客戶端一般步驟是:?
  1、創(chuàng)建一個(gè)socket,用函數(shù)socket();?
  2、設(shè)置socket屬性,用函數(shù)setsockopt();* 可選?
  3、綁定IP地址、端口等信息到socket上,用函數(shù)bind();* 可選?
  4、設(shè)置要連接的對(duì)方的IP地址和端口等屬性;?
  5、連接服務(wù)器,用函數(shù)connect();?
  6、收發(fā)數(shù)據(jù),用函數(shù)send()和recv(),或者read()和write();?
  7、關(guān)閉網(wǎng)絡(luò)連接;


UDP:

與之對(duì)應(yīng)的UDP編程步驟要簡(jiǎn)單許多,分別如下:?
  UDP編程的服務(wù)器端一般步驟是:?
  1、創(chuàng)建一個(gè)socket,用函數(shù)socket();?
  2、設(shè)置socket屬性,用函數(shù)setsockopt();* 可選?
  3、綁定IP地址、端口等信息到socket上,用函數(shù)bind();?
  4、循環(huán)接收數(shù)據(jù),用函數(shù)recvfrom();?
  5、關(guān)閉網(wǎng)絡(luò)連接;?

UDP編程的客戶端一般步驟是:?
  1、創(chuàng)建一個(gè)socket,用函數(shù)socket();?
  2、設(shè)置socket屬性,用函數(shù)setsockopt();* 可選?
  3、綁定IP地址、端口等信息到socket上,用函數(shù)bind();* 可選?
  4、設(shè)置對(duì)方的IP地址和端口等屬性;?
  5、發(fā)送數(shù)據(jù),用函數(shù)sendto();?
  6、關(guān)閉網(wǎng)絡(luò)連接;

TCP和UDP是OSI模型中的運(yùn)輸層中的協(xié)議。TCP提供可靠的通信傳輸,而UDP則常被用于讓廣播和細(xì)節(jié)控制交給應(yīng)用的通信傳輸。


區(qū)別補(bǔ)充:

UDP:
????????UDP不提供復(fù)雜的控制機(jī)制,利用IP提供面向無(wú)連接的通信服務(wù)。并且它是將應(yīng)用程序發(fā)來(lái)的數(shù)據(jù)在收到的那一刻,立刻按照原樣發(fā)送到網(wǎng)絡(luò)上的一種機(jī)制。即使是出現(xiàn)網(wǎng)絡(luò)擁堵的情況下,UDP也無(wú)法進(jìn)行流量控制等避免網(wǎng)絡(luò)擁塞的行為。此外,傳輸途中如果出現(xiàn)了丟包,UDO也不負(fù)責(zé)重發(fā)。甚至當(dāng)出現(xiàn)包的到達(dá)順序亂掉時(shí)也沒(méi)有糾正的功能。如果需要這些細(xì)節(jié)控制,那么不得不交給由采用UDO的應(yīng)用程序去處理。換句話說(shuō),UDP將部分控制轉(zhuǎn)移到應(yīng)用程序去處理,自己卻只提供作為傳輸層協(xié)議的最基本功能。UDP有點(diǎn)類似于用戶說(shuō)什么聽(tīng)什么的機(jī)制,但是需要用戶充分考慮好上層協(xié)議類型并制作相應(yīng)的應(yīng)用程序。

TCP:
????????TCP充分實(shí)現(xiàn)了數(shù)據(jù)傳輸時(shí)各種控制功能,可以進(jìn)行丟包的重發(fā)控制,還可以對(duì)次序亂掉的分包進(jìn)行順序控制。而這些在UDP中都沒(méi)有。此外,TCP作為一種面向有連接的協(xié)議,只有在確認(rèn)通信對(duì)端存在時(shí)才會(huì)發(fā)送數(shù)據(jù),從而可以控制通信流量的浪費(fèi)。TCP通過(guò)檢驗(yàn)和、序列號(hào)、確認(rèn)應(yīng)答、重發(fā)控制、連接管理以及窗口控制等機(jī)制實(shí)現(xiàn)可靠性傳輸。


TCP與UDP區(qū)別總結(jié):

1、TCP面向連接(如打電話要先撥號(hào)建立連接);UDP是無(wú)連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接
2、TCP提供可靠的服務(wù)。也就是說(shuō),通過(guò)TCP連接傳送的數(shù)據(jù),無(wú)差錯(cuò),不丟失,不重復(fù),且按序到達(dá);UDP盡最大努力交付,即不保 ? 證可靠交付
3、TCP面向字節(jié)流,實(shí)際上是TCP把數(shù)據(jù)看成一連串無(wú)結(jié)構(gòu)的字節(jié)流;UDP是面向報(bào)文的
? UDP沒(méi)有擁塞控制,因此網(wǎng)絡(luò)出現(xiàn)擁塞不會(huì)使源主機(jī)的發(fā)送速率降低(對(duì)實(shí)時(shí)應(yīng)用很有用,如IP電話,實(shí)時(shí)視頻會(huì)議等)
4、每一條TCP連接只能是點(diǎn)到點(diǎn)的;UDP支持一對(duì)一,一對(duì)多,多對(duì)一和多對(duì)多的交互通信
5、TCP首部開(kāi)銷20字節(jié);UDP的首部開(kāi)銷小,只有8個(gè)字節(jié)
6、TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道


來(lái)源:CSDN

鏈接:http://blog.csdn.net/Li_Ning_/article/details/52117463


總結(jié)

以上是生活随笔為你收集整理的网络协议-TCP和UDP最完整的区别介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。