udp使用者資料報協議,它是乙個無連線的,面向資料報的協議,它不提供可靠性但傳輸速度比tcp要快。
udp資料報中的「udp長度」為兩個位元組,所以我們要傳送的udp資料最多支援65507大約68k的資料,超過該大小的話需要自己來分割傳送。 使用udp必須關心ip資料報的長度,因為如果它超過mtu的話,會對ip資料報進行分片。
在udp資料報文中,頭部佔8個位元組,報文具體格式如下:
二、廣播/多播
1、利用廣播可以將資料傳送到子網內所有計算機上,廣播幾乎占用了子網內網路的所有頻寬,所以如果有多個程序來同時傳送廣播資料則網路會阻塞。路由器會隔絕廣播。
對於廣播傳送方需額外設定兩點:乙個是設定套接字的so_broadcast選項(bool bbroadcast = true; setsockopt(sock, sol_socket, so_broadcast, (char*)&bbroadcast, sizeof(bool));),乙個是傳送資料的位址設為"255.255.255.255",其它按照udp傳送方模型來程式設計即可。
對於廣播資料接收方按照udp接收者模型來程式設計即可接收廣播資料。
2、多播程式設計方法與udp模型也大體相同,對於傳送端需要增加設定資料的ttl生存時間功能(使用函式setsockopt),對於接收端需要增加加入多播組的功能(使用函式setsockopt)。
多播需要網路硬體(如路由器)的支援或者硬體開啟了多播服務。
3、單播是主機之間一對一的通訊模式,可以使用tcp或udp,網路中的交換機和路由器對資料只進行**不進行複製。網路上大部分的資料都是以單播的形式傳輸的,如瀏覽網頁、收發郵件等。對於廣播或多播資料,網路中的交換機和路由器會對其進行複製並**。
廣播和多播一般只適合向不同客戶傳送相同資料的應用,如有線電視使用廣播,網路電台使用多播,如果需要對每個客戶的不同請求傳送不同的資料的話只能使用單播伺服器。因為廣播和多播是僅傳送一次資料所有的接收方就都能收到資料,所以傳送方(伺服器)流量負載很低,而單播伺服器要向所有客戶傳送資料,即傳送多次資料才能到達多個客戶上,所以伺服器網路負載大。
因為廣播和多播使用的是udp,發生丟包錯包後無法重傳。
三、p2p
nat使只能內網中計算機去連線外網,然後二者再進行通訊,而外網中的計算機是無法主動連線內網計算機進行通訊的,所以產生了p2p通訊技術來解決這個問題,這種方法也被稱為nat打洞。p2p技術廣泛存在於基於udp的應用中,但本質上,相同的技術也應該
支援tcp。
以udp打洞為例,假設a要向b傳送資料,a和b都已經登陸上了s伺服器,則s能夠知道a和b的外網位址、埠號(通過recvfrom()的sockaddr_in結構,我們稱為公共終端)和本地位址、埠號(a、b登陸的時候向s傳送,我們稱為私有終端):
1、a通過s獲得b的公共終端和私有終端後分別向兩個終端傳送資料以建立a和b的好友關係。
2、a通過s讓b向a的兩個終端分別傳送資料(b可以通過s獲得a的兩個終端)以確認a和b的好友關係。
3、a收到b發來的資料後二者已成功建立好友關係,a可以直接向b傳送資料了。
在1和2中之所以要向對方的公共終端和私有終端都傳送資料是防止a和b在同一子網中。
四、tcp over udp
tcp over udp具有udp速度快、實時性高的特點,同時又兼備tcp的可靠性,它主要是在udp之上參考tcp協議演算法來實現。
udp使用者資料報協議,它是乙個無連線的,面向資料報的協議,它不提供可靠性但傳輸速度比tcp要快。
udp資料報中的「udp長度」為兩個位元組,所以我們要傳送的udp資料最多支援65507大約68k的資料,超過該大小的話需要自己來分割傳送。 使用udp必須關心ip資料報的長度,因為如果它超過mtu的話,會對ip資料報進行分片。
在udp資料報文中,頭部佔8個位元組,報文具體格式如下:
二、廣播/多播
1、利用廣播可以將資料傳送到子網內所有計算機上,廣播幾乎占用了子網內網路的所有頻寬,所以如果有多個程序來同時傳送廣播資料則網路會阻塞。路由器會隔絕廣播。
對於廣播傳送方需額外設定兩點:乙個是設定套接字的so_broadcast選項(bool bbroadcast = true; setsockopt(sock, sol_socket, so_broadcast, (char*)&bbroadcast, sizeof(bool));),乙個是傳送資料的位址設為"255.255.255.255",其它按照udp傳送方模型來程式設計即可。
對於廣播資料接收方按照udp接收者模型來程式設計即可接收廣播資料。
2、多播程式設計方法與udp模型也大體相同,對於傳送端需要增加設定資料的ttl生存時間功能(使用函式setsockopt),對於接收端需要增加加入多播組的功能(使用函式setsockopt)。
多播需要網路硬體(如路由器)的支援或者硬體開啟了多播服務。
3、單播是主機之間一對一的通訊模式,可以使用tcp或udp,網路中的交換機和路由器對資料只進行**不進行複製。網路上大部分的資料都是以單播的形式傳輸的,如瀏覽網頁、收發郵件等。對於廣播或多播資料,網路中的交換機和路由器會對其進行複製並**。
廣播和多播一般只適合向不同客戶傳送相同資料的應用,如有線電視使用廣播,網路電台使用多播,如果需要對每個客戶的不同請求傳送不同的資料的話只能使用單播伺服器。因為廣播和多播是僅傳送一次資料所有的接收方就都能收到資料,所以傳送方(伺服器)流量負載很低,而單播伺服器要向所有客戶傳送資料,即傳送多次資料才能到達多個客戶上,所以伺服器網路負載大。
因為廣播和多播使用的是udp,發生丟包錯包後無法重傳。
三、p2p
nat使只能內網中計算機去連線外網,然後二者再進行通訊,而外網中的計算機是無法主動連線內網計算機進行通訊的,所以產生了p2p通訊技術來解決這個問題,這種方法也被稱為nat打洞。p2p技術廣泛存在於基於udp的應用中,但本質上,相同的技術也應該
支援tcp。
以udp打洞為例,假設a要向b傳送資料,a和b都已經登陸上了s伺服器,則s能夠知道a和b的外網位址、埠號(通過recvfrom()的sockaddr_in結構,我們稱為公共終端)和本地位址、埠號(a、b登陸的時候向s傳送,我們稱為私有終端):
1、a通過s獲得b的公共終端和私有終端後分別向兩個終端傳送資料以建立a和b的好友關係。
2、a通過s讓b向a的兩個終端分別傳送資料(b可以通過s獲得a的兩個終端)以確認a和b的好友關係。
3、a收到b發來的資料後二者已成功建立好友關係,a可以直接向b傳送資料了。
在1和2中之所以要向對方的公共終端和私有終端都傳送資料是防止a和b在同一子網中。
四、tcp over udp
tcp over udp具有udp速度快、實時性高的特點,同時又兼備tcp的可靠性,它主要是在udp之上參考tcp協議演算法來實現。
TCP IP 協議 (傳輸層)UDP協議
從之前介紹的網路層協議來看,通訊的兩端是兩台主機,ip 資料報首部就標明了這兩台主機的 ip 位址。但是從傳輸層來看,是傳送方主機中的乙個程序與接收方主機中的乙個程序在交換資料,因此,嚴格地講,通訊雙方不是主機,而是主機中的程序。主機中常常有多個應用程序同時在與外部通訊 比如你的瀏覽器和 qq 在同...
TCP IP協議 傳輸層UDP協議
對於傳輸層來說,主要作用在於識別程序!舉個例子,兩台電腦在互相傳送郵件,其本質上來講,是計算機系統中的郵件對應的程序在相互通訊。tcp和udp是傳輸層的兩個重要協議,對於不同的程序,會用到不同的協議。具體哪個程序的識別,是靠埠號來的。埠號有0 65535。系統埠號 0 1023,最常用的程序都是這個...
傳輸層協議之UDP
埠號的範圍劃分 範圍0 1023 知名埠號 一些著名的協議,它們的埠號都是固定的.1024 65535 普通埠號 作業系統動態分配的埠號.例如 客戶端程式的埠號,就是由作業系統從這個範圍分配的 常見的著名埠號 檢視網路狀態的指令 netstat 選項 常用選項 a all 顯示所有選項 u udp ...