TCP和SCTP的区别

时间:2024-04-07 22:09:45

一 、什么是SCTP:
流控制传输协议(SCTP,Stream Control Transmission Protocol)是一种在网络连接两端之间同时传输多个数据流的协议。SCTP提供的服务于UDP和TCP类似。
二、TCP和SCTP的区别:
1.TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议
SCTP是
基于消息流
的传输层通信协议,基于消息流是指发送数据和应答数据的最小单位是消息包。
2. TCP通常是单路径传输,SCTP可以多路径传输(即多宿主特性)
TCP的两端都只能用一个IP来建立连接,连接建立之后就只能用这一对IP来相互收发消息了。如果这一对IP之间的路径出了问题,那这条TCP连接就不可用了。
SCTP不一样的地方是,两端都可以绑定到多个IP上,只要有其中一对IP能通,这条SCTP连接就还可以用。
3… TCP是单流有序传输,SCTP可以多流独立有序/无序传输
一条SCTP连接里面,可以区分多条不同的流(stream),不同的流之间的数据传输互不干扰。这样做理论上的好处是,如果其中某一条流由于丢包阻塞了,那只会影响到这一条流,其他的流并不会被阻塞。
4.、SCTP的四次握手,TCP是三次握手:
这可以防止syn攻击。

当恶意客户机使用虚假的源地址来伪造一个IP报文时,TCP就会出现问题了,这会大量TCPSYN报文攻击服务器。服务器在接收SYN报文之前,要为连接分配资源,但是在大量产生SYN报文的情况下,最终会耗尽自己的资源,从而无法处理新的请求。这种情况就称为服务拒绝(DenialofService)(DoS)攻击。

SCTP可以通过一种4次握手的机制并引入cookie的概念来有效地防止这种攻击的产生。在SCTP中,客户机使用一个INIT报文发起一个连接。服务器使用一个INIT-ACK报文进行响应,其中就包括了cookie(标识这个连接的惟一上下文)。客户机然后就使用一个COOKIE-ECHO报文进行响应,其中包含了服务器所发送的cookie。现在,服务器要为这个连接分配资源,并通过向客户机发送一个COOKIE-ACK报文对其进行响应。

5.TCP是四次断开,SCTP是三次断开

TCP和SCTP的区别
与TCP不同,SCTP使用三次握手来关闭一个耦联。而且SCTP不支持TCP所支持的“半关闭”状态。典型的SCTP关闭一个耦联的过程如下:
(1). 客户端发出关闭请求,SCTP耦联进入SHUTDOWN-PENDING状态,并且不再接收应用程序的数据,只发送队列中还未发送的数据,再队列中没有待发送数据后,发送SHUTWODN并进入SHUTDOWN-SENT状态。这一方被称为主动关闭。
(2). 服务端在接收到主动关闭一方的SHUTWODN消息时,进入SHUTDOWN-RECEIVED状态,此时执行被动关闭一方不再接受上层应用的数据,只发送队列中剩余的数据。在发送队列中的数据被发送完后,执行被动关闭一方发送SHUTDOWN-ACK并进入SHUTDOWN-ACK-SENT状态。
(3). 客户端收到SHUTDOWN-ACK后就发送SHUTDOWN-COMPLETE,并进入CLOSE状态。
(4). 客户端接收到SHUTDOWN-COMPLETE后就进入close状态。