博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP与UDP的区别
阅读量:5982 次
发布时间:2019-06-20

本文共 1776 字,大约阅读时间需要 5 分钟。

TCP和UDP 的主要区别如下:

(1)TCP是面向连接的传输控制协议,UDP提供无连接的数据报服务

(2)TCP具有可靠性,确保传输数据的准确性,不出现丢失和乱序。UDP在传输前不建立连接,不对数据报检查和修改,无需等待对方应答,所以出现丢失、重复、乱序,应用程序需要负责传输性可靠方面的所有工作。

(3)TCP对系统资源要求多,UDP对系统资源要求较少

(4)UDP具有较好的实时性,工作效率比TCP高

(5)UDP的段结构比TCP简单,网络开销小。

IP协议是一种网络层协议,规定每个计算机有唯一个IP地址,这样数据包可以通过路由器转发到制定的计算机,但不保证数据传输的可靠性。

TCP和UDP都是传输层的协议!从编程的角度看,就是两个模块(模块就是代码的集合,一系列代码的组合提供相应的功能!模块化最终目的就是:分工协作!模块化好处:便于扩展开发以及维护!)。   

TCP协议:   
是面向的连接!面向连接这个概念,要从物理层看起。因为“信道复用技术”的迅猛发展,才促使了计算机网络的发展!如果没有“信道复用技术”,那么单条线路上(这里的线路指物理传输介质,例如:双绞线、光纤、电话线)单位时间内只能供一台计算机使用!
“信道复用技术”实现了,在同一条线路上,单位时间内可供X台计算机同时通信!以下几种复用技术:   
  1、频分复用    2、时分复用    3、波分复用    4、码分复用    5、空分复用    6、统计复用    7、极化波复用   
不同的信道复用技术,使用不同的复用技术,目的就是创建“虚拟信道”。   
一个TCP协议连接其实就是在物理线路上创建的一条“虚拟信道”。这条“虚拟信道”建立后,在TCP协议发出FIN包之前(两个终端都会向对方发送一个FIN包),是不会释放的。正因为这一点,TCP协议被称为面向连接的协议!   

UDP协议,一样会在物理线路上创建一条“虚拟信道”,否则UDP协议无法传输数据!但是,当UDP协议传完数据后,这条“虚拟信道”就被立即注销了!因此,称UDP是不面向连接的协议! 

TCP协议和UDP协议为什么会共存?

1. 大家要知道,一种物理线路,单位时间内,能够创建的“虚拟信道”是有限的!

2. 使用TCP协议传输数据,当数据从A端传到B端后,B端会发送一个确认包(ACK包)给A端,告知A端数据我已收到!UDP协议就没有这种确认机制!这就是为什么说TCP协议可靠,UDP协议不可靠. 

有些应用,对数据传输可靠性要求非常高,例如大家浏览网页,通过网页注册帐号、转帐等服务,这是不容许出错的,使用TCP协议能把出错的可能性降到最低(当然,网络自身很糟糕,TCP协议也没办法)。但是,提供这种可靠服务,会加大网络带宽的开销,因为“虚拟信道”是持续存在的,同时网络中还会出现大量的ACK和FIN包!  

  因此,鱼和熊掌不可兼得,需根据实际情况选择传输协议.TCP协议提供了可靠的数据传输,但是其拥塞控制、数据校验、重传机制的网络开销很大,不适合实时通信,所以选择开销很小的UDP协议来传输数据。   

UDP 协议是无连接的数据传输协议并且无重传机制,会发生丢包、收到重复包、乱序等情况。而对于数据精确性要求不高的状态数据以及视频数据,丢包的影响不大。因为会不断收到新的包,丢失的个别包会有新的包来覆盖,所以只需在远程控制系统的通信部分自行处理乱序及重复包的问题,而对于丢包的问题一般不作处理。    但对于命令包这种需要精确收发的数据, 可在程序的开发中加入丢包重发和超时丢弃的处理。 当然,如果开发的是对于实时性要求不高的事件型控制命令的传输,不希望发生指令的丢失也可以直接采用TCP协议。TCP的重传机制正好适合这种情况。   

 面向连接的传输协议在数据传输之前不建立连接,而是在每个中间节点对非面向连接的包和数据包进行路由。没有点到点的连接,非面向连接的协议,如UDP,是不可靠的连接。当一个UDP数据包在网络中移动时,发送过程并不知道它是否到达了目的地,除非应用层已经确认了它已到达的事实。非面向连接的协议也不能探测重复的和乱序的包。标准的专业术语用“不可靠”来描述UDP。在现代网络中,UDP并不易于导致传输失败,但是你也不能肯定地说它是可靠的

 

转载于:https://www.cnblogs.com/yunzhongniao19915/p/5452626.html

你可能感兴趣的文章
exportfs命令、NFS客户端问题、FTP介绍、使用vsftpd搭建ftp
查看>>
php 配置
查看>>
linux的文件层次标准FHS
查看>>
MySQL中级:条件处理(错误、异常处理)
查看>>
我的友情链接
查看>>
正确理解Javascript Closures -- 闭包
查看>>
Windows Server 2008 AD R2 AD回收站恢复删除用户两种方法的比较
查看>>
ShowModalDialog的心得.刷新本页面
查看>>
关于Android LayoutParams的总结
查看>>
非专业网管经历的回顾之二新兵训练(一)
查看>>
围绕Web Apps领域的创新风暴正山雨欲来
查看>>
java学习第三天
查看>>
MYSQL 主从同步故障-Error1062--解决方案
查看>>
加入我们
查看>>
ActionScript3.0基础
查看>>
Flex for foreach的用法
查看>>
关于XenApp 6.0/6.5服务优化
查看>>
keepalived + nginx轮询方式 做高可用和负载均衡 访问后端apache web 服务
查看>>
淘宝大秒系统设计详解
查看>>
Linux基础--系统启动流程
查看>>