`
jiagou
  • 浏览: 2536664 次
文章分类
社区版块
存档分类
最新评论

udp 协议

 
阅读更多

CSDN lidp 专栏http://blog.csdn.net/perfectpdl

我们知道,ip协议提供了在主机之间交互数据的机制,udp协议则提供应用程序之间传输数据报的基本机制,也就是说udp协议能够区分在同一台机器上运行的多个程序或进程。udp协议通过在ip协议上添加端口来实现此目的,这样,使用udp的软件能够把报文送到正确的接受进程,而接受进程也能回送应答报文,
udp协议使用底层的ip协议在各机器之间传输报文,提供和ip一样的不可靠,无连接数据报交互服务,他没有使用确认来确保报文到达,没有对报文排序,也不提供反馈信息来控制机器之间信息流动的速度,因此udp可能存在丢失,乱序,重复到达的现象。使用udp的应用程序要承担可靠性方面的全部工作,包括处理报文丢失,重复,延时,乱序及连接失效等问题,我所知道的sip协议通过事务及定时器来达到可靠性。
我们在编写基于udp 的socket应用程序时,应用程序访问udp层,然后使用ip层来收发数据报,将udp层放到ip层之上意味着一个包括udp首部和数据的完整udp报文,在互联网中传输时要封装到ip数据报中。
udp给用户要发送的数据加上一个首部,然后再交给ip层,ip层又给udp层接收到的数据加上一个首部。最后,网络接口层把数据报封装到一个帧里,在进行机器之间的发送,帧的结构根据底层网络技术来确定。
在接收端,最底层的网络软件接收到一个分组后把他提交给上一层模块,每一层都在向上提交数据之前剥离去本层的首部,因此当最高层协议软件把数据发送到相应的接受进程的时候,所有附加的首部都被剥离去了,也就是说,最外层的首部都对应的是最底层协议,而最内层的首部对应的是最高层的协议,比如我们用socket系统调用read数据包时实际上是ip层去掉ip首部后传到udp层,udp协议层把udp首部去掉后的数据。


一句话:ip层只负责在互联网上的一对主机之间进行数据传输,而udp层只负责区分一台主机上多个源端口或目的端口。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics