精华内容
下载资源
问答
  • TCP 和UDP 的传输机制与应用场景

    千次阅读 2019-05-27 11:39:15
    两者都是通信协议,TCP和UDP都是传输层协议,但是他们的通信机制和应用场景不同。 二、TCP TCP(Transmission Control Protocol)又叫传输控制协议,TCP是面向连接的,并且是一种可靠的协议, 在基于TCP进行通信时...

    一、TCP和UDP

    两者都是通信协议,TCP和UDP都是传输层协议,但是他们的通信机制和应用场景不同。
    

    二、TCP

    TCP(Transmission Control Protocol)又叫传输控制协议,TCP是面向连接的,并且是一种可靠的协议,
    在基于TCP进行通信时,通信双方需要建立TCP连接,建立连接需要经过三次握手,握手成功才可以通信。
    

    三、UDP

    UDP是一种面向无连接,切不可靠的协议,在通信过程中,它并不像TCP那样需要先建立一个连接,只
    要目的地址,端口号,源地址,端口号确定了,就可以直接发送信息报文,并且不需要一定能收到或者
    完整的数据。它仅仅提供了校验和机制来保障报文是否完整,若校验失败,则直接将报文丢弃,不做任何处理。
    

    四、TCP,UDP的优缺点

    (1)TCP优点
    可靠,稳定 
    TCP的可靠性体现在传输数据之前,三次握手建立连接(四次挥手断开连接),并且在数据传递时,
    有确认,窗口,重传,拥塞控制机制,数据传完之后断开连接来节省系统资源。
    
    (2)TCP缺点
    慢,效率比较低,占用系统资源,容易被攻击 
    传输数据之前建立连接,这样会消耗时间,而且在消息传递时,确认机制,重传机制和拥塞机制都
    会消耗大量的时间,而且要在每台设备上维护所有的传输连接。而且每一个连接都会占用系统的CPU,
    内存等硬件软件资源。并且TCP的取而机制,三次握手机制导致TCP容易被人利用,实现DOS,DDOS攻击。
    

    五、UDP优点

    快,比TCP安全 
    UDP没有TCP的握手,确认窗口,重传,拥塞机制。UDP是一个无状态的传输机制,所以在传输数据时
    非常快。UDP没有TCP这些机制,相应被利用的漏洞就少一点。但是UDP的攻击也是存在的,比如:UDP 的flood攻击。
    

    六、UDP缺点

    不可靠,不稳定 
    因为UDP没有TCP的那些可靠机制,在网络质量不好的时候容易发生丢包。
    

    七、应用场景

    #TCP应用场景
    当对网络通信质量有要求时,比如:整个数据要准确无误的传递给对方,这往往对于一些要求可靠的应用,
    比如HTTP,HTTPS,FTP等传输文件的协议,POP,SMTP等邮件的传输协议。常见使用TCP协议的应用:
     
    1.浏览器使用的:HHTP 
    2.FlashFXP:FTP 
    3.Outlook:POP,SMTP 
    4.QQ文件传输
    

    八、UDP 文件传输协议

    对当前网络通讯质量要求不高的时候,要求网络通讯速度尽量的快,这时就使用UDP 
    日常生活中常见使用UDP协议: 
    
    1.QQ语音 
    2.QQ视频 
    3.TFTP
    
    展开全文
  • TCP和UDP应用场景

    千次阅读 2020-05-22 15:26:51
    TCP一般用于文件传输(FTPHTTP对数据准确性要求高,速度可以相对慢),发送或接收邮件(POPIMAPSMTP对数据准确性要求高,非紧急应用),远程登录(TELNETSSH对数据准确性有一定要求,有连接的概念)等等;...

    TCP一般用于文件传输(FTP HTTP 对数据准确性要求高,速度可以相对慢),发送或接收邮件(POP IMAP SMTP 对数据准确性要求高,非紧急应用),远程登录(TELNET SSH 对数据准确性有一定要求,有连接的概念)等等;

    UDP一般用于即时通信(QQ聊天 对数据准确性和丢包要求比较低,但速度必须快),在线视频(RTSP 速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受的),网络语音电话(VoIP 语音数据包一般比较小,需要高速发送,偶尔断音或串音也没有问题)等等。

    展开全文
  • TCP和UDP的介绍及使用场景

    多人点赞 热门讨论 2021-05-16 16:21:10
    TCP和UDP的优势劣势 TCP 最核心的价值是提供了可靠性,而 UDP 最核心的价值是灵活,你几乎可以用它来做任何事情。 例如:HTTP 协议 1.1 2.0 都基于 TCP,而到了 HTTP 3.0 就开始用 UDP 了。 TCP 的稳定性 TCP ...

    TCP和UDP的优势和劣势

    TCP 最核心的价值是提供了可靠性,而 UDP 最核心的价值是灵活,你几乎可以用它来做任何事情。

    例如:HTTP 协议 1.1 和 2.0 都基于 TCP,而到了 HTTP 3.0 就开始用 UDP 了。

    TCP 的稳定性

    TCP 作为一个传输层协议,最核心的能力是传输。传输需要保证可靠性,还需要控制流速,这两个核心能力均由滑动窗口提供

    请求/响应模型

    TCP 中每个发送的请求都需要响应。如果一个请求没有收到响应,发送方就会认为这次发送出现了故障,会触发重发。

    排队(Queuing)

    在这里插入图片描述

    滑动窗口(Sliding Window)

    在这里插入图片描述

    如上图所示:

    • 深绿色代表已经收到 ACK 的段
    • 浅绿色代表发送了,但是没有收到 ACK 的段
    • 白色代表没有发送的段
    • 紫色代表暂时不能发送的段

    将已发送的数据放到最左边,发送中的数据放到中间,未发送的数据放到右边。

    假设我们最多同时发送 5 个封包,也就是窗口大小 = 5。窗口中的数据被同时发送出去,然后等待 ACK。如果一个封包 ACK 到达,我们就将它标记为已接收(深绿色)。

    如下图所示,有两个封包的 ACK 到达,因此标记为绿色。

    在这里插入图片描述

    这个时候滑动窗口可以向右滑动,如下图所示:

    在这里插入图片描述

    重传

    如果发送过程中,部分数据没能收到 ACK 会怎样呢?这就可能发生重传。

    如果发生下图这样的情况,段 4 迟迟没有收到 ACK。

    在这里插入图片描述

    这个时候滑动窗口只能右移一个位置,如下图所示:
    在这里插入图片描述

    在这个过程中,如果后来段 4 重传成功(接收到 ACK),那么窗口就会继续右移。

    如果段 4 发送失败,还是没能收到 ACK,那么接收方也会抛弃段 5、段 6、段 7。

    这样从段 4 开始之后的数据都需要重发。

    快速重传

    在 TCP 协议中,如果接收方想丢弃某个段,可以选择不发 ACK。

    发送端超时后,会重发这个 TCP 段。而有时候,接收方希望催促发送方尽快补发某个 TCP 段,这个时候可以使用快速重传能力。

    例如段 1、段 2、段 4 到了,但是段 3 没有到。 接收方可以发送多次段 3 的 ACK。如果发送方收到多个段 3 的 ACK,就会重发段 3。这个机制称为快速重传。这和超时重发不同,是一种催促的机制。

    为了不让发送方误以为段 3 已经收到了,在快速重传的情况下,接收方即便收到发来的段 4,依然会发段 3 的 ACK(不发段 4 的 ACK),直到发送方把段 3 重传。

    思考:窗口大小的单位是?

    在上面所有的图片中,窗口大小是 TCP 段的数量。

    实际操作中,每个 TCP 段的大小不同,限制数量会让接收方的缓冲区不好操作,因此实际操作中窗口大小单位是字节数。

    流速控制

    发送、接收窗口的大小可以用来控制 TCP 协议的流速。

    窗口越大,同时可以发送、接收的数据就越多,支持的吞吐量也就越大。

    当然,窗口越大,如果数据发生错误,损失也就越大,因为需要重传越多的数据。

    举个例子:我们用 RTT 表示 Round Trip Time,就是消息一去一回的时间。

    假设 RTT = 1ms,带宽是 1mb/s。

    如果窗口大小为 1kb,那么 1ms 可以发送一个 1kb 的数据(含 TCP 头),1s 就可以发送 1mb 的数据,刚好可以将带宽用满。

    如果 RTT 再慢一些,比如 RTT = 10ms,那么这样的设计就只能用完 1/10 的带宽。 当然你可以提高窗口大小提高吞吐量,但是实际的模型会比这个复杂,因为还存在重传、快速重传、丢包等因素。

    而实际操作中,也不可以真的把带宽用完,所以最终我们会使用折中的方案,在延迟、丢包率、吞吐量中进行选择。

    滑动窗口是 TCP 协议控制可靠性的核心。发送方将数据拆包,变成多个分组。然后将数据放入一个拥有滑动窗口的数组,依次发出,仍然遵循先入先出(FIFO)的顺序,但是窗口中的分组会一次性发送。窗口中序号最小的分组如果收到 ACK,窗口就会发生滑动;如果最小序号的分组长时间没有收到 ACK,就会触发整个窗口的数据重新发送。另一方面,在多次传输中,网络的平均延迟往往是相对固定的,这样 TCP 协议可以通过双方协商窗口大小控制流速。

    既然发送方有窗口,那么接收方也需要有窗口吗

    接收方收到发送方的每个数据分组(或者称为 TCP Segment),接收方肯定需要缓存。

    举例来说,如果发送方发送了:1, 2, 3, 4。 那么接收方可能收到的一种情况是:1,4,3。注意,没有收到 2 的原因可能是延迟、丢包等。这个时候,接收方有两种选择。

    选择一:什么都不做(这样分组 2 的 ACK 就不会发送给发送方,发送方发现没有收到 2 的 ACK,过一段时间就有可能重发 2,3,4,5)。 当然具体设计还需要探讨,比如不重发整个分组,只重发已发送没有收到 ACK 的分组。

    这种方法的缺陷是性能太差,重发了整个分组(或部分)。因此我们可以考虑另一种选择。

    选择二:如果重发一个窗口,或部分窗口,问题就不会太大了。虽然增加了网络开销,但是毕竟有进步(1 进步了,不会再重发)。

    性能方面最大的开销是等待超时的时间,就是发送方要等到超时时间才重发窗口,这样操作性能太差。

    因此,TCP 协议有一个快速重传的机制——接收方发现接收到了 1,但是没有接收到 2,那么马上发送 3 个分组 2 的 ACK 给到发送方,这样发送方收到多个 ACK,就知道接收方没有收到 2,于是马上重发 2。

    无论是上面哪种方案,接收方也维护一个滑动窗口,是一个不错的选择。接收窗口的状态,可以和发送窗口的状态相互对应了。

    当接收方给发送方回复ack的时候会携带接收方窗口大小,发送方就会根据这个回复来动态调整自己的窗口大小。。双方协商,就是带上窗口大小。窗口大小通常是接收方说了算。

    UDP 协议

    UDP(User Datagram Protocol),目标是在传输层提供直接发送报文(Datagram)的能力。

    为什么不直接调用 IP 协议呢? 如果裸发数据,IP 协议不香吗?

    这是因为传输层协议在承接上方应用层的调用,需要提供应用到应用的通信——因此要附上端口号。每个端口,代表不同的应用。传输层下层的 IP 协议,承接传输层的调用,将数据从主机传输到主机。IP 层不能区分应用,导致哪怕是在 IP 协议上进行简单封装,也需要单独一个协议。这就构成了 UDP 协议的市场空间。

    UDP 的封包格式

    UDP 的设计目标就是在允许用户直接发送报文的情况下,最大限度地简化应用的设计。

    UDP 的报文格式

    在这里插入图片描述

    UDP 的报文非常简化,只有 5 个部分。

    • Source Port 是源端口号。因为 UDP 协议的特性(不需要 ACK),因此这个字段是可以省略的。但有时候对于防火墙、代理来说,Source Port 有很重要的意义,它们需要用这个字段行过滤和路由。
    • Destination Port 是目标端口号(这个字段不可以省略)。
    • Length 是消息体长度
    • Checksum 是校验和,作用是检查封包是否出错。
    • Data octets 就是一个字节一个字节的数据,Octet 是 8 位。

    校验和(Checksum)机制,这个机制在很多的网络协议中都会存在,因为校验数据在传输过程中有没有丢失、损坏是一个普遍需求。

    比如现在数据有 4 个 byte:a,b,c,d,那么一种最简单的校验和就是:checksum=(a+b+c+d) ^ 0xff

    如果发送方用上述方式计算出 Checksum,并将 a,b,c,d 和 Checksum 一起发送给接收方,接收方就可以用同样的算法再计算一遍,这样就可以确定数据有没有发生损坏变化)。

    当然 Checksum 的做法,只适用于数据发生少量变化的情况。如果数据发生较大的变动,校验和也可能发生碰撞。

    你可以看到 UDP 的可靠性保证仅仅就是 Checksum 一种。

    如果一个数据封包 Datagram 发生了数据损坏,UDP 可以通过 Checksum 纠错或者修复。

    但是 UDP 没有提供再多的任何机制,比如 ACK、顺序保证以及流控等。

    UDP 与 TCP的区别

    1. 目的差异

    首先,这两个协议的目的不同:

    • TCP 协议的核心目标是提供可靠的网络传输

    • UDP 的目标是在提供报文交换能力基础上尽可能地简化协议轻装上阵

    2. 可靠性差异

    • TCP 核心是要在保证可靠性提供更好的服务。TCP 会有握手的过程,需要建立连接,保证双方同时在线。而且TCP 有时间窗口持续收集无序的数据,直到这一批数据都可以合理地排序组成连续的结果。

    • UDP 并不具备以上这些特性,它只管发送数据封包,而且 UDP 不需要 ACK,这意味着消息发送出去成功与否 UDP 是不管的。

    3. 连接 vs 无连接

    • TCP 是一个面向连接的协议(Connection-oriented Protocol),传输数据必须先建立连接。
    • UDP 是一个无连接协议(Connection-less Protocol),数据随时都可以发送,只提供发送封包(Datagram)的能力。

    4. 流控技术(Flow Control)

    • TCP 使用了流控技术确保发送方不会因为一次发送过多的数据包而使接收方不堪重负。TCP 在发送缓冲区中存储数据,并在接收缓冲区中接收数据。当应用程序准备就绪时,它将从接收缓冲区读取数据。如果接收缓冲区已满,接收方将无法处理更多数据,并将其丢弃。
    • UDP 没有提供类似的能力。

    5. 传输速度

    • UDP 协议简化,封包小,没有连接、可靠性检查等,因此单纯从传输速度上讲,UDP 更快

    6. 场景差异

    TCP 每个数据封包都需要确认,因此天然不适应高速数据传输场景,比如观看视频(流媒体应用)、网络游戏(TCP 有延迟)等。具体来说,

    如果网络游戏用 TCP,每个封包都需要确认,可能会造成一定的延迟;再比如音、视频传输天生就允许一定的丢包率;

    Ping 和 DNS Lookup,这类型的操作只需要一次简单的请求/返回,不需要建立连接,用 UDP 就足够了。

    ping (Packet Internet Groper):因特网包探索器,用于测试网络连接量的程序

    DNS Lookup(域名解析):请求某域名下的资源,浏览器需要先通过DNS解析器得到该域名服务器的IP地址。在DNS查找完成之前,浏览器不能从主机名那里下载到任何东西。

    如果考虑希望传输足够块,就可能会用 UDP。

    再比如 HTTP 协议,如果考虑请求/返回的可靠性,用 TCP 比较合适。

    但是像 HTTP 3.0 这类应用层协议,从功能性上思考,暂时没有找到太多的优化点,但是想要把网络优化到极致,就会用 UDP 作为底层技术,然后在 UDP 基础上解决可靠性。

    所以理论上,任何一个用 TCP 协议构造的成熟应用层协议,都可以用 UDP 重构

    第一类:TCP 场景

    • 远程控制(SSH)
    • File Transfer Protocol(FTP)
    • 邮件(SMTP、IMAP)等
    • 点对点文件传出(微信等)

    第二类:UDP 场景

    • 网络游戏
    • 音视频传输
    • DNS
    • Ping
    • 直播

    第三类:模糊地带(TCP、UDP 都可以考虑)

    • HTTP(目前以 TCP 为主)
    • 文件传输

    总结

    • UDP 的核心价值是灵活、轻量,构造了最小版本的传输层协议。
    • TCP 最核心的价值就是提供封装好的一套解决可靠性的优秀方案

    解决可靠性是非常复杂的,要考虑非常多的因素。

    • TCP 帮助我们在确保吞吐量、延迟、丢包率的基础上,保证可靠性。

    • UDP 则不同,UDP 提供了最小版的实现,只支持 ChecksumUDP 最核心的价值是灵活、轻量、传输速度快

    • 最后还有一个非常重要的考虑因素就是成本,如果没有足够专业的团队解决网络问题,TCP 无疑会是更好的选择。

    Moba 类多人竞技游戏的网络应该用 TCP 还是 UDP**?

    Moba类游戏的传输协议是基于UDP的封装。首先Moba类游戏一般对实时性有要求,如果使用了TCP,再怎么优化也受TCP连接效率的影响。而UDP传输效率相对来说较高,但可靠性欠佳。因此思路应该是基于UDP协议做一些优化,牺牲部分的传输效率,保证其可靠性,但是又不需要像TCP协议那样有一套完善的机制来保证其可靠性。

    文章参考《计算机网络通关 29 讲》—— 林䭽

    展开全文
  • TCP 和UDP的区别以及各自的应用场景

    千次阅读 2020-09-09 16:15:51
    UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装不能对数据包进行排序的缺点,也...

    1. UDP用户数据报协议

    UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

    它有以下几个特点:

    1. 面向无连接

    UDP在发送报文前不需要建立连接,只要客户端想发送信息给服务器端就可以发送信息,并且不会对报文进行任何分组和重组操作。
    UDP:我们只是报文的搬运工!

    传输数据时:UDP对应用层的传下来的数据只会给数据增加一个UDP标识,表示是UDP协议。不会对报文进行分组。

    接收数据时:网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会任何重组操作。

    其中UDP在数据添加的头部开销很小只有8字节其中包括的数据有:

    1. 两个十六位的端口号,分别为源端口(可选字段)和目标端口,各两个字节
    2. 整个数据报文的长度两个字节
    3. 整个数据报文的检验和(IPv4 可选 字段),该字段用于发现头部信息和数据中的错误

    2. 有单播,多播,广播的功能

    UDP 不止支持一对一的传输方式,同样支持一对多,多对多,多对一的方式,也就是说 UDP 提供了单播,多播,广播的功能。

    3. UDP是面向报文的

    发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文交给UDP

    4. 不可靠性

    首先不可靠性体现在无连接上,通信都不需要建立连接,想发就发,这样的情况肯定不可靠。

    并且收到什么数据就传递什么数据,并且也不会备份数据,发送数据也不会关心对方是否已经正确接收到数据了。

    再者网络环境时好时坏,但是 UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用 UDP 而不是 TCP。

    2. TCP传输控制协议

    TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管中的水流。

    2.1 TCP连接过程三次握手

    TCP建立连接的过程中解决了三个问题:
    1):要使每一方都能够确认对方的存在。
    2):要允许双方协商一些参数
    3):能够对运输实体资源进行分配

    TCP连接的建立采用客户机/服务器模式,主动发起连接建立的应用进程叫做客户机,而被动等待连接建立的应用进程叫做服务器。

    三次握手ps:补充一些字段信息,小写的seq和ack表示序列号和确认号。

    序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。

    确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。

    以下这些都是标志位只有一位。
    标志位信息

    第一次握手:客户端向服务器端发送请求,请求建立连接,此时SYN=1,序列号seq=x,客户端进入SYN-SENT(连接请求发送)状态。
    第二次握手: 服务器端收到客户端发送过来的请求,确认自己可以建立连接,对连接请求进行回复,回复的报文中SYN=1,ACK=1,序列号seq=y;确认号ack=x+1;同时从监听状态变为SYN-RECV(请求接受)状态。
    第三次握手:客户端收到服务器端的确认信息可以建立连接,这是发送一个确认报文,其中ACK=1,序列号seq=x+1,ack=y+1。状态变为连接建立,这时可以发送数据给服务器获得服务
    服务器在接收到第三次握手发来的确认报文后进入连接建立状态,进行数据传输。

    2.2 TCP断开链接

    四次挥手
    TCP 是全双工的,在断开连接时两端都需要发送 FIN 和 ACK。

    1.数据传输结束后,通信的双方都可以释放连接。此时,客户机和服务器都处于ESTABLISHED(已建立连接)状态。

    2.第一次挥手:假设客户机请求完资源了,想要释放连接。首先,客户机的应用进程先向服务器发出连接释放报文段,该报文段中将首部的终止控制位FIN置为1,序号seq=u(注意:此时的u不是随机产生的,而是之前客户机传送的数据的最后一个字节的序号加1)。此时客户机进入到FIN-WAIT-1(终止等待1)状态,等待服务器的确认。

    3.第二次挥手:服务器收到连接释放报文后发出确认,在发送报文中将首部中的ACK置为1(ACK置为1,表面服务器同意与客户机释放连接),并且产生序号v(注意:此时的v不是随机产生的,而是之前服务器传送的数据的最后一个字节的序号加1),并且发出确认号为u+1(确认号表明服务器渴望收到的下一个报文段的第一个数据字节的序号,因为之前发送了u,所以下一个序号为u+1)。此时服务器就进入CLOSE-WAIT(关闭等待)状态,客户机进入FIN-WAIT-2状态。

    在第二次挥手结束后,客户端的数据都已经发送完毕,但是服务器端可能没有发送完所以需要等待一段时间等服务器端的数据也发送完了再第三次挥手,此时客户端处于FIN-WAIT-2状态。

    4.第三次挥手:服务器发送完数据后,此时可以断开连接,还是有服务器向客户机发送报文,该报文段中将首部的终止控制位FIN置为1(只有当FIN置为1时,才能表明客户机想要和服务器断开连接),ACK也置为1,并且序号为w(重点注意,此时的w不一定等于v+1。如果在客户机释放了连接之后,服务器向客户机仍旧发送了一部分数据,那么此时w不等于v+1,但是如果期间没有再发送数据,那么w就等于v+1。总而言之,这个w等于服务器上一次发送的数据的最后一个字节加1),并且发送确认号为u+1(确认号表明服务器渴望收到的下一个报文段的第一个数据字节的序号,因为之前发送了u,所以下一个序号为u+1)。此时服务器就进入了LAST-ACK(最后确认)状态。

    5.客户机收到服务器的连接释放报文后,必须对此报文进行确认。在该报文段中将ACK置为1,确认号为w+1(确认号表明服务器渴望收到的下一个报文段的第一个数据字节的序号,因为之前发送了w,所以下一个序号为w+1),产生序号为u+1(因为上一个发送的数据的序号为u)。此时服务器进入到TIME-WAIT(等待时间)状态。但是,此时TCP连接还没有被释放掉。必须经过2MSL后服务器才能进入到CLOSED状态。(注:MSL叫做最长报文段寿命,RFC建议为两分钟,也就是说,要经过四分钟才能进入到CLOSED状态)。

    2.3 TCP协议的特点

    面向连接,是指发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”,这样能建立可靠的连接。建立连接,是为数据的可靠传输打下了基础。

    由于是面向连接的所以TCP仅支持单播传输每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。

    面向字节流:TCP不像UDP一样那样一个个报文独立地传输,而是在不保留报文边界的情况下以字节流方式进行传输。

    可靠传输
    对于可靠传输,判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

    提供拥塞控制

    当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞

    TCP提供全双工通信

    TCP允许通信双方的应用程序在任何时候都能发送数据,因为TCP连接的两端都设有缓存,用来临时存放双向通信的数据。当然,TCP可以立即发送一个数据段,也可以缓存一段时间以便一次发送更多的数据段(最大的数据段大小取决于MSS)。

    TCP/UDP区别
    总结:

    1.TCP向上层提供面向连接的可靠服务 ,UDP向上层提供无连接不可靠服务。
    2. 虽然 UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为
    3.对数据准确性要求高,速度可以相对较慢的,可以选用TCP。

    展开全文
  • TCP和UDP的区别和应用场景

    千次阅读 2018-04-16 12:28:49
    TCP和UDP的区别 (1)TCP面向连接,UDP无连接; (2)TCP提供可靠传输,UDP尽最大努力交付; (3)UDP的传输效率比TCP快; (4)TCP连接是点到点、一对一的,UDP支持一对一、一对多多对多的交互通信; (5)...
  • TCP 和UDP应用场景

    2021-02-26 22:14:20
    TCP 和UDP应用场景 网路中计算机通信无外乎有两种情况 TCP :适用于发送的文件多,需要将发送的内容分成多个数据包进行传输。【 需要分段,编号,流量控制,拥泵控制,可靠传输的功能。客户端与服务器建立TCP连接...
  • TCP和UDP应用场景

    2020-06-23 11:47:31
    常见使用TCP协议应用: 有HTTP,FTP, POP,SMTP,Putty,Telnet ,SSH,QQ等文件传输, UDP:当强调传输性而不是传输的 完整性时,要求网络通信速度快, 常见的UDP协议应用: QQ语音,QQ视频,等 ...
  • tcp协议和udp协议的使用场景

    千次阅读 2018-09-09 12:15:03
    tcp是面向连接的协议,也就是说,在收发数据前,必须对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求...
  • dns的tcp和udp使用场景

    2020-10-17 23:36:08
    其中提到 DNS 解析,是支持 UDP TCP 双协议的。 但是细心的朋友通过 wireshark、sniffer、tcpdump 等抓包工具分析,会发现基本上所有客户端发起 DNS 查询的场景下,都只使用到了 UDP 协议。 那在 DNS 中,TCP...
  • TCP,UDP通信使用场景及区别比较

    千次阅读 2018-08-23 16:39:47
    在文章《基于java的TCP通信》我们实现了基于TCP传输协议的通信,但是在...测试程序发现终端服务器在接收数据的时候总会出现一些问题,如:结束数据不及时,TCP建立时间长,传输数据不成功等问题。于是,我们考虑通...
  • 文章目录TCP和UDPTCPUDPTCP优点TCP缺点UDP缺点TCP应用场景UDP 应用场景 TCP和UDP 两者都是通信协议,TCP和UDP都是传输层协议,但是他们的通信机制和应用场景不同。 TCP TCP(Transmission Control Protocol)又叫...
  • TCP和UDP的区别及应用场景

    千次阅读 2021-01-19 23:42:44
    一、TCP和UDP的区别 1. 连接 TCP: 是面向连接的传输协议,即:传输数据之前必须先建立好连接。 UDP: 属于无连接的传输协议。 2. 服务对象 TCP: 是点对点的两点之间的服务,即:一条TCP连接只能有两个端点。 ...
  • tcpudp对比 适用场景和优化

    千次阅读 2018-12-25 22:16:57
    区分tcp和udp,各适用于什么场景? 1) tcp是基于连接的,即发送数据之前需要先建立连接;udp不需要 2)tcp是可靠的,有重传\序号\确认机制\滑动窗口等保证顺序正确;udp不能保证 3)tcp是一对一的;udp支持一对...
  • TCP和UDP的区别及使用场景

    千次阅读 2020-03-24 13:53:03
    TCP和UDP使用场景 TCP和UDP的区别 TCP是面向连接的传输层协议,传输数据之前必须先建立连接;UDP是无连接传输。 TCP是点对点服务,一条TCP连接只有连个断点;UDP是多对多连接交互通信。 TCP是可靠连接:无差错、...
  • TCPUDP区别及使用场景总结

    千次阅读 2017-05-10 22:22:04
    速度快应用场景(当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议): 游戏/流媒体TCP协议...
  • TCP: 优点:可靠、稳定 TCP的可靠体现在TCP在传输数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完之后,还会断开连接用来节约系统资源 缺点:慢,效率低...
  • 关于TCP/UDP各适用场景

    千次阅读 2019-08-10 15:16:07
    假如你曾经使用TCP,那么你肯定知道TCP是可靠协议。即你先在两台机器间建立连接,然后你再在两台机器上开始传输数据,传输的过程文件读写很像。你在一头写,在另外一头读而已。 TCP协议是可靠而且有序的,这个...
  • TCPUDP 的区别及应用场景

    千次阅读 2018-05-09 20:51:58
    TCPUDP 的区别及应用场景 概述 两者都是通信协议, TCPUDP 是传输层协议,但他们的通信机制与应用场景不同,下面来阐述两者的区别以及它们的应用场景TCPUDP TCP(Transmission ...
  • TCPUDP的区别各自的使用场景 TCP: 传输控制协议 TCP是面向连接的,可靠的传输协议 面向连接:在传输数据之前,必须要先在两个程序之间建立连接 在数据传输的时候,必须要保证对方收到了数据,在已连接的前提下...
  • TCP和UDP的区别各自适用的场景 01 TCP和UDP区别 1. 连接 TCP是面向连接的传输层协议,即传输数据之前必须先建立好连接。 UDP无连接。 2. 服务对象 TCP是点对点的两点间服务,即一条TCP连接只能有两个端点; UDP...
  • TCP UDP 的区别具体应用场景

    万次阅读 多人点赞 2018-04-29 18:25:00
    两者都是通信协议,TCP和UDP都是传输层协议,但是他们的通信机制和应用场景不同。 TCP TCP(Transmission Control Protocol)又叫传输控制协议,TCP是面向连接的,并且是一种可靠的协议,在基于TCP进行通信时,...
  • 传输层TCP和UDP的区别分析与应用场景【转载】

    万次阅读 多人点赞 2015-10-18 10:37:36
    基本概念:1: 面向报文面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。...
  • TCP和UDP协议的特点和应用场景

    千次阅读 2018-08-06 11:07:57
    网络中的计算机通信无外乎有以下两种情况: ...TCP :要传输的内容需要分成多个数据包来传输,分段,编号,流量控制,拥塞避免,可靠传输,客户端服务端需要建立TCP连接(协商参数:选择性确认,最...
  • 面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。UDP应用层交下来的报文...
  • TCP协议的主要特点 (1)TCP是面向连接的运输层协议;所谓面向连接就是双方...允许通信双方的应用进程在任何时候都可以发送数据,因为两端都设有发送缓存接受缓存; (5)面向字节流。虽然应用程序与TCP交互是一次

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,681
精华内容 23,472
关键字:

tcp和udp的应用场景