UDP TCP SCTP三者比较

来源:互联网 发布:hibernate注解sql 编辑:程序博客网 时间:2024/06/05 14:50

首先明确UDP TCP SCTP三者都是传输层协议

(传输层:简单理解就是仅仅负责传输的)

UDP:简单,不可靠的数据包协议,提供消息边界

TCP:复杂,可靠的字节流协议。双向连接,不提供消息边界

SCTP:可靠,同时提供边界传输,提供消息边界,传输级别多宿支持等

/*

消息(保护)边界:传输协议把数据当作一条独立的消息在网上传输,接收端只能接收独立的消息.也就是说存

在保护消息边界,接收端一次只能接收发送端发出的一个数据包. 与此相反的是面向流,接收端将全部的消息连城一条信息流直接接收,再进行数据的前后顺序处理

例子:2KB 3KB 4KB 3个信息

如果用UDP接收,接收端必须要有3次独立的接收动作

如果用TCP接收,我们只需要用9KB的接收缓存就可以一次性接收完3个信息

*/

 用户数据包协议(UDP):

1.不可靠:不保证UDP数据报会到达最终目的地,不保证各个数据包的先后顺序跨网络后保持不变,也不保证每个数据报只到达一次;发生错误不会重传

2.无连接:一个UDP客户可以创建一个套接字并发送一个数据包给一个给定的服务器,然后立即用同一个套接字发送另一个数据包给另一个服务器,同样接收同理。

3.提供消息保护边界:每个数据报都有一个长度。如果一个数据报正确地到达目的地,那么该数据报的长度将随数据一道传递给接收端应用进程


传输控制协议(TCP):

1.面向连接:三次握手建立连接,然后交换数据,再四次挥手终止连接

2可靠性:向另一端发送数据,要求对端返回确认信号,否则重传。

3.用于动态估算客户和服务之间的往返时间的RTT算法

4.对于分节数据会有序号,确保接收到的数据可以按照一定的顺序排列

5.提供流量控制,有通告窗口,告知对端在任何时刻其能接收的最大字节数据。确保发送数据不超出接收数据缓冲区

6.全双工,可以既发送又接收。也可转为单双工连接


流控制传输协议(SCTP)

1.面向连接,四路握手建立连接,三次关联终止。(与tcp不同,关联终止为全关闭,非tcp的半关闭)

2.SCTP是面向消息的。它提供各个记录的按序递送服务;

3.全双工数据传输

4.能够在所连接的端点之间提供多个流,每个流各自可靠第按序递送消息;

5.提供多宿性,使得单个SCTP端点能够支持多个IP地址;

原创粉丝点击