udp协议例子文档格式.docx

上传人:b****5 文档编号:21282427 上传时间:2023-01-29 格式:DOCX 页数:4 大小:17.95KB
下载 相关 举报
udp协议例子文档格式.docx_第1页
第1页 / 共4页
udp协议例子文档格式.docx_第2页
第2页 / 共4页
udp协议例子文档格式.docx_第3页
第3页 / 共4页
udp协议例子文档格式.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

udp协议例子文档格式.docx

《udp协议例子文档格式.docx》由会员分享,可在线阅读,更多相关《udp协议例子文档格式.docx(4页珍藏版)》请在冰豆网上搜索。

udp协议例子文档格式.docx

  下面来看一下udp里的数据部分的字节:

  将上面的3k~4p的共22b的数据翻译成对应的ascii码是:

  其中“□”代表空格。

  注意上面的十六进制数据和翻译的不对应是因为从上面复制到这里的时候没复制好,这里也懒得改了,知道意思就可以了。

  向下的分析省略,可以看出虽然不知道这是什么协议,但是它用的是http的格式。

  篇二:

udp协议及分析

  udp协议及分析

  一、udp协议udp是userdatagramprotocol的简称,中文名是用户数据报协议,是osi(opensysteminterconnection,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,ietFRFc768是udp的正式规范。

udp在ip报文的协议号是17。

  udp协议的全称是用户数据报协议,在网络中它与tcp协议一样用于处理数据包,是一种无连接的协议。

在osi模型中,在第四层——传输层,处于ip协议的上一层。

udp有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

udp用来支持那些需要在计算机之间传输数据的网络应用。

包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用udp协议。

udp协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天udp仍然不失为一项非常实用和可行的网络传输层协议。

  与所熟知的tcp(传输控制协议)协议一样,udp协议直接位于ip(网际协议)协议的顶层。

根据osi(开放系统互连)参考模型,

  udp和tcp都属于传输层协议。

udp协议的主要作用是将网络数据流量压缩成数据包的形式。

一个典型的数据包就是一个二进制数据的传输单位。

每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

  二、udp协议的主要特点

  

(1)udp是无连接的,即发送数据之前不需要建立连接。

  

(2)udp使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。

  (3)udp是面向报文的。

udp没有拥塞控制,很适合多媒体通信的要求。

  (4)udp支持一对一、一对多、多对一和多对多的交互通信。

  (5)udp的首部开销小,只有8个字节。

  三、udp协议的使用

  在选择使用协议的时候,选择udp必须要谨慎。

在网络质量令人十分不满意的环境下,udp协议数据包丢失会比较严重。

但是由于udp的特性:

它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用udp较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

  如我们聊天用的icq和qq就是使用的udp协议。

  四、udp协议的报头

  

(1)面向报文的udp

  发送方udp对应用程序交下来的报文,在添加首部后就向下交付ip层。

udp对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。

  应用层交给udp多长的报文,udp就照样发送,即一次发送一个报文。

  接收方udp对ip层交上来的udp用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。

应用程序必须选择合适大小的报文。

  

(2)udp报文的组成

  udp报头由4个域组成,其中每个域各占用2个字节,具体如下:

udp源端口号、目标端口号、数据报长度、校验值

  udp协议使用端口号为不同的应用保留其各自的数据传输通道。

udp和tcp协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。

数据发送一方(可以是客户端或服务器端)将udp数据包通过源端口发送出去,而数据接收一方则通过目标端口接收数据。

有的网络应用只能使用预先为其预留或注册的静态端口;

而另外一些网络应用则可以使用未被注册的动态端口。

因为udp报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。

一般来说,大于49151的端口号都代表动态端口。

  数据报的长度是指包括报头和数据部分在内的总字节数。

因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。

数据报的最大长度根据操作环境的不同而各异。

从理论上说,包含报头在内的数据报的最大长度为65535字节。

不过,一些实际应用往往会限制数据报的大小,有时会降低到8192字节。

  udp协议使用报头中的校验值来保证数据的安全。

校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。

如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此udp协议可以检测是否出错。

这与tcp协议是不同的,后者要求必须具有校验值。

  许多链路层协议都提供错误检查,包括流行的以太网协议,也许你想知道为什么udp也要提供检查和校验。

其原因是链路层以下的协

  议在源端和终端之间的某些通道可能不提供错误检测。

虽然udp提供有错误检测,但检测到错误时,udp不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。

  udphelper是实现对指定udp端口广播报文的中继转发,即将指定udp端口的广播报文转换为单播报文发送给指定的服务器,起到中继的作用.

  (3)udp的首部格式

  用户数据报udp有两个字段:

数据字段和首部字段。

首部字段有8个字节,由4个字段组成,每个字段都是两个字节。

  篇三:

Visual_c++设计udp协议通讯示例

  Visualc++设计udp协议通讯示例

  一、绪言

  udp是一种面向非连接,不可靠的通讯协议,相对于tcp来说,虽然可靠性不及,但传输效率较高。

所以在网络上仍有很大的用途。

这几日需要了解下udp通讯的过程,上网发现这方面的资料还挺少。

于是仔细的翻找了下msdn,基本上搞清楚了udp通讯的过程。

做了一个测试的例子。

希望对大家有帮助。

  二、udp的通讯过程

  server端:

openasocket(socket)--->

namethesocket(bind)--->

sendandreceivedata(sendtorecvfrom)--->

closesocket(closesocket)

  client端:

openasocket(socket)---------------------------->

  server端无需listen,client端无需connect,因此udp中server和client的区别相对较模糊。

只要调用sendto和recvfrom就可以给指定的地址收发数据,但并不保证收发的数据的完整性和可靠性。

  三、示例

  udpserver主要代码:

voidmain()

  {

  wsadatawsadata;

  intiResult=wsastartup(makewoRd(2,2),if(iResult!

=no_eRRoR)

  printf("

erroratwsastartup()\n"

);

  socketsocket1;

  structsockaddr_inlocal;

  structsockaddr_infrom;

  intfromlen=sizeof(from);

  local.sin_family=aF_inet;

  local.sin_port=htons(2404);

///监听端口

  local.sin_addr.s_addr=inet_addr("

127.0.0.1"

///本机

  socket1=socket(aF_inet,sock_dgRam,0);

  bind(socket1,(structsockaddr*)while

(1){

  charbuffer[1024]="

\0"

;

waitingformessagefrom

  others-------------\n"

  if(recvfrom(socket1,buffer,sizeof

  buffer,0,(struct

  sockaddr*)////给cilent发信息

  sendto(socket1,buffer,sizeof

  buffer,0,(structsockaddr*)

  }

  sleep(500);

  }closesocket(socket1);

  udpcilent主要代码:

  initwinsock();

  structsockaddr_inserver;

  intlen=sizeof(server);

  server.sin_family=aF_inet;

  server.sin_port=htons(1000);

///server的监听端口

  server.sin_addr.s_addr=inet_addr("

168.168.0.10"

///server的地址

  while

(1)

inputmessage\n"

  scanf("

%s"

buffer);

  if(strcmp(buffer,"

bye"

)==0)

  break;

  if(sendto(socket1,buffer,sizeofbuffer,0,(structsockaddr*)

  closesocket(socket1);

  四、结束语

  udp通讯比tcp简单了很多,在数据可靠性(udp协议例子)不是很高的情况下,有使用的价值。

  

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1