TCP、SCTP解释

三函数:connect、accept、close
调试TCP应用:netstat程序

建立一个TCP连接

1、服务器必须准备好接受外来的连接。这通常调用 socket、bind 和 listen 这3个函数来完成,称之为打开(passive open)。
2、客户端调用connect发起主动打开(active open)。这导致客户TCP发送一个SYN(同步)分节,它告诉服务器客户将在连接中发送的数据的初始序列号。通常SYN分节不携带数据,其所在IP数据报只含有一个IP首部、一个TCP首部及可能有的TCP选项。
3、服务器必须确认(ACK)客户的SYN, 同时也得发送一个SYN分节,它含有服务器将在同一连接中发送的数据的初始序列号。服务器在单个分节中发送SYN分节,它含有服务器将在同一连接中发送的数据的初始序列号。服务器在单个分节中发送SYN和对客户SYN的ACK(确认)。
4、客户必须确认服务器的SYN,这样的交换至少需要三个组,因此称为TCP的三路握手。
这里写图片描述

建立TCP连接就好比一个电话系统,socket 函数等同于有电话可用,bind 函数是在告诉别人你的电话号码,这样他们可以呼叫你。listen 函数是打开电话振铃,这样当有一个外来的呼叫到达时,你就可以听到。connect 函数要求我们知道对方的电话号码并拨打它. accept 函数发生在被呼叫的人答应电话. 由 accept 返回客户的标识(即客户端的IP地址和端口号)类似于让电话机呼叫者ID功能部件显示呼叫者的电话号码。然而两者不同之处在于 accept 只在连接建立之后返回客户的标识,而呼叫者ID功能部件却在我们选择应答或不应答电话之前显示呼叫者的电话号码,如果使用域名系统DNS, 它就提供了一种类似于电话薄的服务。getaddrinfo 类似于在电话薄中查找某个人的电话号码,getnameinfo 则类似于有一本按照电话号码而不是按照用户名排序的电话薄。

TCP连接终止
TCP建立一个连接需要3个分支,终止一个连接则虚4个分支。
(1)某个应用进程首先调用 close , 我们称该端执行主动关闭(active close)。该端的TCP于是发送到一个FIN分支,表示数据发送完毕。
(2)接收到这个FIN的对端执行被动关闭(passive close)。这个FIN由TCP确认。它的接收也作为一个文件结束符传递给接收端应用进程(放在已排队等候该应用进程接收的任何其他数据之后),因为FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。
(3)一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN.
(4)接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN.
SCTP关联的建立和终止
(1)服务器必须准备好接受外来的关联。这通常调用socket、bind、和listen这3个函数来完成,称为被动打开。
(2)客户端通过调用 connect 或者发送一个隐式打开改关联的消息进行主动打开。这使得客户SCTP发送一个INIT消息,该消息告诉服务器客户的IP地址清单、初始化序列号、用于表示本关联中所有分组的起始标记、客户请求的外出流的数目以及客户能够支持的外来刘的数目。
(3)服务器以一个INIT ACK 消息确认客户的INIT消息,其中含有服务器的IP地址清单、初始化序列号、起始标记、服务器请求的外出流的数目、服务器能够支持的外来流的数目以及一个状态cookie。状态cookie包含服务器用于确信本关联有效所需的所有状态,它是数字化签名过的,以确保其有效性。
(4)客户端以一个COOKIE ECHO消息回射服务器的状态cookie。除COOKIE ECHO外,该消息可能在同一个分组中还捆绑了用户数据。
(5)服务器以一个COOKIE ACK消息确认客户回射的cookie是正确的,本关联于是建立。该消息也可能在同一个分组中还捆绑了用户数据。
上面就是SCTP的四路握手。
这里写图片描述
SCTP终止
这里写图片描述

即SCTP 四次握手,三次挥手。TCP 三次握手,四次挥手!
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值