UDP、TCP特性

UDP: 用户数据报协议

  • UDP是一个简单的传输层协议。
  • 应用进程往一个UDP套接字写入一个消息,该消息随后被封装到一个UDP数据报,该UDP数据报进而又被封装到一个IP数据报,然后发送到目的地。
  • UDP不保证UDP数据报能到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数据报只到达一次。
  • 每个UDP数据报都有一个长度,如果一个数据报正确地到达其目的地,那么该数据报的长度将随数据一道传递给接收端应用程序。(TCP是一个字节流协议,没有任何记录边界,这一点不同于UDP)
  • UDP提供无连接的服务,因为UDP客户端和服务器之前不必存在任何长期的关系。举例来说,一个UDP客户可以创建一个套接字并发送一个数据报给一个给定的服务器,然后立即用同一个套接字发送另一个数据报给另一个服务器。同样地,一个UDP服务器可以用同一个UDP套接字从若干个不同的客户接受数据报,每个客户一个数据报。

 TCP:传输控制协议

  • TCP提供客户与服务器之间的连接,TCP客户先与某个给定服务器建立一个连接,再跨该连接与那个服务器交换数据,然后终止这个连接。
  • TCP提供了可靠性,当TCP向另一端发送数据时,它要求对端返回一个确认。如果没有收到确认,TCP就自动重传数据并等待更长时间。再数次重传失败后,TCP才放弃,如此在尝试发送数据上所花的总时间一般为4~10分钟(依赖于具体实现)。
  • TCP含有用于动态估算客户与服务器之间的往返时间(RTT)的算法,以便它知道等待一个确认需要多少时间。举例来说,RTT在一个局域网上大概是几毫秒,跨越一个广域网则可能是数秒钟。另外,因为RTT受网络流通各种变化因素影响,TCP还持续估算一个给定连接的RTT。
  • TCP通过给其中每个字节关联一个序列号对所发的数据进行排序。举例来说,假设一个应用写2048字节到一个TCP套接字,导致TCP发送2个分节:第一个分节所含数据的序列号为1~1024,第二个分节所含数据的序列号为1025~2048。(分节是TCP传递给IP的数据单元)如果这些分节非顺序到达,接收端TCP将先根据他们的序列号重新排序,再把结果数据传递给应用。如果接收端TCP接收到来自对端的重复数据(譬如说对端认为一个分节已丢失并因此重传,而这个分节并没有真正丢失,只是网络通信过于拥堵),它可以(根据序列号)判定数据是重复的,从而丢弃数据。
  • TCP提供流量控制。TCP总是告知对端在任何时刻它一次能够从对端接受多少字节的数据,这称为通告窗口(advertised window)。在任何时刻,该窗口指出接收缓冲区中当前可用的空间量,从而确保发送端发送的数据不会使接收缓冲区溢出。该窗口时刻动态变化:当接收到来自发送端的数据时,窗口大小就减小,但是当接收端应用从缓冲区读取数据时,窗口大小就增大。通告窗口减小到0是有可能的:当TCP对应某个套接字的接收缓冲区已满,导致它必须等待应用从该缓冲区读取数据时,方能从对端再接收数据。
  • TCP连接是全双工的。这意味着一个给定的连接上应用可以在任何时刻在进出两个方向上既发送数据又接收数据。因此,TCP必须为每个数据流方向跟踪诸如序列号和通告窗口大小等状态信息。(UDP可以是全双工的)

SCTP: 流控制传输协议

  • SCTP在客户和服务器之间提供关联,并像TCP那样那样给应用提供可靠性、排序、流量控制以及全双工的数据传送。SCTP中使用“关联”一词代替“连接”是为了避免这样的内涵:一个连接只涉及两个IP地址之间的通信。一个关联指代两个系统之间的一次通信,它可能因为SCTP支持多宿而涉及不止两个地址。
  • 与TCP不同的是,SCTP是面向消息的。它提供各个记录的按序递送服务。与UDP一样,由发送端写入的每条记录的长度随数据一道传递给接收端应用。
  • SCTP能够在所连接的端点之间提供对个流,每个流各自可靠的按序递送消息。一个流上某个消息的丢失不会阻塞同一关联其他流上消息的投递。这种做法与TCP正好相反,就TCP而言,在单一字节流中任何位置的字节丢失都将阻塞该连接上其后所有数据的递送,直到该丢失被修复为止。
  • SCTP还提供多宿特性,使得单个SCTP端点能够支持多个IP地址。该特性可以增强应对网络故障的健壮性。一个端点可能有多个冗余的网络连接,每个网络又可能有各自接入因特网基础设施的连接。当该端点与另一个端点建立一个关联后,如果它的某个网络或某个跨越因特网的通路发生故障,SCTP就可以通过切换到使用已与该关联相关的另一个地址来规避所发生的故障。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值