TCP和SCTP协议

一、TCP协议

       TCP协议,面向连接的可靠传输协议。面向连接指的是在使用TCP协议传输数据之前,都会进行三次握手。可靠值得是TCP协议拥有可靠的传输机制,包括确认、重传、排序、流控。

                                   

1、源端口号和目标端口号:作为应用层协议,报头中使用源端口号和目标端口号来表示计算机中的不同进程。

2、序列号:在TCP传输流中,每一个字节都有一个序号。假设当前报文中序列号为100,而且这个报文中携带了200字节的数据,则下一个报文中序列号为400.

3、确认序列号:代表的是期待收到的下一个数据的序列号,如果下一个报文中的确认序列号为401,则说明上一个报文中的200字节的数据对方已经承购收到。

4、首部长度:即TCP报头所占的字节数,因为TCP报头中有可选项的存在,所以它的包头长度是可变的。

5、保留:未定义功能,这里的数据全置0。

6、

URG紧急指针,对应的是报头中的16位紧急,当此位被置为1时,此数据不需要排队。
ACK确认序号标识。当被置为1时,则表示该数据包为确认包。
PSHpush标识,当被置为1时,则可指示接收方在收到该报文段后尽快交给应用程序,而不是在缓冲区排队。
RST重置连接标志,当被置为1时,则此报文可以用于拒绝TCP连接请求。
SYN

同步序号,此位被置为1时而ACK置为0时,此报文为TCP请求报文。

                  此位被置为0时而ACK置为1时,此报文为TCP请求确认报文。    

FINfinish标志,当此位被置为1时,表示发送方数据发送结束并关闭了数据流。

 

7、窗口大小:即滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小时一个16bit字段,因而窗口大小最大为65535。

8、校验和:指的是奇偶校验,这个字段中的数据是经过对整个TCP报文段计算所得,用于在接收端验证报文是否出错。

 

三次握手的建立

 

                                                                

1、客户端向服务器发送一个SYN数据包,并进入SYN send 状态。(SYN数据包中的SEQ值为随机生成的值x)

2、服务器收到SYN报文后给客户端回应一个SYN报文,并进入SYN recv状态。(ACK=x+1;SEQ为随机生成的值y)

3、客户端收到服务端的SYN报文后,回应一个ACK报文,进入estalished状态,三次握手完成。(ACK = y+1)

 

四次握手的终止

                                                   

1、首先在客户端,应用程序会调用close,客户端执行“主动关闭”(active close),并发送一个FIN报文给对端,用来告诉对端本地关闭了数据流(代表着不向对端发送数据,但仍可以接收数据)。

2、服务端收到后执行 “被动关闭”(passive close),应用程序也会调用close。随后服务端向客户端发送ACK报文对对端的FIN包作以确认,再发送一个FIN包。(不将ACK和FIN同时发送是因为服务端可能还有数据向客户端传输)

3、客户端回复一个ACK确认收到对端的FIN,四次握手终止完成。

 

二、SCTP协议

SCTP(Stream Control Transmission Protocol),流控制传输协议。这个协议类似于TCP,都是可靠的传输协议。

SCTP的关键特性:

1、多宿主

在两台主机之间建立SCTP连接时,可以声明多个IP地址,也就是说两台主机可以有多个网络接口进行协作,如果在传输数据过程中某个接口断开,可以使用这台主机上声明的另一个接口,这就不用和TCP协议一样重新连接。

2、多流

TCP协议中,如果在报文的传输过程中某个报文的出错导致数据的重传,这就会导致后面的报文丢失,影响到后面的报文传输,这种现象叫做 head-of-line blocking(对头阻塞)。而SCTP协议支持多流机制,每个流都给定了一个流编号,而且一个联合中的每个流都是独立的,这样其中一个流出现对头堵塞,并不会影响到其他流。

                                           

3、初始化保护

SCTP需要通过四次握手来建立连接,并引入了cookie来防止Dos攻击,在 SCTP 中,客户端首先会向服务器发送INIT报文发起连接,服务端收到后回应INIT-ACK报文加以确认,其中包含了cookie(标识这个连接的唯一上下文),然后客户端回应一个COOKIE-ECHO报文,服务端收到后向客户端发送COOKIE-ACK 报文加以确认,四次握手完成。

4、消息分帧

5、可配置无序发送

在TCP协议中,数据是按照次序发送的;这种特性在面向消息的协议中可能非常有用,因为其中的消息都是独立的,次序并不重要。

6、平滑处理

TCP协议在断开前要进行四次握手,再第二个FIN报文没有发出去之前,对端设备还是可以接收数据的,但是这个状态有些多余。所以在SCTP协议中,交换3次报文即可断开连接

                                     

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值