精华内容
下载资源
问答
  • 终于懂了TCP和UDP协议区别

    万次阅读 多人点赞 2020-03-26 12:03:28
    终于懂了TCP和UDP协议区别

    老样子先认识一下这俩伙计

    TCP和UDP都是来自传输层协议

    传输层是位于第2层的,如下图所示。

    传输层位于应用层和网络层之间,负责位于不同主机中进程之间的通信。
    在这里插入图片描述

    之前一位老哥问我:不同电脑之间是如何通信的呢?是不是还要自己开发协议什么的。

    分析:这位老哥觉得如果开发一个应用需要自己定义协议。其实也并不是没有道理的,协议是什么?协议就是双方通信共同遵守的规则,被称之为协议。像怎么使用的HTTP,FTP这些都属于应用服务,为什么叫应用服务?因为是专门服务其他人的应用。像QQ、微信、淘宝、浏览器这些通常称之为应用客户端,当然了这些的服务端咱们是看不到摸不着的,除非你是参与其中开发的人员。QQ使用的是OICQ协议,HTTP服务则使用的HTTP协议,这些协议肯定都是自定义的。如果你使用HTTP服务器的话,你就必须遵守这个规则,否则人家是不认你的。其实都是基于TCP或UDP的。

    在这里插入图片描述
    Internet的传输层提供两种不同的服务,应用开发者必须选择其中的一种

    • TCP

    面向连接的可靠的传输层协议。

    • UDP

    无连接的不可靠的传输层协议。

    何来可靠和不可靠之说?

    UDP相对于IP来说,只添加了process到process的分发服务和错误检验机制,因为,提供的也是不可靠的服务。
    而TCP为应用提供了包括可靠数据传输、流量控制和拥塞控制等在内的服务。

    有了可靠的TCP,为什么还要UDP?

    • 应用可以更精细控制何时发送何种数据
    • 无需事先建立连接就可以发送数据
    • 无连接状态,实现简单
    • 头部开销小

    扩展:

    • 1、应用可更好控制何时发送何种数据:无须建立连接,UDP可尽快将消息发给网络层;TCP可能需要重传在规定时间内没有收到确认的Segment。UDP没有建立连接所引入的延迟,这可能是DNS选择UDP而不是TCP的最主要原因。
    • 2、实现简单:UDP因为是无连接的,Host因而无须维护连接状态,实现简单;
    • 3、头部开销小:UDP的Segment头部字段共8个字节;而TCP的头部共包括20个字节.

    UDP被多数多媒体应用使用。但是…

    • UDP通常被认为是不负责任
    • UDP流量通常不容易穿透防火墙
    • 因此TCP的多媒体应用越来越多了…

    总结

    TCP的优点:

    • 可靠,稳定。
    • TCP的可靠体现在TCP在传输数据之前会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。

    TCP的缺点:

    • 慢,效率低,占用资源高,易被攻击;TCP在传递数据之前要先建立连接,这会消耗时间,而且在数据传递时,确认机制,重传机制,拥塞控制机制等都会消耗大量的实践,而且要在每台设备上维护所有的传输连接。事实上每个连接都会占用系统的CPU、内存等硬件资源。
    • 因为TCP有确认机制、三次握手机制,这些优点在成了缺陷,导致TCP容易被人利用,实现DOS、DDOS、CC、猜测攻击等。

    UDP的优点:

    • 快,比TCP稍安全。
    • UDP没有TCP的握手、确认、窗口、重传、拥塞控制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。
    • 没有TCP的这些机制(如:三次握手),攻击者利用UDP的漏洞就要少一些。但是UDP也是无法避免攻击的,比如:UDPFlood等。

    UDP的缺点:

    • 不可靠,不稳定。
    • 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。

    在UDP和TCP协议面前,如何选择并使用?

    基于上面的优点和缺点的分析

    什么时候应该使用TCP传输协议:

    当网络通讯有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些可靠的应用,比如:HTTP,HTTPS,FTP等传输文件的协议,POP、SMTP等邮件传输协议。

    什么时候应该使用UDP:

    当网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。比如:QQ语言、QQ视频等。

    面试经常会问道:TCP和UDP协议的区别是什么?

    简化很多字的总结

    • 1、TCP面向连接,UDP无连接;
    • 2、TCP占用系统资源较多,UDP少;
    • 3、TCP结构复杂,UDP较简单;
    • 4、TCP基于流模式,UDP时数据报模式;
    • 5、TCP保证数据正确性,UDP可能丢包;
    • 6、TCP保证数据顺序,UDP不保证。
    展开全文
  • TCP和UDP

    千次阅读 多人点赞 2019-09-01 21:57:56
    TCP和UDP TCP和UDP异同 相同点 TCP和UDP都是传输层的协议,用于数据的传输 不同点 面向对象不同 TCP(transmission control protocol)提供的是面向连接,提供可靠的字节流服务。在服务器和客户端...

    TCPUDP

    • TCP和UDP异同
      • 相同点
        • TCP和UDP都是传输层的协议,用于数据的传输
      • 不同点
        • 面向对象不同
          • TCP(transmission control protocol)提供的是面向连接,提供可靠的字节流服务。在服务器和客户端进行数据交换之前,必须在双方之间建立一个TCP连接,之后才可以进行数据的传输。并且提供超时重发,丢弃重复数据,检测数据,流量控制等功能,保证数据能从一端传递到另一端。
          • UDP(user data protocol)是一个简单地面向数据报的协议。不提供可靠性,只是把应用程序传给IP层的数据包发送出去,但是不能保证他们能够达到目的地。由于没有建立连接,且没有超时重发的机制,所以速度很快。
        • 可靠性
          • TCP提供可靠的数据传输,UDP不提供可靠性
        • 通信数量
          • 每一条TCP连接只能是点到点的,UDP支持一对一,一对多,多对一和多对多的交互通信
        • 首部开销
          • TCP首部开销20字节,UDP首部开销8字节
        • 连接过程
          • TCP有三次握手和四次挥手
            • 三次握手过程

     

    • 1、A向B发送:SYN、seq = x。作用是用来发送同步序列编号synchronize sequence number,告诉别人信息是从哪个序列号开始的,以及告诉别人自己的连接请求
      • 四次挥手
      • 三次握手根本目的
        • 双方互相确认对方的和自己的发送数据以及接受能力(每次的接受对方返回的确认信息反应了自己的发送数据能力正常)
        • 获取对方的同步序列号
      • 2、B回复A:SYN、ACK、seq = y、ack = x+1。SYN+ACK是B用来应答A表示收到了信息,seq = y是自己的同步序列号,告诉A自己的信息是从哪个序列号开始的,同时返回一个ack表达自己搞定怎么给A发送信息的格式了(大概就是表达让A看自己已经学会了在x+1的位置写东西了)
      • 3、A回复B:ACK,seq = x+1,ack = y+1。ACK是确认信息,同时返回的ack = y+1也是告诉B自己搞定了怎么给B发送信息的格式了

     

    • TCP实现可靠传输(序列号、确认应答、超时重传、拥塞控制)
      • 确认应答和序列号
        • TCP将每一个字节的数据都进行了编号,即为序列号。
        • 每一个ACK都带有对应的确认序列号,意思是告诉发送者,我已经收到了哪些数据,下一次你从哪个序列号开始写入数据
      • 超时重传和序列号
        • A向B发送了数据之后,可能会因为网络拥堵的原因,数据没办法到达主机B,如果A在一个特定的时间间隔接收到来自B的确认应答,就会进行重发。重发的时候利用序列号可以做到去重的效果,不需要重新发送所有的包
      • 拥塞控制
        • 目的是TCP协议想尽可能快的把数据传输给对方,但是又要避免给网络造成太大压力的折中方案
        • 滑动窗口
          • 窗口大小指的是无需等待确认信息应答而可以继续发送数据的最大值
          • 收到第一个ACK后,滑动窗口向后移动,继续发送下一个窗口字段的数据
          • 窗口越大,网络的吞吐率就越高
        • 流量控制
          • 接收端处理数据的速度是有限的,如果发送端发送到个太快,会导致接收端的缓存区被占满,继续发送会产生丢包
        • 延迟应答
          • 如果接收数据的主机立刻返回ACK应答,这样返回的窗口就可能比较小。为了提高传输效率,所以使用延迟应答
        • 捎带应答
          • 我们发现, 很多情况下, 客户端服务器在应用层也是 “一发一收” 的.
          • 意味着客户端给服务器说了 “How are you”, 服务器也会给客户端回一个 “Fine, thank you”; 那么这个时候ACK就可以搭顺风车, 和服务器回应的 “Fine, thank you” 一起回给客户端
    展开全文
  • TCP UDP 的区别

    万次阅读 多人点赞 2018-08-04 21:57:42
    前言 ...前端的面试中经常问的 TCP UDP 的区别,网上也有好多内容,比如 TCP UDP 的区别 TCP 是面向连接的,UDP 是面向无连接的 UDP程序结构较简单 TCP 是面向字节流的,UDP 是基于...

    前言

    前端的面试中经常问的 TCP 和 UDP 的区别,网上也有好多内容,比如

    TCP 和 UDP 的区别

    • TCP 是面向连接的,UDP 是面向无连接的
    • UDP程序结构较简单
    • TCP 是面向字节流的,UDP 是基于数据报的
    • TCP 保证数据正确性,UDP 可能丢包
    • TCP 保证数据顺序,UDP 不保证

    之前也因为面试的原因了解过一下,但是面试官又问了为什么 TCP 是可靠传输,一下就露馅了,说不出来了,然后这两天就仔细了解了一下这方面的内容,还专门订阅了极客时间的趣谈网络协议,因此,这篇文章主要基于趣谈网络协议和自己的理解。

    1. UDP

    要想理解 TCP 和 UDP 的区别,首先要明白什么是 TCP,什么是 UDP

    TCP 和 UDP 是传输层的两个协议

    我们来看一下 UDP 的包头
    UDP 包头
    由上图可以看出,UDP 除了端口号,基本啥都没有了。如果没有这两个端口号,数据就不知道该发给哪个应用。

    所以 UDP 就像一个小孩子,特别简单,有如下三个特点

    UDP 的特点

    • 沟通简单,不需要大量的数据结构,处理逻辑和包头字段
    • 轻信他人。它不会建立连接,但是会监听这个地方,谁都可以传给它数据,它也可以传给任何人数据,甚至可以同时传给多个人数据。
    • 愣头青,做事不懂变通。不会根据网络的情况进行拥塞控制,无论是否丢包,它该怎么发还是怎么发

    因为 UDP 是"小孩子",所以处理的是一些没那么难的项目,并且就算失败的也能接收。基于这些特点的话,UDP 可以使用在如下场景中

    UDP 的主要应用场景

    • 需要资源少,网络情况稳定的内网,或者对于丢包不敏感的应用,比如 DHCP 就是基于 UDP 协议的。
    • 不需要一对一沟通,建立连接,而是可以广播的应用。因为它不面向连接,所以可以做到一对多,承担广播或者多播的协议。
    • 需要处理速度快,可以容忍丢包,但是即使网络拥塞,也毫不退缩,一往无前的时候

    基于 UDP 的几个例子

    • 直播。直播对实时性的要求比较高,宁可丢包,也不要卡顿的,所以很多直播应用都基于 UDP 实现了自己的视频传输协议
    • 实时游戏。游戏的特点也是实时性比较高,在这种情况下,采用自定义的可靠的 UDP 协议,自定义重传策略,能够把产生的延迟降到最低,减少网络问题对游戏造成的影响
    • 物联网。一方面,物联网领域中断资源少,很可能知识个很小的嵌入式系统,而维护 TCP 协议的代价太大了;另一方面,物联网对实时性的要求也特别高。比如 Google 旗下的 Nest 简历 Thread Group,推出了物联网通信协议 Thread,就是基于 UDP 协议的

    还有一些,但是写的太多了也记不住,所以主要记住这几个就够了

    2. TCP

    首先是 TCP 的包头格式
    TCP 包头

    TCP 的包头有哪些内容,分别有什么用

    • 首先,源端口和目标端口是不可少的。
    • 接下来是包的序号。主要是为了解决乱序问题。不编好号怎么知道哪个先来,哪个后到
    • 确认序号。发出去的包应该有确认,这样能知道对方是否收到,如果没收到就应该重新发送,这个解决的是不丢包的问题
    • 状态位。SYN 是发起一个链接,ACK 是回复,RST 是重新连接,FIN 是结束连接。因为 TCP 是面向连接的,因此需要双方维护连接的状态,这些状态位的包会引起双方的状态变更
    • 窗口大小,TCP 要做流量控制,需要通信双方各声明一个窗口,标识自己当前的处理能力。

    通过对 TCP 头的解析,我们知道要掌握 TCP 协议,应该重点关注以下问题:

    • 顺序问题
    • 丢包问题
    • 连接维护
    • 流量控制
    • 拥塞控制

    2.1 TCP 的三次握手

    所有的问题,首先都要建立连接,所以首先是连接维护的问题

    TCP 的建立连接称为三次握手,可以简单理解为下面这种情况

    A:您好,我是 A
    B:您好 A,我是 B
    A:您好 B

    至于为什么是三次握手我这里就不细讲了,可以看其他人的博客,总结的话就是通信双方全都有来有回

    对于 A 来说它发出请求,并收到了 B 的响应,对于 B 来说它响应了 A 的请求,并且也接收到了响应。

    TCP 的三次握手除了建立连接外,主要还是为了沟通 TCP 包的序号问题。

    A 告诉 B,我发起的包的序号是从哪个号开始的,B 同样也告诉 A,B 发起的 包的序号是从哪个号开始的。

    双方建立连接之后需要共同维护一个状态机,在建立连接的过程中,双方的状态变化时序图如下所示
    状态变化时序图
    这是网上经常见到的一张图,刚开始的时候,客户端和服务器都处于 CLOSED 状态,先是服务端主动监听某个端口,处于 LISTEN 状态。然后客户端主动发起连接 SYN,之后处于 SYN-SENT 状态。服务端接收了发起的连接,返回 SYN,并且 ACK ( 确认 ) 客户端的 SYN,之后处于 SYN-SENT 状态。客户端接收到服务端发送的 SYN 和 ACK 之后,发送 ACK 的 ACK,之后就处于 ESTAVLISHED 状态,因为它一发一收成功了。服务端收到 ACK 的 ACK 之后,也处于 ESTABLISHED 状态,因为它也一发一收了。

    2.2 TCP 四次挥手

    说完建立连接,再说下断开连接,也被称为四次挥手,可以简单理解如下

    A:B 啊,我不想玩了
    B:哦,你不想玩了啊,我知道了
    这个时候,只是 A 不想玩了,即不再发送数据,但是 B 可能还有未发送完的数据,所以需要等待 B 也主动关闭。
    B:A 啊,好吧,我也不玩了,拜拜
    A:好的,拜拜

    这样整个连接就关闭了,当然上面只是正常的状态,也有些非正常的状态(比如 A 说完不玩了,直接跑路,B 发起的结束得不到 A 的回答,不知道该怎么办或则 B 直接跑路 A 不知道该怎么办),TCP 协议专门设计了几个状态来处理这些非正常状态
    断开连接状态时序图
    断开的时候,当 A 说不玩了,就进入 FIN_WAIT_1 的状态,B 收到 A 不玩了的消息后,进入 CLOSE_WAIT 的状态。

    A 收到 B 说知道了,就进入 FIN_WAIT_2 的状态,如果 B 直接跑路,则 A 永远处与这个状态。TCP 协议里面并没有对这个状态的处理,但 Linux 有,可以调整 tcp_fin_timeout 这个参数,设置一个超时时间。

    如果 B 没有跑路,A 接收到 B 的不玩了请求之后,从 FIN_WAIT_2 状态结束,按说 A 可以跑路了,但是如果 B 没有接收到 A 跑路的 ACK 呢,就再也接收不到了,所以这时候 A 需要等待一段时间,因为如果 B 没接收到 A 的 ACK 的话会重新发送给 A,所以 A 的等待时间需要足够长。

    2.3 累计确认

    TCP 如何实现可靠传输?

    首先为了保证顺序性,每个包都有一个 ID。在建立连接的时候会商定起始 ID 是什么,然后按照 ID 一个个发送,为了保证不丢包,需要对发送的包都要进行应答,当然,这个应答不是一个一个来的,而是会应答某个之前的 ID,表示都收到了,这种模式成为累计应答累计确认

    为了记录所有发送的包和接收的包,TCP 需要发送端和接收端分别来缓存这些记录,发送端的缓存里是按照包的 ID 一个个排列,根据处理的情况分成四个部分

    • 发送并且确认的
    • 发送尚未确认的
    • 没有发送等待发送的
    • 没有发送并且暂时不会发送的

    这里的第三部分和第四部分就属于流量控制的内容

    在 TCP 里,接收端会给发送端报一个窗口大小,叫 Advertised window。这个窗口应该等于上面的第二部分加上第三部分,超过这个窗口,接收端做不过来,就不能发送了

    于是,发送端要保持下面的数据结构
    发送端数据结构
    对于接收端来讲,它的缓存里面的内容要简单一些

    • 接收并且确认过的
    • 还没接收,但是马上就能接收的
    • 还没接收,但也无法接收的

    对应的数据结构如下
    接收端的数据结构

    2.4 顺序问题和丢包问题

    结合上面的图看,在发送端,1、2、3 已发送并确认;4、5、6、7、8、9 都是发送了还没确认;10、11、12 是还没发出的;13、14、15 是接收方没有空间,不准备发的。

    在接收端来看,1、2、3、4、5 是已经完成 ACK 但是还没读取的;6、7 是等待接收的;8、9 是已经接收还没有 ACK 的。

    发送端和接收端当前的状态如下:

    • 1、2、3 没有问题,双方达成了一致
    • 4、5 接收方说 ACK 了,但是发送方还没收到
    • 6、7、8、9 肯定都发了,但是 8、9 已经到了,6、7 没到,出现了乱序,缓存着但是没办法 ACK。

    根据这个例子可以知道顺序问题和丢包问题都有可能存在,所以我们先来看确认与重传机制

    假设 4 的确认收到了,5 的 ACK 丢了,6、7 的数据包丢了,该怎么办?

    一种方法是超时重试,即对每一个发送了但是没有 ACK 的包设定一个定时器,超过了一定的事件就重新尝试。这个时间必须大于往返时间,但也不宜过长,否则超时时间变长,访问就变慢了。

    如果过一段时间,5、6、7 都超时了就会重新发送。接收方发现 5 原来接收过,于是丢弃 5;6 收到了,发送 ACK,要求下一个是 7,7 不幸又丢了。当 7 再次超时的时候,TCP 的策略是超时间隔加倍。每当遇到一次超时重传的时候,都会讲下一次超时时间间隔设为先前值的两倍。

    超时重传的机制是超时周期可能相对较长,是否有更快的方式呢?

    有一个快速重传的机制,即当接收方接收到一个序号大于期望的报文段时,就检测到了数据流之间的间隔,于是发送三个冗余的 ACK,客户端接收到之后,知道数据报丢失,于是重传丢失的报文段。

    例如,接收方发现 6、8、9 都接收了,但是 7 没来,所以肯定丢了,于是发送三个 6 的 ACK,要求下一个是 7。客户端接收到 3 个,就会发现 7 的确又丢了,不等超时,马上重发。

    2.5 流量控制的问题

    在流量控制的机制里面,在对于包的确认中,会携带一个窗口的大小

    简单的说一下就是接收端在发送 ACK 的时候会带上缓冲区的窗口大小,但是一般在窗口达到一定大小才会更新窗口,因为每次都更新的话,刚空下来就又被填满了

    2.6 拥塞控制的问题

    也是通过窗口的大小来控制的,但是检测网络满不满是个挺难的事情,所以 TCP 发送包经常被比喻成往谁管理灌水,所以拥塞控制就是在不堵塞,不丢包的情况下尽可能的发挥带宽。

    水管有粗细,网络有带宽,即每秒钟能发送多少数据;水管有长度,端到端有时延。理想状态下,水管里面的水 = 水管粗细 * 水管长度。对于网络上,通道的容量 = 带宽 * 往返时延。

    如果我们设置发送窗口,使得发送但未确认的包为通道的容量,就能撑满整个管道。

    如图所示,假设往返时间为 8 秒,去 4 秒,回 4 秒,每秒发送一个包,已经过去了 8 秒,则 8 个包都发出去了,其中前四个已经到达接收端,但是 ACK 还没返回,不能算发送成功,5-8 后四个包还在路上,还没被接收,这个时候,管道正好撑满,在发送端,已发送未确认的 8 个包,正好等于带宽,也即每秒发送一个包,也即每秒发送一个包,乘以来回时间 8 秒。

    如果在这个基础上调大窗口,使得单位时间可以发送更多的包,那么会出现接收端处理不过来,多出来的包会被丢弃,这个时候,我们可以增加一个缓存,但是缓存里面的包 4 秒内肯定达不到接收端课,它的缺点会增加时延,如果时延达到一定程度就会超时重传

    TCP 拥塞控制主要来避免两种现象,包丢失和超时重传,一旦出现了这些现象说明发送的太快了,要慢一点。

    具体的方法就是发送端慢启动,比如倒水,刚开始倒的很慢,渐渐变快。然后设置一个阈值,当超过这个值的时候就要慢下来

    慢下来还是在增长,这时候就可能水满则溢,出现拥塞,需要降低倒水的速度,等水慢慢渗下去。

    拥塞的一种表现是丢包,需要超时重传,这个时候,采用快速重传算法,将当前速度变为一半。所以速度还是在比较高的值,也没有一夜回到解放前。

    总结及面试问题

    TCP 和 UDP 的区别

    • TCP 是面向连接的,UDP 是面向无连接的
    • UDP程序结构较简单
    • TCP 是面向字节流的,UDP 是基于数据报的
    • TCP 保证数据正确性,UDP 可能丢包
    • TCP 保证数据顺序,UDP 不保证

    什么是面向连接,什么是面向无连接

    在互通之前,面向连接的协议会先建立连接,如 TCP 有三次握手,而 UDP 不会

    TCP 为什么是可靠连接

    • 通过 TCP 连接传输的数据无差错,不丢失,不重复,且按顺序到达。
    • TCP 报文头里面的序号能使 TCP 的数据按序到达
    • 报文头里面的确认序号能保证不丢包,累计确认及超时重传机制
    • TCP 拥有流量控制及拥塞控制的机制

    TCP 的顺序问题,丢包问题,流量控制都是通过滑动窗口来解决的
    拥塞控制时通过拥塞窗口来解决的

    展开全文
  • tcp和udp

    2013-12-15 17:28:47
    计算机网络OSI模型中,TCP和UDP为第四层传输层的功能。 简单的说:TCP传输控制协议(Transmission Control Protocol)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。TCP协议能为应用程序...

    计算机网络OSI模型中,TCP和UDP为第四层传输层的功能。

    简单的说:TCP传输控制协议(Transmission Control Protocol)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。TCP协议能为应用程序提供可靠的通信连接,使一台计算机 发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。

    必须要经过三次“对话”才能建立。
    第1次对话
    A–>    发连接请求数据包                       –>B

    第2次对话
    A<–    发送同意连接和要求同步          <–B

    第3次对话
    A–>    发数据包确认B的要求的同步    –>B

    UDP用户数据报协议(User Data Protocol)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。
    UDP例子:“ping”命令测试两台主机之间TCP/IP通信是否正常,就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。

    几个使用TCP重要的优点
    1.TCP速率控(TCP rate control)制有经过证明是具有的稳定性和可扩展性。
    2.TCP提供保证delivery, deleting the packet loss efficiently。
    3.TCP是可以助于的越过防火墙。
    4.流量控制(The flow control)。
    5.The transmission windows system有助于优化网络资源的使用。

    从网上摘抄一段关于TCP协议的主要功能
    TCP协议的主要功能是完成对数据报的确认、流量控制和网络拥塞;自动检测数据报,并提供错误重发的功能;将多条路径传送的数据报按照原来的顺序进行排列,并对重复数据进行择取;控制超时重发,自动调整超时值;提供自动恢复丢失数据的功能。

    相对TCP,UDP显然更好地使用于实时应用,原因如下:
    1.最低开销(Minimum overhead)。
    2.在最大数据从传输速率开始发送。
    3.不重复请求,所以就没有重传(一个单一的数据包丢失在一个的实时应用中并不重要)。
    4.低处理时间(low processing time)。不需要缓冲(No buffers)。

    与TCP不同,UDP并不提供对IP协议的可靠机制、流控制以及错误恢复功能等。由于UDP 比较简单,UDP头包含很少的字节,比TCP负载消耗少。


    TCP协议和UDP协议的差别(以表格的形式):

     

     TCPUDP和流媒体的关系
    Header20 Byte8 BytesUDP更好,少overhead
    ConnectionConnection Oriented,在数据传输前需要建立connection。Connectionless,没有connection需要被建立。对于Multicast,Connection Oriented是不适合
    Reliability可靠 ACK不可靠可靠性比时间延迟(time delay)不重要。TCP会增加延迟
    CommunicationTwo-way双向One way单向

    In UDP, RTCP implements the feedback

    ErrorsError Correction FEC在整个packetError Correction只在Header ChecksumUDP使用较少处理Errors时间
    Data flow控制data flow用于管理下载速度没有控制

    UDP sends to the same data flow as is encoded the media.

    Re-transmit需要Repeat不需要RepeatRepeat也会产生延迟,不适合实时应用
    Delivery Rate没有预设。TCP将一直增加直到数据丢失或发现堵塞传输速度和流的编码率相吻合

    UDP适应性更好

    Client Buffer

    Receive buffer
    overflow: 如果数据到得太快,receiver发送一个信息给server,使其减慢传输

    没有local caching,packet到了媒体播放器直接被处理。

    Client Buffers也产生延迟
    展开全文
  • TCP和UDP的最完整的区别

    万次阅读 多人点赞 2016-08-04 11:30:30
    TCP和UDP两种协议的比较汇总
  • tcp udp的区别?

    千次阅读 多人点赞 2019-06-27 11:50:20
    tcp udp的区别? TCP 协议官方定义 维基百科介绍 UDP 协议官方定义 维基百科介绍 可参考:TCPUDP 协议的区别的详细分析基于 TCPUDP 协议编程差异 TCP/IP 协议是一个协议簇,包括很多协议。命名为 TCP...
  • tcp和udp协议的相似Networks are used to transmit data over the world. There is a lot of network protocols in use. But most known and used protocols are IP, TCP, UDP. IP lives different flat but TCP and...
  • TCP和UDP区别

    2019-06-28 11:57:54
    网络扫描仪支持 TCP UDP。以下是有关 TCP UDP 以及不同协议之间的差异的一些信息。 一般 TCP UDP 都是用于通过互联网发送数据位(称为数据包)的协议。它们都建立在互联网协议之上。换句话说,无论你是通过 ...
  • TCP和UDP的区别和优缺点

    万次阅读 多人点赞 2017-08-06 20:32:16
    1、TCPUDP区别总结: 1、TCP面向连接(如打电话要先拨号建立连接);...Tcp通过校验,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
  • 因特网为应用程序提供了两个运输层(传输层)协议,即TCP和UDP。当我们为因特网创建一个新的应用程序时,我们首先需要考虑的是:选择TCP还是UDP。这两个协议都为调用它们的应用程序提供了不同的服务集合。 一、...
  • 传输层的TCP和UDP

    2020-12-28 20:00:14
    传输层的TCP和UDPTCP和UDP协议TCP报文段TCP的三次握手TCP的四次断开TCP的常用端口号及其功能UDP的常用端口号及其功能 TCP和UDP协议 TCP(Transmission Control Protocol)传输控制协议 UDP(User Datagram Protocol...
  • TCP和UDP比较

    2019-03-20 10:07:30
    网络协议是每个前端工程师都必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP UDP,本文将介绍下这两者以及它们之间的区别。 想阅读更多优质文章请猛戳GitHub博客 一、TCP/IP网络模型 ...
  • TCP和UDP的区别 TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UDP协议与TCP/IP协议的联系,很多人犯糊涂了, 一直都是说TCP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! TCP/IP协议是...
  • TCP和UDP通信

    2016-07-06 23:41:16
    在Java中TCP和UDP通信在代码中的主要区别就是TCP通信需要IO流,而UDP不需要。 下面看一下TCP和UDP通信的简单代码 TCP通信的代码: 客户端代码: 服务器代码: UDP通信的代码: 客户端代码: ...
  • 作为 TCP/IP 中两个最具有代表性的传输层协议,TCP UDP 经常被拿出来相互比较。这些协议具体有什么区别,又是什么作用呢? 在 IT 圈混迹多年的小伙伴们,对 TCP UDP 肯定再熟悉不过了。作为计算机网络专业毕业...
  • TCP和UDP讲笑话

    千次阅读 2020-03-02 11:41:20
    大学学长发朋友圈的内容,TCP和UDP讲笑话……我的Blink区也有
  • TCP和UDP的异同点

    万次阅读 2018-06-29 13:39:22
    转自:https://blog.csdn.net/quiet_girl/article/details/50599777这篇文章整理了TCP...一、TCP和UDP的概念TCP(Transmission Control Protocol),传输控制协议。UDP(User Data Protocol),用户数据报协议。二、...
  • TCP和UDP之间的区别

    2017-01-18 11:16:25
    TCP和UDP区别文章转自TCP和UDP区别 - TCP UDP 是否连接 面向连接 面向非连接 传输可靠性 可靠的 不可靠的 应用场合 传输大量的数据 少量数据 速度 慢 快 OSI 和 TCP/IP 模型在传输层定义两种传输协议...
  • TCP和UDP的最完整的区别 标签: TCPUDP区别 2016-08-04 11:30 15535人阅读 评论(0) 收藏 举报  分类: 网络编程(6)  版权声明:本文为博主原创文章,未经博主允许不得转载。 ...
  • TCP和UDP的差别

    千次阅读 2020-04-26 09:40:20
    简单理解TCP和UDP的差别: TCP类似以前的有线电话,需要电话线连接,打电话需要提供地址(IP)和接的人(端口),数据以流的方式传输。 UDP类似现在的快递,不需要直接连接,只需要告诉你要寄的地址(IP)和接件人...
  • TCP和UDP 以及IP

    千次阅读 2016-09-22 18:30:47
    TCP和UDP 以及IP

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,762
精华内容 14,704
关键字:

tcp和udp