精华内容
下载资源
问答
  • tcp与udp的区别

    2019-07-01 22:04:04
    tcp与udp的区别

    TCP和UDP区别

    TCP UDP
    是否连接 面向连接 面向非连接
    传输可靠性 可靠的 不可靠的
    应用场合 传输大量的数据 少量数据
    速度

    OSI 和 TCP/IP 模型在传输层定义两种传输协议:TCP(或传输控制协议)和 UDP(或用户数据报协议)。
    UDP
    UDP 与 TCP 的主要区别在于 UDP 不一定提供可靠的数据传输。事实上,该协议不能保证数据准确无误地到达目的地。UDP 在许多方面非常有效。当某个程序的目标是尽快地传输尽可能多的信息时(其中任意给定数据的重要性相对较低),可使用 UDP。ICQ 短消息使用 UDP 协议发送消息。
    许多程序将使用单独的TCP连接和单独的UDP连接。重要的状态信息随可靠的TCP连接发送,而主数据流通过UDP发送。
    TCP
    TCP的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟连接。TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复。它通过为其发送的每个数据包提供一个序号来完成此恢复。记住,较低的网络层会将每个数据包视为一个独立的单元,因此,数据包可以沿完全不同的路径发送,即使它们都是同一消息的组成部分。这种路由与网络层处理分段和重新组装数据包的方式非常相似,只是级别更高而已。
    为确保正确地接收数据,TCP要求在目标计算机成功收到数据时发回一个确认(即 ACK)。如果在某个时限内未收到相应的 ACK,将重新传送数据包。如果网络拥塞,这种重新传送将导致发送的数据包重复。但是,接收计算机可使用数据包的序号来确定它是否为重复数据包,并在必要时丢弃它。
    TCP与UDP的选择
    如果比较UDP包和TCP包的结构,很明显UDP包不具备TCP包复杂的可靠性与控制机制。与TCP协议相同,UDP的源端口数和目的端口数也都支持一台主机上的多个应用。一个16位的UDP包包含了一个字节长的头部和数据的长度,校验码域使其可以进行整体校验。(许多应用只支持UDP,如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发。)
    很明显,当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择,如:DNS交换。把SNMP建立在UDP上的部分原因是设计者认为当发生网络阻塞时,UDP较低的开销使其有更好的机会去传送管理数据。TCP丰富的功能有时会导致不可预料的性能低下,但是我们相信在不远的将来,TCP可靠的点对点连接将会用于绝大多数的网络应用。

    TCP协议和UDP协议特性区别总结:
    1. TCP协议在传送数据段的时候要给段标号;UDP协议不
    2. TCP协议可靠;UDP协议不可靠
    3. TCP协议是面向连接;UDP协议采用无连接
    4. TCP协议负载较高,采用虚电路;UDP采用无连接
    5. TCP协议的发送方要确认接收方是否收到数据段(3次握手协议)
    6. TCP协议采用窗口技术和流控制

    原文:https://blog.51cto.com/feinibuke/340272

    展开全文
  • TCP与UDP的区别

    2020-03-28 22:50:22
    TCP与UDP的区别 php使用websoket做通讯的时候会涉及到很多协议,比方说TCP,UDP,HTTP,HTTPS等等,下面详细说说tcp和udp的区别 TCP与UDP基本区别 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少; 3.UDP程序结构较...

    TCP与UDP的区别

    php使用websoket做通讯的时候会涉及到很多协议,比方说TCP,UDP,HTTP,HTTPS等等,下面详细说说tcp和udp的区别

    TCP与UDP基本区别

    1.基于连接与无连接
    2.TCP要求系统资源较多,UDP较少;
    3.UDP程序结构较简单
    4.流模式(TCP)与数据报模式(UDP);
    5.TCP保证数据正确性,UDP可能丢包
    6.TCP保证数据顺序,UDP不保证

    UDP应用场景:

    1.面向数据报方式
    2.网络数据大多为短消息
    3.拥有大量Client
    4.对数据安全性无特殊要求
    5.网络负担非常重,但对响应速度要求高

    具体编程时的区别

    1.socket()的参数不同
       2.UDP Server不需要调用listen和accept
       3.UDP收发数据用sendto/recvfrom函数
       4.TCP:地址信息在connect/accept时确定
       5.UDP:在sendto/recvfrom函数中每次均 需指定地址信息
       6.UDP:shutdown函数无效

    编程区别
    通常我们在说到网络编程时默认是指TCP编程,即用前面提到的socket函数创建一个socket用于TCP通讯,函数参数我们通常填为SOCK_STREAM。即socket(PF_INET, SOCK_STREAM, 0),这表示建立一个socket用于流式网络通讯。
      SOCK_STREAM这种的特点是面向连接的,即每次收发数据之前必须通过connect建立连接,也是双向的,即任何一方都可以收发数据,协议本身提供了一些保障机制保证它是可靠的、有序的,即每个包按照发送的顺序到达接收方。

    而SOCK_DGRAM这种是User Datagram Protocol协议的网络通讯,它是无连接的,不可靠的,因为通讯双方发送数据后不知道对方是否已经收到数据,是否正常收到数据。任何一方建立一个socket以后就可以用sendto发送数据,也可以用recvfrom接收数据。根本不关心对方是否存在,是否发送了数据。它的特点是通讯速度比较快。大家都知道TCP是要经过三次握手的,而UDP没有。

    基于上述不同,UDP和TCP编程步骤也有些不同,如下:

    TCP:
    TCP编程的服务器端一般步骤是:
      1、创建一个socket,用函数socket();
      2、设置socket属性,用函数setsockopt(); * 可选
      3、绑定IP地址、端口等信息到socket上,用函数bind();
      4、开启监听,用函数listen();
      5、接收客户端上来的连接,用函数accept();
      6、收发数据,用函数send()和recv(),或者read()和write();
      7、关闭网络连接;
      8、关闭监听;

    TCP编程的客户端一般步骤是:
      1、创建一个socket,用函数socket();
      2、设置socket属性,用函数setsockopt();* 可选
      3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
      4、设置要连接的对方的IP地址和端口等属性;
      5、连接服务器,用函数connect();
      6、收发数据,用函数send()和recv(),或者read()和write();
      7、关闭网络连接;

    UDP:
    与之对应的UDP编程步骤要简单许多,分别如下:
      UDP编程的服务器端一般步骤是:
      1、创建一个socket,用函数socket();
      2、设置socket属性,用函数setsockopt();* 可选
      3、绑定IP地址、端口等信息到socket上,用函数bind();
      4、循环接收数据,用函数recvfrom();
      5、关闭网络连接;

    UDP编程的客户端一般步骤是:
      1、创建一个socket,用函数socket();
      2、设置socket属性,用函数setsockopt();* 可选
      3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
      4、设置对方的IP地址和端口等属性;
      5、发送数据,用函数sendto();
      6、关闭网络连接;

    TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。

    UDP补充:
    UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的行为。此外,传输途中如果出现了丢包,UDO也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正的功能。如果需要这些细节控制,那么不得不交给由采用UDO的应用程序去处理。换句话说,UDP将部分控制转移到应用程序去处理,自己却只提供作为传输层协议的最基本功能。UDP有点类似于用户说什么听什么的机制,但是需要用户充分考虑好上层协议类型并制作相应的应用程序。

    TCP补充:
    TCP充分实现了数据传输时各种控制功能,可以进行丢包的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没有。此外,TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。

    TCP与UDP区别总结:

    1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
    2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付
    3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
    UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
    4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
    5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
    6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

    展开全文
  • TCP UDP 的区别

    2020-03-24 22:11:16
    TCP UDP 的区别 一、TCP面向连接,UDP面向无连接 TCP 是位于传输层的可靠传输协议为用户提供面向连接的可靠传输,如何建立连接?,UDP则是为用户提供尽最大可能交付的无连接服务 二、传播特性 由于TCP面向连接...

    TCP 与 UDP 的区别

    一、TCP面向连接,UDP面向无连接

    TCP 是位于传输层的可靠传输协议为用户提供面向连接的可靠传输,如何建立连接?,UDP则是为用户提供尽最大可能交付的无连接服务

    二、传播特性

    由于TCP面向连接,一条TCP连接只能有两个端点,即为***点对点***的数据传播,而且***TCP支持全双工通信***。而UDP***面向无连接,可提供点对点,点对多***,

    三、传输单位

    TCP的传输单位为***数据段,面向字节流***,没有固有的”报文”或”报文边界”的概念。TCP单次传输数据大小受到很多方面的影响,如发送窗口大小(即接收方的接受能力)、网络拥塞程度、最大传输单元大小、输出缓冲区数据等,因此TCP每次发送数据的量的决定方式导致了TCP面向字节流,即一个大的数据可能被拆分为多个,多个小数据可能会合并为一个,可能会导致粘包的问题

    UDP的传输单元为***数据报,面向报文***,由于UDP提供进行最大可能交付的无连接服务,所以UDP并无需理会网络的状况以及接收方的情况,设计比较简单,因此,UDP每次发送都会完成发送一个报文,不会合并也不会拆分,因此数据报的大小可能会导致传输是否成功(不可靠)

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,809
精华内容 1,523
关键字:

tcp与udp的区别