当client须要请求数据库server上的某些数据时,它至少须要三个数据报来建立TCP连接。三个数据报礼发送和确认少量数据,三个用来关闭连接。

然而,假设使用UDP的话,只须要发出两个数据报就能达到同样的效果。UDP不须要client建立和关闭与server的连接。

client不过将数据放到数据报中并发给server。server构造出应答,并将应答数据放到去往client的数据报中,然后再发送给client。虽然对于简单实事务来说。这样的传输数据方式与TCP相比,既快又有效,但UDP不能处理数据报丢失。

UDP同意应用于远程计算机特定port上的服务联系,但它不与远程计算机建立连接。

UDP是TCP的一个替代品。有时候将它和IP一起称为UDP/IP。和TCP一样,UDP也使用IP来在计算机间进行真正的数据报传输。然而。UDP不提供将信息切割成分组,并在接收终端将其重组的功能。

UDP和TCP间最根本的区别在于它们实现传输数据的方法不同。TCP支持有保证的传输。由于收到一个报文后。接收端会自己主动地做出确认。另外,假设接收端没有在规定的时间内做出回应,那么发送端将一直等待并重传数据。TCP所具备的这样的可靠性在运行过程中可能开销太大。而UDP却并不实现有保证的报文传输。在传输过程中UDP数据报可能丢失,而且协议不能检測或报告这个错误。

然而UDP并最好还是碍可靠的报文传输,仅仅只是是把这个任务交给TCP/IP參考模型中的更高层来完毕而已。

在分组开销这个关键的方面,UDP比TCP有优势。

因为TCP是一个可靠的协议,它必须确保数据完善无损地到达目的地,这样就在网络上交换了相对非常多的分组。而UDP没有这个开销。所以速度比TCP快非常多。

UDP在传输之前不须要建立连接的这一特性,进一步降低了与报文传输有关的开销。

TCP在開始数据传输之前。须要完毕三方握手过程。而UDP在開始数据传输前不须要不论什么正式的准备。TCP将与连接有关的计算机保持为连接状态。这个连接状态包含了滑动窗体和接收端计算机的缓冲区大小、拥塞控制參数、序号和确认号等參数。

而UDP不须要维持这种连接状态。也不须要跟踪不论什么參数。某个特定应用专用的server所支持的很多client,使用UDP时要比使用TCP时活跃得多。比如,使用UDP的SNMP管理系统能够支持多个SNMP代理。

TCP段中报头的大小为20字节。而UDP则仅仅有8字节。TCP有一个拥塞控制机制。用来在发送和接收端之间的一个或者多个链路出现过度拥塞时,降低来自发送端的传输数据量。

这个过程对实时应用来说可能有着不利的影响,由于它们能够容忍分组丢失,但却须要一个下限发送速率。还有一方面,UDP发送数据的速度受应用生成数据的速率、处理能力、源计算机时钟速率和连接带宽等因素的限制,并且接收主机不一定能接收到全部的数据。当网络发生拥塞时。使用UDP传输的数据可能由于路由器的缓冲区塞满大量数据报而出现部分丢失的情况。对于UDP来说,即使发送速率没受限制,接收速率也会受网络拥塞的限制。

TCP支持的应用协议主要有:HTTP(超文本传输协议)、Telnet(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传输协议)等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)、NTP(网络时间协议)等。



UDP和TCP的比較的更多相关文章

  1. 【iOS与EV3混合机器人编程系列之四】iOS_WiFi_EV3_Library 剖析之中的一个:WiFi UDP和TCP

    在上一篇文章中.我们通过编写EV3 Port Viewer项目实现了iOS监測EV3的实时端口数据. 程序最核心的部分就是我们的开源码库iOS_WiFi_EV3_Library. 那么,在本文中,我们 ...

  2. 移动端IM系统的协议选型:UDP还是TCP?

    1.前言 对于有过网络编程经验的开发者来说,使用何种数据传输层协议来实现数据的通信,是个非常基础的问题,它涉及到你的第一行代码该如何编写. 从PC时代的IM开始,IM开发者就在为数据传输协议的选型争论 ...

  3. RUDP之一 —— UDP VS TCP

    原文链接 原文:http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/ 介绍 大家好,我是Glenn Fiedler, ...

  4. 第五章 运输层(UDP和TCP三次握手,四次挥手分析)

    序言   通过这章,可以知道其实三次握手和四次挥手其实真的好简单,通过这章的学习,我相信你也会同样的认为,以后在也不需要听到别人问三次握手的过程而自己一脸懵逼了,觉得人家好屌,其实也就是他懂你不懂,仅 ...

  5. 网游中的网络编程系列1:UDP vs. TCP

    原文:UDP vs. TCP,作者是Glenn Fiedler,专注于游戏网络编程相关工作多年. 目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网 ...

  6. DNS分别在什么情况下使用UDP和TCP

    DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类.但很少有人知道DNS分别在什么情况下使用这两种协议.     如果用wiresha ...

  7. JAVA基础学习day24--Socket基础一UDP与TCP的基本使用

    一.网络模型 1.1.OIS参考模型 1.2.TCP/IP参考模型 1.3.网络通讯要素 IP地址:IPV4/IPV6 端口号:0-65535,一般0-1024,都被系统占用,mysql:3306,o ...

  8. 初识-----基于Socket的UDP和TCP编程及测试代码

    一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...

  9. 通信协议之HTTP,UDP,TCP协议

    1.UDP,TCP,HTTP之间的关系 tcp/ip是个协议组,它可以分为4个层次,即网路接口层,网络层,传输层,以及应用层, 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协 ...

随机推荐

  1. 详解Object.constructor

    对象的constructor属性引用了该对象的构造函数.对于 Object 对象,该指针指向原始的 Object() 函数.如下: var obj = {}; obj.constructor //ƒ ...

  2. 【scrapy】使用方法概要(三)(转)

    请初学者作为参考,不建议高手看这个浪费时间] 前两篇大概讲述了scrapy的安装及工作流程.这篇文章主要以一个实例来介绍scrapy的开发流程,本想以教程自带的dirbot作为例子,但感觉大家应该最先 ...

  3. How to read out WhatsApp messages with Tasker and react on their content in real time

    http://technologyworkroom.blogspot.sg/2013/05/tasker-how-to-read-out-whatsapp.html Tasker can read o ...

  4. Bus Blaster

    http://dangerousprototypes.com/docs/Bus_Blaster Bus Blaster v2 is an experimental, high-speed JTAG d ...

  5. 白光LED驱动方案的选择 TPS61043

    所有专为驱动白光LED而设计的IC都提供恒定电流夕其中尽大多数是基于电感或电荷泵的解决方案9这两种解决方案各有其优缺点. 电荷泵解决方案也称为开关电容器解决方案,利用分离电容器将电源从输进端传送至输出 ...

  6. .net 基于Jenkins的自动构建系统开发

    先让我给描述一下怎么叫一个自动构建或者说是持续集成 : 就拿一个B/S系统的合作开发来说,在用SVN版本控制的情况下,每个人完成自己代码的编写,阶段性提交代码,然后测试-修改,最后到所有代码完工,进行 ...

  7. 使用Bootstrap 3开发响应式网站实践03,轮播下方的内容排版

    通常把一些重要信息.需要重点标注的信息放在轮播的下方显示,这部分区域用到了大字体的标题.副标题以及段落文字等. <div class="row" id="bigCa ...

  8. 单点登录 之 OAuth

    OAuth2.0是什么 OAuth2.0是什么——豆瓣和QQ的故事 OAuth简单说就是一种授权的协议,只要授权方和被授权方遵守这个协议去写代码提供服务,那双方就是实现了OAuth模式. 举个例子,你 ...

  9. Dwz手册的补充说明和常见问题

    1.我如何在项目中使用dwz? 手册中有如下说明: 设计思路 第一次打开页面时载入界面到客户端, 之后和服务器的交互只是数据交互, 不占用界面相关的网络流量. 支持HTML扩展方式来调用DWZ组件. ...

  10. Apache2.2.16+PHP5.3.3+MySQL5.1.49的配置方法

    第一步:下载安装的文件 1. MySQL:下载地址mysql-5.1.49-win32.msi: 2. Apache: 下载地址httpd-2.2.16-win32-x86-openssl-0.9.8 ...