成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面向報文(UDP)和面向字節流(TCP)的區別

網絡 網絡管理
面向報文的傳輸方式是應用層交給UDP多長的報文,UDP就照樣發送,即一次發送一個報文。因此,應用程序必須選擇合適大小的報文。

面向報文的傳輸方式是應用層交給UDP多長的報文,UDP就照樣發送,即一次發送一個報文。因此,應用程序必須選擇合適大小的報文。若報文太長,則IP層需要分片,降低效率。若太短,會是IP太小。UDP對應用層交下來的報文,既不合并,也不拆分,而是保留這些報文的邊界。這也就是說,應用層交給UDP多長的報文,UDP就照樣發送,即一次發送一個報文。

面向字節流的話,雖然應用程序和TCP的交互是一次一個數據塊(大小不等),但TCP把應用程序看成是一連串的無結構的字節流。TCP有一個緩沖,當應用程序傳送的數據塊太長,TCP就可以把它劃分短一些再傳送。如果應用程序一次只發送一個字節,TCP也可以等待積累有足夠多的字節后再構成報文段發送出去。

下圖是TCP和UDP協議的一些應用。

 

 

下圖是TCP和UDP協議的比較。

 

 

這里再詳細說一下面向連接和面向無連接的區別:

面向連接舉例:兩個人之間通過電話進行通信;

面向無連接舉例:郵政服務,用戶把信函放在郵件中期待郵政處理流程來傳遞郵政包裹。顯然,不可達代表不可靠。

從程序實現的角度來看,可以用下圖來進行描述。

 

 

從上圖也能清晰的看出,TCP通信需要服務器端偵聽listen、接收客戶端連接請求accept,等待客戶端connect建立連接后才能進行數據包的收發(recv/send)工作。而UDP則服務器和客戶端的概念不明顯,服務器端即接收端需要綁定端口,等待客戶端的數據的到來。后續便可以進行數據的收發(recvfrom/sendto)工作。

在前面講解UDP時,提到了UDP保留了報文的邊界,下面我們來談談TCP和UDP中報文的邊界問題。在默認的阻塞模式下,TCP無邊界,UDP有邊界。

● 對于TCP協議,客戶端連續發送數據,只要服務端的這個函數的緩沖區足夠大,會一次性接收過來,即客戶端是分好幾次發過來,是有邊界的,而服務端卻一次性接收過來,所以證明是無邊界的;

● 而對于UDP協議,客戶端連續發送數據,即使服務端的這個函數的緩沖區足夠大,也只會一次一次的接收,發送多少次接收多少次,即客戶端分幾次發送過來,服務端就必須按幾次接收,從而證明,這種UDP的通訊模式是有邊界的。

TCP無邊界,造成對采用TCP協議發送的數據進行接收比較麻煩,在接收的時候易出現粘包,即發送方發送的若干包數據到接收方接收時粘成一包。由于TCP是流協議,對于一個socket的包,如發送 10AAAAABBBBB兩次,由于網絡原因***次又分成兩次發送, 10AAAAAB和BBBB,如果接包的時候先讀取10(包長度)再讀入后續數據,當接收得快,發送的慢時,就會出現先接收了 10AAAAAB,會解釋錯誤 ,再接到BBBB10AAAAABBBBB,也解釋錯誤的情況。這就是TCP的粘包。

在網絡傳輸應用中,通常需要在網絡協議之上再自定義一個協議封裝一下,簡單做法就是在要發送的數據前面再加一個自定義的包頭,包頭中可以包含數據長度和其它一些信息,接收的時候先收包頭,再根據包頭中描述的數據長度來接收后面的數據。詳細做法是:先接收包頭,在包頭里指定包體長度來接收。設置包頭包尾的檢查位( 比如以0xAA開頭,0xCC結束來檢查一個包是否完整)。對于TCP來說:

1)不存在丟包,錯包,所以不會出現數據出錯 ;

2)如果包頭檢測錯誤,即為非法或者請求,直接重置即可。

為了避免粘包現象,可采取以下幾種措施。

一、對于發送方引起的粘包現象,用戶可通過編程設置來避免,TCP提供了強制數據立即傳送的操作指令push,TCP軟件收到該操作指令后,就立即將本段數據發送出去,而不必等待發送緩沖區滿;

二、對于接收方引起的粘包,則可通過優化程序設計、精簡接收進程工作量、提高接收進程優先級等措施,使其及時接收數據,從而盡量避免出現粘包現象;

三、由接收方控制,將一包數據按結構字段,人為控制分多次接收,然后合并,通過這種手段來避免粘包。

責任編輯:林琳 來源: CSDN
相關推薦

2013-10-17 10:35:06

TCP字節流UDP數據報

2022-07-30 23:41:53

面向過程面向對象面向協議編程

2013-07-30 09:42:41

實現編程接口編程對象編程

2015-03-20 09:54:44

網絡編程面向連接無連接

2010-07-09 11:12:09

UDP協議

2009-07-02 13:25:00

消除實現繼承面向接口編程Java

2009-06-22 11:27:59

反向控制原理面向切面編程Spring

2013-05-27 10:48:16

TCPUDP傳輸協議

2023-02-22 18:06:35

函數javascript面向對象編程

2023-10-24 15:22:09

TCPUDP

2010-07-07 10:45:22

TCP UDP協議

2017-09-25 21:27:07

TCP協議數據鏈

2015-10-09 10:49:06

AWS數據庫遷移RDS

2019-05-28 10:32:29

TCPUDP SYN

2021-01-29 06:11:08

TCP通信三次握手

2021-05-18 12:27:40

TCP控制協議

2019-09-06 09:05:25

TCP協議通信

2013-06-27 14:41:40

TCP端口TCP

2023-01-10 09:38:09

面向對象系統

2021-07-03 17:47:25

TCP控制協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产日韩精品一区二区 | 男女羞羞视频在线看 | av手机在线 | www操操| 一二三四在线视频观看社区 | 欧美日韩久久 | 精产嫩模国品一二三区 | 五月婷婷色 | 日本精品久久久久久久 | 黄视频网址| 美女视频一区二区三区 | 99自拍视频 | 黄色av大片 | 久久福利电影 | 精品伊人久久 | 国产农村妇女精品一二区 | 日本不卡一区 | 性精品| 色综合视频 | 黄色一级大片在线免费看产 | 中国大陆高清aⅴ毛片 | 亚洲有码转帖 | 免费精品久久久久久中文字幕 | 亚洲狠狠 | 午夜tv免费观看 | 久久国产亚洲 | 91影院在线观看 | 日韩免费av网站 | 国产专区在线 | 亚洲91| 超碰美女在线 | 久久久国产精品 | 国产婷婷色综合av蜜臀av | 国产一区二区三区视频在线观看 | 亚洲国产一区视频 | 亚洲h视频| 成人小视频在线观看 | 99免费在线 | 免费a网| 欧美性区 | 亚洲在线观看视频 |