



版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、TCP 和 UDP 的區(qū)別和關鍵知識點TCP 和 UDP 的區(qū)別和關鍵知識點1TCP 和 UDP 區(qū)別TCP- 傳輸控制協(xié)議 ,提供的是面向連接、可靠的字節(jié)流服務。當客戶端和服務器彼此交換數(shù)據(jù)前,必須先在雙方之間建立一個TCP 連接,之后才能傳輸數(shù)據(jù)。 TCP 提供超時重發(fā),丟棄重復數(shù)據(jù),檢驗數(shù)據(jù),流量控制等功能,保證數(shù)據(jù)能從一端傳到另一端。UDP- 用戶數(shù)據(jù)報協(xié)議,是一個簡單的面向數(shù)據(jù)報的運輸層協(xié)議。UDP 不提供可靠性,它只是把應用程序傳給IP 層的數(shù)據(jù)報發(fā)送出去,但是并不能保證它們能到達目的地。由于UDP 在傳輸數(shù)據(jù)報前不用在客戶和服務器之間建立一個連接,且沒有超時重發(fā)等機制,故而傳輸速
2、度很快。TCPUDP是否連接面向連接面向非連接傳輸可靠性可靠會丟包,不可靠應用場景傳輸數(shù)據(jù)量大傳輸量小速度慢快2TCP 與 UDP 的選擇當數(shù)據(jù)傳輸?shù)男阅鼙仨氉屛挥跀?shù)據(jù)傳輸?shù)耐暾?、可控制性和可靠性時,TCP 協(xié)議是當然的選擇。當強調(diào)傳輸性能而不是傳輸?shù)耐暾詴r,如:音頻和多媒體應用, UDP 是最好的選擇。在數(shù)據(jù)傳輸時間很短,以至于此前的連接過程成為整個流量主體的情況下,UDP 也是一個好的選擇,如:DNS 交換。把SNMP 建立在 UDP 上的部分原因是設計者認為當發(fā)生網(wǎng)絡阻塞時,UDP 較低的開銷使其有更好的機會去傳送管理數(shù)據(jù)。TCP 豐富的功能有時會導致不可預料的性能低下,但是我們相信
3、在不遠的將來,TCP 可靠的點對點連接將會用于絕大多數(shù)的網(wǎng)絡應用。3為什么 UDP 有時比 TCP 更有優(yōu)勢 ?UDP 以其簡單、傳輸快的優(yōu)勢,在越來越多場景下取代了TCP,如實時游戲。(1)網(wǎng)速的提升給UDP 的穩(wěn)定性提供可靠網(wǎng)絡保障,丟包率很低,如果使用應用層重傳,能夠確保傳輸?shù)目煽啃浴#?)TCP 為了實現(xiàn)網(wǎng)絡通信的可靠性,使用了復雜的擁塞控制算法,建立了繁瑣的握手過程,由于TCP 內(nèi)置的系統(tǒng)協(xié)議棧中,極難對其進行改進。采用 TCP,一旦發(fā)生丟包, TCP 會將后續(xù)的包緩存起來,等前面的包重傳并接收到后再繼續(xù)發(fā)送,延時會越來越大,基于UDP 對實時性要求較為嚴格的情況下,采用自定義重傳機
4、制,能夠把丟包產(chǎn)生的延遲降到最低,盡量減少網(wǎng)絡問題對游戲性造成影響。在選擇使用協(xié)議的時候,選擇UDP 必須要謹慎。在網(wǎng)絡質(zhì)量令人十分不滿意的環(huán)境下, UDP 協(xié)議數(shù)據(jù)包丟失會比較嚴重。但是由于UDP 的特性:它不屬于連接型協(xié)議,因而具有資源消耗小,處理速度快的優(yōu)點,所以通常音頻、視頻和普通數(shù)據(jù)在傳送時使用UDP 較多,因為它們即使偶爾丟失一兩個數(shù)據(jù)包,也不會對接收結(jié)果產(chǎn)生太大影響。比如我們聊天用的ICQ 和 QQ 就是使用的 UDP 協(xié)議。4UDP 和 TCP 編程步驟1)TCP:TCP 編程的服務器端 一般步驟是:1、創(chuàng)建一個 socket ,用函數(shù) socket() ; SOCKET So
5、cketListen=socket(AF_INET,SOCK_STREAM, IPPROTO_TCP);2、設置 socket 屬性,用函數(shù) setsockopt(); * 可選3、綁定 IP 地址、端口等信息到 socket 上,用函數(shù) bind();SOCKET_ERROR = bind(SocketListen,(constsockaddr*)&addr,sizeof(addr)4、開啟監(jiān)聽,用函數(shù)listen() ;SOCKET_ERROR= listen(SocketListen,2)5、接收客戶端上來的連接,用函數(shù)accept() ;SOCKETSocketWaiter = acc
6、ept(SocketListen,_Out_struct sockaddr *addr_Inout_ int *addrlen);6、收發(fā)數(shù)據(jù),用函數(shù)send() 和 recv() ,或者 read() 和 write();7、關閉網(wǎng)絡連接; closesocket(SocketListen);closesocket(SocketWaiter);8、關閉監(jiān)聽;SOCK_STREAM 這種的特點是面向連接的,即每次收發(fā)數(shù)據(jù)之前必須通過connect建立連接,而 SOCK_DGRAM 這種是 User Datagram Protocol協(xié)議的網(wǎng)絡通訊,它是無連接的,不可靠的。TCP 編程的客戶端一
7、般步驟是:1、創(chuàng)建一個 socket ,用函數(shù) socket() ;2、設置 socket 屬性,用函數(shù) setsockopt();*可選3、綁定 IP 地址、端口等信息到socket 上,用函數(shù) bind();*可選4、設置要連接的對方的IP 地址和端口等屬性;5、連接服務器,用函數(shù)connect() ;6、收發(fā)數(shù)據(jù),用函數(shù)send() 和 recv() ,或者 read() 和 write();7、關閉網(wǎng)絡連接;int send(_In_ SOCKET s,/向哪個 socket 發(fā)送, accept 返回的 socket 。_In_ const char *buf,_In_ int le
8、n,_In_ int flags);由于send(SocketClient,(const char*)&fh,sizeof(fh),0);recv(SocketClient,szbuf,sizeof(szbuf),0);2)UDP:與之對應的 UDP 編程步驟要簡單許多,分別如下:UDP 編程的服務器端 一般步驟是:1、創(chuàng)建一個 socket ,用函數(shù) socket() ;2、設置 socket 屬性,用函數(shù) setsockopt();*可選3、綁定 IP 地址、端口等信息到socket 上,用函數(shù) bind();4、循環(huán)接收數(shù)據(jù),用函數(shù)recvfrom();5、關閉網(wǎng)絡連接;UDP 編程的客
9、戶端一般步驟是:1、創(chuàng)建一個 socket ,用函數(shù) socket() ;2、設置 socket 屬性,用函數(shù) setsockopt();*可選3、綁定 IP 地址、端口等信息到socket 上,用函數(shù) bind();*可選4、設置對方的 IP 地址和端口等屬性 ;5、發(fā)送數(shù)據(jù),用函數(shù)sendto();6、關閉網(wǎng)絡連接;int recvfrom(_In_SOCKET s,/綁定的 socket_Out_char *buf,_In_int len,_In_int flags,_Out_struct sockaddr *from, /用來接收對方的_Inout_opt_int *fromlen);
10、intnres= recvfrom (pThis-m_socketListen,szBuf,sizeof(szBuf),0,(sockaddr*)&addrClient,&nSize);/0 處標志位sendto(m_socketListen,szBuffer,nSize,0,(constsockaddr*)&addr,sizeof(sockaddr_in)TCP 和 UDP 是 OSI 模型中的運輸層中的協(xié)議。TCP 提供可靠的通信傳輸,而UDP 則常被用于讓廣播和細節(jié)控制交給應用的通信傳輸。5. 將 socket 設置為廣播屬性bool optval=true;setsockopt(m_s
11、ocketListen,SOL_SOCKET,SO_BROADCAST,(const char*)&optval,sizeof(bool);6. 將 Socket 設置為非阻塞/bool benable=true;/ioctlsocket(m_socketListen,FIONBIO,(u_long*)&benable);7. Tcp 頭, 20 字節(jié)8. UDP 首部 ,8 個字節(jié)9. 總結(jié)a) TCP 面向連接(如打電話要先撥號建立連接) ;UDP 是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接b) TCP 提供可靠的服務。也就是說,通過TCP 連接傳送的數(shù)據(jù),無差錯,不丟失,不重復,且按序到達;UDP 盡最大努力交付,即不保證可靠交付c) TCP 面向字節(jié)流,實際上是TCP 把數(shù)據(jù)看成一連串無結(jié)構的字節(jié)流;UDP 是面向報文的d) UDP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 渝北石紋地板施工方案
- 碑林區(qū)高一聯(lián)考數(shù)學試卷
- 鼓樓區(qū)樓道出新施工方案
- 電廠排灰委托運行施工方案
- 樓梯間踢腳線粉墻施工方案
- 2025年大數(shù)據(jù)展現(xiàn)平臺合作協(xié)議書
- 數(shù)控加工工藝與編程技術基礎 教案 模塊二 項目二 綜合件的加工(3-4)
- 加強農(nóng)田基礎設施建設實施方案
- 揮發(fā)性有機物排放控制的法律法規(guī)及政策要求
- 強化基本醫(yī)療衛(wèi)生服務的策略及實施路徑
- 2025年安徽水利水電職業(yè)技術學院單招職業(yè)適應性測試題庫帶答案
- 浙江省浙南名校聯(lián)盟2024-2025學年高一2月返校檢測語文試題及答案
- 2025年安徽水利水電職業(yè)技術學院單招職業(yè)技能考試題庫往年題考
- 2025年中央一號文件參考試題庫100題(含答案)
- 綠色大氣簡約國潮動態(tài)三星堆文化宣傳介紹
- 《西亞》教學課件(第1課時)(25張)公開課教案課件
- 04S519小型排水構筑物(含隔油池)圖集
- 家具銷售合同,家居訂購訂貨協(xié)議A4標準版(精編版)
- 學位論文:基于Flowmaster的4H發(fā)動機熱管理系統(tǒng)的計算
- 華為SUN8000500KTLMODBUS接口定義描述V141
- 簽證護照代領取委托書中英文
評論
0/150
提交評論