1、TCP和UDP的代理伺服器有什麼差別?
一、使用代理不同
1、TCP代理:面向連接的、可靠的、基於位元組流的傳輸層通信協議的代理。
2、UDP代理:無需建立連接就可以發送封裝的 IP 數據報的代理。
二、傳輸方式不同
1、TCP代理:把數據流分割成適當長度的報文段,最大傳輸段大小(MSS)通常受該計算機連接的網路的數據鏈路層的最大傳送單元(MTU)限制。之後TCP把數據包傳給IP層,由來通過網路將包傳送給接收端實體的TCP層。
2、UDP代理:除了給應用程序發送數據包功能並允許在所需的層次上架構自己的協議之外,幾乎沒有做什麼特別的的事情。
三、分組方式不同
1、TCP代理:旨在適應支持多網路應用的分層協議層次結構。 連接到不同但互連的計算機通信網路的主計算機中的成對進程之間依靠TCP提供可靠的通信服務。
2、UDP代理:不提供數據包分組、組裝和不能對數據包進行排序的缺點,當報文發送之後,是無法得知其是否安全完整到達的。
2、伺服器的UDP通訊是什麼?
用戶數據文報協議 (UDP) 是一個無連接協議。跟 TCP 的操作不同,計算機並不建立連接。另外 UDP 應用程序可以是客戶機,也可以是伺服器。
為了傳輸數據,首先要設置客戶計算機的 LocalPort 屬性。然後,伺服器計算機只需將 RemoteHost 設置為客戶計算機的 Internet 地址,並將 RemotePort 屬性設置為跟客戶計算機的 LocalPort 屬性相同的埠,並調用 SendData 方法來著手發送信息。於是,客戶計算機使用 DataArrival 事件內的 GetData 方法來獲取已發送的信息。
3、UDP 並發伺服器,大家幫忙看一看!該如何解決
UDP2000個客戶端左右 並發
單個數據包最大512位元組
Internet 10MB帶寬
要求效率(盡可能快,盡可能少丟包),這種情況下用哪種通訊模型比較有優勢!
想用IOCP,因為和select模型相比,這個稍微熟悉一點,也在項目中用過,不過是TCP的。
有兩個問題,大家懂得的幫忙給指導一下:
是否可以理解為UDP模式下,一次recvfrom 只對應一次sendto。
2.能否對服務端的套接字同時投遞多個WsaRecvFrom,能否在多個線程中同時投遞WsaSendTo和WsaRecvFrom。
------解決方案--------------------------------------------------------
-------------------------------------
等不到,包被截斷了。
2.能否對服務端的套接字同時投遞多個WsaRecvFrom,能否在多個線程中同時投遞WsaSendTo和WsaRecvFrom。
--------------------------
其實,我個人認為對udp而言,不用iocp也可以滿足。 首先sendto都是立即完成的,無需非同步操作。而recvfrom可以只需阻塞一個線程就夠了,不需要重疊操作。
------解決方案--------------------------------------------------------
用UDX協議最可靠,效率高,開發簡單,非開源。
UDT開源,對於你這種2000客戶,夠用,開源。
------解決方案--------------------------------------------------------
1.sendto 10k,接受部分要麼收到10k,要麼全部丟失,不會出現部分收到的情況。
------解決方案--------------------------------------------------------
-------------------------------------
在區域網可以,公網,一般1K也收不到。
2.能否對服務端的套接字同時投遞多個WsaRecvFrom,能否在多個線程中同時投遞WsaSendTo和WsaRecvFrom。
--------------------------完全可以
------解決方案--------------------------------------------------------
1.如果UDP數據在傳輸過程中被分包,則你需要對數據包進行標識,已確保獲取的包完整。一次recvfrom並不對應一次sendto,考慮UDP不可靠傳輸的因素。
2.不可以,因為sendto和recvfrom都是對同一個資源Socket進行操作。如果在多個線程中對同一個資源進行操作,如果不加鎖的情況下,會非常可怕的。而且,如果你加鎖了,其實還不如單線程操作。
按照你的需求最好還是採用UDP,不過可以考慮組播。
2.API調用完全沒有問題。但是接到的數據可能和發送的數據次序不一樣,這本身是UDP亂序特性決定了的。而且你發送方可能是多線程,從API層面來說,這些調用都是可以的,完全沒有問題。但是給你接收方處理帶來一系列問題。
4、為什麼UDP伺服器僅需要一個套接字,而TCP伺服器需要兩個?
也是一個.
監聽不同客戶機接入的不同套結字,然後接受 ,建立Socket連接.
5、udp通信客戶端與伺服器端的區別在哪
通常來講,客戶端是不需要綁定埠號的,而伺服器端是需要綁定監聽的埠號。其他的其實區別不是很大了,呵呵,從socket通信的角度來看,UDP通信屬於幀傳輸,TCP則是流傳輸,在幀傳輸過程中對於消息的次序和到達情況沒有需求,所以UDP屬於不可靠傳輸,不需要確認和排序。這樣在客戶端和伺服器端的實現上就沒有太大的差別了。
但是客戶端其實也可以用bind來綁定埠的,你在Linux下寫一個簡單的測試程序就知道了,嘿嘿。
6、UDP伺服器是什麼?
UDP是用戶數據報協議
7、使用udp協議的伺服器是哪種類型?
ARP(Address Resolution Protocol)地址解析協議
它是用於映射計算機的物理地址和臨時指定的網路地址。啟動時它選擇一個協議(網路層)地址,並檢查這個地址是否已經有別的計算機使用,如果沒有被使用,此結點被使用這個地址,如果此地址已經被別的計算機使用,正在使用此地址的計算機會通告這一信息,只有再選另一個地址了。
SNMP(Simple Network Management P)網路管理協議
它是TCP/IP協議中的一部份,它為本地和遠端的網路設備管理提供了一個標准化途徑,是分布式環境中的集中化管理的重要組成部份。
BGP4(Border Gateway Protocol Vertion 4)邊界網關協議-版本4
它是用於在自治網路中網關主機(每個主機有自己的路由)之間交換路由信息的協議,它使管理員能夠在已知的路由策略上配置路由加權,可以更方便地使用無級內部域名路由(CIDR),它是一種在網路中可以容納更多地址的機制,它比外部網關協議(EGP)更新。BGP4經常用於網關主機之間,主機中的路由表包括了已知路由的列表,可達的地址和路由加權,這樣就可以在路由中選擇最好的通路了。BGP在區域網中通信時使用內部BGP(IBGP),因為IBGP不能很好工作。
DHCP(Dynamic Host Configuration Protocol)動態主機配置協議
它是在TCP/IP網路上使客戶機獲得配置信息的協議,它是基於BOOTP協議,並在BOOTP協議的基礎上添加了自動分配可用網路地址等功能。這兩個協議可以通過一些機制互操作。DHCP協議在安裝TCP/IP協議和使用TCP/IP協議進行通迅時,必須配置IP地址、子網掩碼、預設網關三個參數,這三個參數可以手動配置,也可以使用DHCP自動配置。
FTP(File Transfer Protocol)文件傳輸協議
它是一個標准協議,是在計算機和網路之間交換文件的最簡單的方法。象傳送可顯示文件的HTTP和電子郵件的SMTP一樣,FTP也是應用TCP/IP協議的應用協議標准。FTP通常用於將網頁從創作者上傳到伺服器上供人使用,而從伺服器上下傳文件也是一種非常普遍的使用方式。作為用戶,您可以用非常簡單的DOS界面來使用FTP,也可以使用由第三方提供的圖形界面的FTP來更新(刪除,重命名,移動和復制)伺服器上的文件。現在有許多伺服器支持匿名登錄,允許用戶使用FTP和ANONYMOUS作為用戶名進行登錄,通常可使用任何口令或只按回車鍵。
HDLC(High-Level Data Link Control)高層數據鏈路協議
它是一組用於在網路結點間傳送數據的協議。在HDLC中,數據被組成一個個的單元(稱為幀)通過網路發送,並由接收方確認收到。HDLC協議也管理數據流和數據發送的間隔時間。HDLC是在數據鏈路層中最廣泛最使用的協議之一。現在作為ISO的標准,HDLC是基於IBM的SDLC協議的,SDLC被廣泛用於IBM的大型機環境之中。在HDLC中,屬於SDLC的被稱為通響應模式(NRM)。在通常響應模式中,基站(通常是大型機)發送數據給本地或遠程的二級站。不同類型的HDLC被用於使用X.25協議的網路和幀中繼網路,這種協議可以在區域網或廣域網中使用,無論此網是公共的還是私人的。
HTTP1.1(Hypertext Transfer Protocol Vertion 1.1)超文本傳輸協議-版本1.1
它是用來在Internet上傳送超文本的傳送協議。它是運行在TCP/IP協議族之上的HTTP應用協議,它可以使瀏覽器更加高效,使網路傳輸減少。任何伺服器除了包括HTML文件以外,還有一個HTTP駐留程序,用於響應用用戶請求。您的瀏覽器是HTTP客戶,向伺服器發送請求,當瀏覽器中輸入了一個開始文件或點擊了一個超級鏈接時,瀏覽器就向伺服器發送了HTTP請求,此請求被送往由IP地址指定的URL。駐留程序接收到請求,在進行必要的操作後回送所要求的文件。
HTTPS(Secure Hypertext Transfer Protocol)安全超文本傳輸協議
它是由Netscape開發並內置於其瀏覽器中,用於對數據進行壓縮和解壓操作,並返回網路上傳送回的結果。HTTPS實際上應用了Netscape的完全套接字層(SSL)作為HTTP應用層的子層。(HTTPS使用埠443,而不是象HTTP那樣使用埠80來和TCP/IP進行通信。)SSL使用40 位關鍵字作為RC4流加密演算法,這對於商業信息的加密是合適的。HTTPS和SSL支持使用X.509數字認證,如果需要的話用戶可以確認發送者是誰。
ICMP(Internet Control Message Protocol)Internet控制信息協議
它是一個在主機和網關之間消息控制和差錯報告協議。ICMP使用IP數據報,但消息由TCP/IP軟體處理,對於應用程序使用者是不可見的。在被稱為Catenet的系統中,IP協議被用作主機到主機的數據報服務。網路連接設備稱為網關。這些網關通過網關到網關協議(GGP)相互交換用於控制的信息。通常,贍養或目的主機將和源主機通信,例如,為報告在數據報過程中的錯誤。為了這個目的才使用了ICMP,它使用IP做於底層支持,好象它是一個高層協議,而實際上它是IP的一部分,必須由其它IP模塊實現。ICMP消息在以下幾種情況下發送:當數據報不能到達目的地時,當網關的已經失去緩存功能,當網關能夠引導主機在更短路由上發送。IP並非設計為設計為絕對可靠,這個協議的目的是為了當網路出現問題的時候返回控制信息,而不是使IP協議變得絕對可靠,並不保證數據報或控制信息能夠返回。一些數據報仍將在沒有任何報告的情況下丟失。
IPv6(Internet Protocol Version 6)Internet協議-版本6
它是Internet協議的最新版本,已作為IP的一部分並被許多主要的操作系統所支持。IPv6也被稱為「Ipng」(下一代IP),它對現行的IP(版本4)進行重大的改進。使用IPv4和IPv6的網路主機和中間結點可以處理IP協議中任何一層的包。用戶和服務商可以直接安裝IPv6而不用對系統進行什麼重大的修改。相對於版本4新版本的最大改進在於將IP地址從32位改為128位,這一改進是為了適應網路快速的發展對IP地址的需求,也從根本上改變了IP地址短缺的問題。簡化IPv4首部欄位被刪除或者成為可選欄位,減少了一般情況下包的處理開銷以及IPv6首部佔用的帶寬。改進IP 首部選項編碼方式的修改導致更加高效的傳輸,在選項長度方面更少的限制,以及將來引入新的選項時更強的適應性。加入一個新的能力,使得那些發送者要求特殊處理的屬於特別的傳輸流的包能夠貼上標簽,比如非預設質量的服務或者實時服務。為支持認證,數據完整性以及(可選的)數據保密的擴展都在IPv6中說明。本文描述IPv6基本首部以及最初定義的IPv6 擴展首部和選項。還將討論包的大小問題,數據流標簽和傳輸類別的語法,以及IPv6對上層協議的影響。IPv6 地址的格式和語法在其它文章中單獨說明。IPv6版的 ICMP 是所有IPv6應用都需要包含的。
OSPF(Open Shortest Path First)開放最短路優先
OSPF是用於大型自主網路中替代路由信息協議的協議標准。象RIP一樣,OSPF也是由IETF設計用作內部網關協議族中的一個標准。在使用OSPF時網路拓樸結構的變化可以立即在路由器上反映出來。不象RIP,OSPF不是全部當前結點保存的路由表,而是通過最短路優先演算法計算得到最短路,這樣可以降低網路通信量。如果您熟悉最短路優先演算法就會知道,它是一種只關心網路拓樸結構的演算法,而不關心其它情況,如優先權的問題,對於這一點,OSPF改變了演算法使它根據不同的情況給某些通路以優先權。
8、一般的UDP伺服器可以同時連接多少個客戶端
你好;1:與N個客戶端相連的話;伺服器都有一個對應的socket;也就是N個
2:為什麼TCP的C/S應用中,伺服器程序要先於客戶端程序執行 因為客戶端要連接伺服器之前先要知道伺服器的IP地址和埠號 而且這個埠號是處於監聽狀態的;如果伺服器不先啟動 那麼也不可能綁定這個埠號 客戶端根本連接不上
而UDP的C/S應用中,客戶端程序先於伺服器程序執行?
如果是通過UDP協議的話;這個沒有伺服器和客戶端之分 是相對獨立的個體;如果我是客戶端;我只要開啟一個埠 綁定這個埠 那麼人家知道我的IP地址和這個埠號 可以直接發信息給我 不用連接我;反之對方也一樣 希望能幫到你
9、UDP伺服器是做什麼用的?
UDP伺服器,就是首發數據,進行數據處理的。與TCP不同的是不用建立連接,直接調用recvfrom來收包。
開始就是基本的socket初始化地址什麼的。
要求多個線程處理客戶端命令,那recvfrom收包後,考慮把客戶端的地址信息保存,便於sendto,對接收的數據包,交給線程進行處理,每個線程可以向一塊共享內存、隊列里寫入收到的數據和對應的客戶端信息,每次寫的時候對這塊共享資源加鎖,多個線程對共享資源讀是加鎖,讀完解鎖,並開始處理數據。
處理完,用sendto發回去。
不是什麼大項目。小程序而已。
10、如何在windows系統伺服器添加UDP埠
第一步:首先遠程登錄到伺服器, 登錄以後在運行裡面輸入gpedit.msc回車,依次展開 計算機配置--windows設置--安全設置 打開IP安全策略,然後找到allow udp,
第二步:依次雙擊allow udp 選擇許可的allow udp再進行雙線,然後選擇默認第一描述為allow udp的進行雙線,然後點擊添加點擊添加以後會提示下一步,點擊下一步後,描述裡面填寫udp描述,示例以1111為例然後點擊下一步,源地址選擇我的IP地址,目標地址選擇任何IP地址協議類型選擇udp協議埠選擇從此埠到任意埠然後確認保存,最後在防火牆裡面添加放行udp埠即可
windows2008系統策略開啟和windows2003一樣,只是防火牆端有一點不一樣,開始--管理工具--高級安全window防火牆然後右鍵入站規則--新建規則,規則類型選擇埠,然後下一步,埠類型選擇udp,埠選擇本地然後全部默認下一步,名稱就填寫udp名有些用戶的伺服器埠是在TCP/IP埠篩選裡面,如果是啟用的篩選,請注意在篩選裡面去操作。