`
swanlake
  • 浏览: 17112 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

tcp协议与 udp协议的区别

阅读更多
网上很多文章都说TCP协议可靠,UDP协议不可靠!为什么前者可靠,后者不可靠呢?既然UDP协议不可靠,为什么还要使用它呢?所谓的TCP协议是面向连接的协议,面向连接是什么呢?这篇文章,我们就是要弄懂以上问题!

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

先说TCP协议:

这个协议,是面向的连接!面向连接这个概念,我们要从物理层看起。大家都知道,因为“信道复用技术”的迅猛发展,才促使了计算机网络的发展!如果没有“信道复用技术”,那么单条线路上(这里的线路指物理传输介质,例如:双绞线、光纤、电话线)单位时间内只能供一台计算机使用!还是举例说明:就拿你自己的计算机来说,你跟同学“小明”聊天的时候,就不能跟另外一位同学“小强”聊天,如果你想同时跟两位同学聊天,那么你就得装两条线路!那么同时与第三位、第四位同学。。。第N位同学聊天的时候,你需要装几根线路?全世界人民聊天的时候,又需要装几根线路?

“信道复用技术”实现了,在同一条线路上,单位时间内可供X台计算机同时通信!Toad知道以下几种复用技术:

       1、频分复用
       2、时分复用
       3、波分复用
       4、码分复用
       5、空分复用
       6、统计复用
       7、极化波复用

关于“信道复用技术”更深层次的问题,需要你自己去研究!Toad在这方面的知识很薄弱。

上一讲,我们提到了“信道复用技术”!知道了这一点,我们就很容易明白“物理信道”上的“虚拟信道”概念了!不同的信道复用技术,使用不同的复用技术,目的就是创建“虚拟信道”。

一个TCP协议连接其实就是在物理线路上创建的一条“虚拟信道”。这条“虚拟信道”建立后,在TCP协议发出FIN包之前(两个终端都会向对方发送一个FIN包),是不会释放的。正因为这一点,TCP协议被称为面向连接的协议!

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

大家要知道,一种物理线路,单位时间内,能够创建的“虚拟信道”是有限的!从这个问题,大家应该明白了TCP协议和UDP协议为什么会共存了吧,然而,这只是其中一个原因而已!

那为什么又说TCP协议可靠,UDP协议不可靠呢?以上说的是一个原因,还有一个原因是:使用TCP协议传输数据,当数据从A端传到B端后,B端会发送一个确认包(ACK包)给A端,告知A端数据我已收到!UDP协议就没有这种确认机制!这一点,我们在做TCP协议首部分析时,会详加解释!

QQ普通会员就是使用的UDP协议进行传输数据!既然UDP协议自身没有确认机制,这个工作可以交给应用层的进程来完成(QQ)!大家使用QQ的时候,感觉出错的几率还是非常小吧!当然,把这个确认工作完全交给QQ自身来做,就直接导致了,QQ软件体积增大!

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

因此,鱼和熊掌不可兼得,需,根据实际情况选择传输协议

文章来源于>>TCP/IP协议分析博客 转载请注明:Toad的博客
---------------------------------------

TCP协议提供了可靠的数据传输,但是其拥塞控制、数据校验、重传机制的网络开销很大,不适合实时通信,所以选择开销很小的UDP协议来传输数据。

UDP 协议是无连接的数据传输协议并且无重传机制,会发生丢包、收到重复包、乱序等情况。而对于数据精确性要求不高的状态数据以及视频数据,丢包的影响不大。因为会不断收到新的包,丢失的个别包会有新的包来覆盖,所以只需在远程控制系统的通信部分自行处理乱序及重复包的问题,而对于丢包的问题一般不作处理。

但对于命令包这种需要精确收发的数据, 可在程序的开发中加入丢包重发和超时丢弃的处理。 当然,如果开发的是对于实时性要求不高的事件型控制命令的传输,不希望发生指令的丢失也可以直接采用TCP协议。TCP的重传机制正好适合这种情况。

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

相关推荐

    TCP协议与UDP协议的区别

    ### TCP协议与UDP协议的区别 #### 一、TCP/IP协议栈概述 为了更好地理解TCP协议与UDP协议之间的区别,我们先来简要回顾一下TCP/IP协议栈的基本结构。TCP/IP协议栈是一个分层的网络通信模型,主要包括四个层次: 1...

    网络协议TCP/IP实验六 UDP 协议分析实验

    ### 知识点一:UDP协议基础 - **定义**:用户数据报协议(User Datagram Protocol,UDP)是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。与TCP相比,UDP不保证数据包的顺序、可靠性或流量控制。...

    TCP协议和UDP协议的异同点是什么

    而UDP协议,即用户数据报协议,与TCP协议截然不同,它是一种无连接的协议。它不进行三次握手,而是直接发送数据。这使得UDP协议在数据传输上效率更高,但与此同时,它不保证数据包的顺序、不进行错误检测和重传,...

    TCP-UDP测试工具 ,可以测试TCP协议和UDP协议,抓取网络数据包

    本篇文章将详细阐述这两种协议的基本概念、工作原理以及它们之间的区别,同时介绍一种能够测试TCP和UDP协议并抓取网络数据包的工具。 TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。...

    传输层概念 TCP协议 UDP协议 TCP与UDP的区别

    TCP协议的主要特点包括: 1. 面向连接:TCP在数据传输之前需要建立连接,并在传输完成后断开连接。这种特性要求通信双方在发送数据前要进行三次握手,在结束通信时进行四次挥手。 2. 仅支持单播传输:TCP支持点对...

    TCPIP协议与UDP协议的区别

    TCP/IP 协议与 UDP 协议的区别 TCP/IP 协议是面向连接的协议,在收发数据前,必须和对方建立可靠的连接。TCP 连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂。三个“对话”的目的是使数据包的发送和...

    socket 网络编程 TCP协议UDP协议传输

    当客户端使用TCP协议连接时,它会发送一个连接请求,服务器接收并确认后,双方即可通过各自的socket进行数据交换。对于UDP,客户端可以直接向服务器的特定端口发送数据报,而无需预先建立连接。 TCP和UDP的使用取决...

    tcp,udp测试工具

    测试TCP和UDP协议的工具有多种,它们可以帮助开发者验证网络通信的性能、稳定性及可靠性。"SocketTool4"可能是一款用于网络测试的工具,它可能包含了一系列用于TCP和UDP通信的实用程序,例如: 1. TCP连接测试:这...

    欧姆龙PLC之Fins UDP与Fins TCP协议解析与通讯测试.pptx

    本文将详细解析FINS UDP和FINS TCP两种通信协议,并进行通讯测试的说明。 1. **FINS UDP**: FINS UDP基于用户数据报协议(UDP/IP),这是一种无连接的通信方式,速度快但数据可靠性较低。在FINS UDP通信中,你...

    TCP与UDP的区别

    "TCP与UDP的区别" TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)是两种常用的网络传输协议。在网络通信中,选择合适的协议是非常重要的,因为不同的协议...

    TCP与UDP区别(socket编程)

    TCP 与 UDP 区别(socket 编程) TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议)是 TCP/IP 协议中的两个传输层协议,它们使用 IP 路由功能把数据包发送到...

    tcpudp 2.1.1 TCP/UDP 调试软件

    "tcpudp 2.1.1 TCP/UDP 调试软件"是一款专门用于分析和调试TCP与UDP协议的工具,对于初学者来说,它可以帮助理解这两种协议的工作原理,以及如何在实际应用中使用它们。该软件可能包含了如下的功能特性: 1. 数据包...

    TCP_UDP_PerformanceTest 测试工具

    TCP协议的核心特性在于其面向连接性,提供三次握手建立连接,确保数据传输前的双方确认。此外,TCP还采用滑动窗口机制和拥塞控制策略,保证数据的正确性和完整性,即使在网络不稳定的情况下也能实现数据的重传。然而...

    TCP/UDP网络调试工具

    在IT行业中,网络通信是软件开发中的重要环节,TCP(传输控制协议)和UDP(用户数据报协议)作为两种主流的传输层协议,被广泛应用于各种网络应用中。本篇将详细阐述TCP/UDP网络调试工具及其在开发过程中的作用。 ...

    欧姆龙FinsTCP/UDP模拟器与协议解析文档

    FINS TCP/UDP是FINS协议在网络层面上的应用,它利用了互联网上广泛使用的传输控制协议TCP和用户数据报协议UDP。TCP是一种面向连接的、可靠的传输协议,而UDP则是无连接的、不可靠的数据传输协议。在FINS TCP/UDP中,...

    TCP-UDP协议详解

    TCP-UDP 协议详解 TCP 协议基本原理: TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的可靠的传输层协议,它支持在不可靠网络上实现面向连接的可靠的数据传输。TCP 协议的主要特点是: 1. ...

    TCP/IP协议以及TCP与UDP协议区别

    ### TCP/IP协议以及TCP与UDP协议区别 #### 一、TCP/IP协议概述 TCP/IP(Transmission Control Protocol/Internet Protocol)是一组用于实现网络互连的通信协议,它定义了电子设备(例如计算机)如何在网络中交换...

Global site tag (gtag.js) - Google Analytics