TCP和SCTP

TCP:传输控制协议,面向连接的可靠连接协议

应用层:为操作系统或网络应用应用程序提供网络的服务的接口,提供用户界面,文件,打印,消息,数据库和应用程序服务

表示层:对上层数据或信息进行变换以保证一个主机应用层信息可以被另一台主机的应用程序理解

会话层:提供主机之间的会话连接,将不同的应用程序的数据分离,对话控制
传输层:数据分段,通过端口号来区分不同的服务,端到端连接,提供可靠或不可靠的传输,在重传之前进行纠错

网络层:路由选择,通过IP地址进行逻辑寻址,路由器使用他们来选择路径

数据链路层:1.MAC媒介访问控制层 2.LLC逻辑链路层为上层提供FCS校验

物理层:定义电器电压、接口规范、光学特性

在这里插入图片描述
源端口和目的端口:各占2个字节,分别写入源端口和目的端口;

序号:占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始;

确认号:占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。例如,B收到了A发送过来的报文,其序列号字段是501,而数据长度是200字节,这表明B正确的收到了A发送的到序号700为止的数据。因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701;

数据偏移:占4位,它指出TCP报文的数据距离TCP报文段的起始处有多远;
保留,占6位,保留今后使用,但目前应都位0;

紧急URG:当URG=1,表明紧急指针字段有效。告诉系统此报文段中有紧急数据;

确认ACK,仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1;

推送PSH:当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应,这时候就将PSH=1;
复位RST,当RST=1,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接;

同步SYN:在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1;

终止FIN:用来释放连接。当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放;

窗口:占2字节,指的是通知接收方,发送本报文你需要有多大的空间来接受;

检验和:占2字节,校验首部和数据这两部分;

紧急指针:占2字节,指出本报文段中的紧急数据的字节数;

选项:长度可变,定义一些其他的可选的参数

TCP三次握手
在这里插入图片描述

介绍TCP连接的三次握手.
第一次握手:建立连接时,客户端发送syn包( syn=j )到服务器,并进入
SYN_ SENT 状态,等待服务器确认; SYN :同步列编号( Synchronize
Sequence Numbers );,
●第二次握手:服务器收到syn包,必须确认客户的SYN ( ack=j+1) ,同时自
己也发送一个SYN包( syn=k) ,即SYN+ ACK包,此时服务器进入SYN_ RECV
状态;
●第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包
ACK(ack=k+1) , 此包发送完毕,客户端和服务器进入ESTABLISHED( TCP
连接成功)状态,完成三次握手,
补充知识:.
未连接队列
在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN
包( syn=j )开设一个条目,该条目表明服务器已收到SYN包,并向客户发出
确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于SYN RECV
状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABUISHED
状态。

TIME_ WAIT状态
TIME_ WAIT状态存在有两个原因。
<1>可靠终止TCP连接。如果最后-一个ACK报文因为网络原因被丢弃,此时
server因为没有收到ACK而超时重传FIN报文处于TIME_ _WAIT状态的client
可以继续对FIN报文做回复,向server发送ACK报文。
<2>保证让迟来的TCP报文段有足够的时间被识别和丢弃。连接结束了,网络
中的延迟报文也应该被丢弃掉,以免影响立刻建立的新连接。.
为什么需要三次?.
TCP是可靠的传输控制协议三次握手能保证数据可靠传输又能提高传输效率。。
如果TCP的握手是两次:
<1>如果client发给server的SYN报文因为网络原因, 延迟发送。由于client
没有收到server对SYN的确认报文,会重发SYN报文,服务器会回复ACK ,
连接建立。数据发送完毕,这条连接被正常关闭。这时,延迟的SYN报文发到
了server server 误以为这是client重新发送的同步报文,又回复了一个ACK,
和client建立了连接。
<2>如果server给client发送的ACK报文因为网络原因,报文被丢弃,此时
server
认为已经建立好连接,但是client没有收到确认报文,认为没有建立好
连接。client 会重发SYN报文,此时server已经处于就绪状态,认为已经建立
好连接。

SCTP:流控制传输协议是一种在网络连接两端之间同时传输多个数据流的协议。
作为一个传输层协议,SCTP兼有TCP及UDP两者的特点。SCTP可以称为是TCP的改进协议,但他们之间仍然存在着较大的差别。首先SCTP和TCP之间的最大区别是SCTP的连接可以是多宿主连接的,TCP则一般是单地址连接的。在进行SCTP建立连接时,双方均可声明若干IP地址(IPv4,Ipv6或主机名)通知对方本端所有的地址。若当前连接失效,则协议可切换到另一个地址,而不需要重新建立连接。
其次SCTP是基于消息流,而TCP则是基于字节流。所谓基于消息流,是指发送数据和应答数据的最小单位是消息包(chunk)。一个SCTP连接(Association)同时可以支持多个流(stream),每个流包含一系列用户所需的消息数据(chunk)。而TCP则只能支持一个流。在网络安全方面,SCTP增加了防止恶意攻击的措施。不同于TCP连接采用的三次握手机制,SCTP连接采用四次握手机制,有效的防止了类似于SYN Flooding的防范拒绝服务攻击。SCTP主要的贡献是对多重联外线路的支持,一个端点可以由多于一个IP地址组成,使得传输可在主机间或网卡间做到透明的网络容错备援。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值