TCP连接的建立与终止的知识点巩固-网络协议

    网络协议 网络协议 9个月前 (09-11) 91次浏览 已收录 0个评论 扫描二维码

    TCP是一个面向连接的协议。无论哪一方想另一方发送数据之前,都必须现在双方之间建立一条连接。这种两端间连接的建立与无连接协议如UDP不同。一端使用UDP想另一端发送数据报时,无需任何预先的握手。

    连接建立与终止的时间系列

    TCP连接的建立与终止的知识点巩固-网络协议

    发送第一个SYN的一端将执行主动打开(active open)。接收这个SYN并发回下个一SYN的另一端执行被动打开(passive open)

    建立一个连接需要三次握手,而终止一个连接要经过四次握手。这由TCP的半关闭(half-close)造成的。既然一个TCP连接时全双工,因此每个方向必须单独的进行关闭。这原则就是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向连接。当一端收到一个FIN,它必须通知应用层另一端已经终止了那个方向的数据传送。发送FIN通常是应用层进行关闭的结果。

    收到一个FIN只意味着在这一方向上没有数据流动,一个TCP连接在收到一个FIN后任能发送数据。而这对利用半关闭的应用来说是可能的,尽管在实际应用中只有很少的TCP应用程序这样做。

    首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。通常一方完成主动关闭而另一方完成被动关闭。

    发送FIN将导致应用程序关闭它们的连接,这些FIN的ACK是由TCP软件自动产生的。

    当一端为建立连接发送它的SYN时,它为连接选择一个初始序号。ISN随时间而变化,因此每个连接都将具有不同的ISN。RFC 793 【Postel 1981c】指出ISN可看作时一个32比特的计数器,每4ms加1.这样选择序号的目的在于防止网络中被延迟的分组在以后又被传送,而导致某个连接的一方对它作错误的解释。

    初始化序列号(ISN),在开机的时候,它就有一个函数,每个操作系统不一样,来不断的增加初始序列号的值。因为它的最大值为2的32次方,所以当达到最大值后,会又从0开始计数。

    当在T1时间客户端要向服务器建立TCP,发送三次握手,就需要发一个SYN包。这时客户端就会截取T1时间的ISN作为SYN包的序列号,当服务器收到SYN包,在T2时间要回送SYN,ACK的时候,它就会截取T2时间的ISN作为SYN的序列号。ACK序列号为T1时间的ISN+1.

    ASA的一个功能,随机初始化序列号扰乱。为什么需要扰乱初始化序列号,

    1.一台PC它的ISN有自己的增长规律,如果它在ASA里面,有些攻击者他会不断的去连接PC,PC这时候就会不断的回复SYN,ACK。攻击者就能得到不同节点时间段的ISN,然后用这些不同时间段的ISN来计算出PC的ISN增长规律,通过判断ISN增长规律,攻击者就有可能判断出你的操作系统。

    2.一台PC和某个主机已经建立了TCP连接,攻击者想做一个会话劫持,它需要伪装PC的IP地址、端口号、协议号。这些伪装了还是不行,还得知道你的序列号在什么范围。所以攻击者这时候也会通过多次探测来猜测ISN的增长规律,当得到ISN的增长规律会就会把PC干掉,攻击者自己连接到相应的主机。

    所以ASA就要防止这些攻击者通过多次试探来获取PC的ISN增长规律,因为一旦PC的ISN增长规律被获取后,攻击者就可以对我的操作系统进行判断,而且还有可能造成更严重的会话劫持。所以ASA会对初始化序列号进行扰乱。

    当PC在T1时刻发送SYN的时候,经过ASA,ASA会把T1时刻的ISN随机加一个数发走,在T2时刻发送SYN的时候,经过ASA,ASA又会把T2时刻的ISN随机加一个会减去一个数发走。由于ASA总是会在ISN的数上随机加上一个或者减去一个数,这样的话,攻击者在看你的ISN的时候就会觉得没有规律可寻。

    喜欢 (0)
    [1353713598@qq.com]
    分享 (0)
    发表我的评论
    取消评论
    表情 贴图 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址