TCP如何建立/拆除连接的方法

所属分类: 网络 / 网络协议 阅读数: 480
收藏 0 赞 0 分享

 
TCP如何建立连接
图 1TCP 首部格式中SYN 标志位仅使用在建立TCP 连接的过程中,TCP 建立连接的过程被称为“三路握手“连接,即一般通信双方共需要传输三个数据包方能成功建立一个TCP 连接。我们通常将建立连接作为使用TCP 协议理所当然的前导过程,但很少去质疑这样一个建立连接过程的必要性。

实际上,使用TCP 协议必须首先建立一个连接是保证TCP 协议可靠性数据传输的基本前提(当然由于TCP 协议是一个有状态协议,必须通过某种机制进行通信双方状态上的同步,而建立连接就是这样一种机制)。    
至于为何需要三个数据包,原因是建立连接过程中信息的交换必须至少使用三个数据包,从下文的分析来看,建立连接最多需要使用四个数据包。需要再次提到的是:SYN 标志位只是用在建立连接的三个(或者四个)数据包中,一旦连接建立完成后,之后发送的所有数据包不可设置SYN 标志位。单从保证数据可靠性传输角度而言,TCP 协议需要在正式数据传输之前首先进行某些信息的交换,这个信息即是双方的初始序列号(另外的一些信息包括最大报文长度通报等)。
 
诚如前文所述,序列号的使用对于 TCP 协议而言至关重要,在正式数据传输之前,双方必须得到对方的初始字节数据的编号,这样才有可能对其所接收数据的合法性进行判断,才有其它的对数据重复,数据重叠等一系列问题的进一步判别和解决。故交换各自的初始序列号必须在正式数据传输之前完成,我们美其名曰这个过程为连接建立过程。至于双方TCP 协议各自状态的更新主要是软件设计上可靠性保证的一个辅助,并非这个所谓的建立过程所主要关注的问题。
     
初始序列号的交换从最直接的角度来说需要四个数据包:
1> 主机 A 向主机B 发送其初始序列号。
2> 主机 B 向主机A 确认其发送的初始序列号。
3> 主机 B 向主机A 发送其初始序列号。
4> 主机 A 向主机B 确认其发送的初始序列号。
 
我们将<2><3>两步合为一步,即B 向A 确认其(A 之前发送的)初始序列号的同时发送其(即B 自己的)初始序列号。所谓确认数据包即将数据包的ACK 标志位设置为1 即可。注意这三个(或四个)数据包中SYN 标志位设置为1,而且SYN 标志位也仅在这三个(或四个)数据包中被设置为1。
 
此处有一个问题:即A,B 主机在通报各自初始序列号的同时能否传输一些正常数据,原理上可以(TCP 协议规范上并没有说不可以),但是大多数实现在通报初始序列号时都不附带正常数据,而是将其作为一个单独的过程,由此正式确立建立连接一说。
     
TCP如何拆除连接
当前连接的双方都可以发起拆除连接操作,但简单的拆除连接可能会造成数据丢失。为此,TCP采用四次握手的方式拆除连接。
 
四次握手与三次握手类似:
①1发拆除请求
②2收到请求,并发确认,1收到该确认后,不再发送数据,但任然会接收数据(半连接)
③2发拆除请求
④1收到请求,并确认,到此拆除完成
更多精彩内容其他人还在看

最常见的TCP/IP中3688端口是什么?

最常见的是TCP和UDP端口,这是用来在互联网上的计算机之间的数据交换,3688/udp端口使用服务类型简单的推- S- S简单的推协议,基础概念不是很了解的朋友可以参考下本文
收藏 0 赞 0 分享

NetBEUI协议怎么安装浏览网上邻居提示需要NetBEUI协议

浏览网上邻居时提示需要NetBEUI协议,说明NetBEUI协议没有安装或安装不正确,由于NetBEUI协议不是TCP/IP必备协议所以需要手动安装,下面是具体的安装步骤,感兴趣的朋友不要错过
收藏 0 赞 0 分享

IP地址剖析以及如何设置Windows7的IPv6协议

当电脑的IP地址相同,就会发生冲突,IP地址就好像你电脑的“门牌号”,只有有了这个“门牌号”,其他用户和电脑才能找到你的电脑,接下来为大家介绍下如何设置Windows7的IPv6协议,感兴趣的朋友可以参考下
收藏 0 赞 0 分享

怎么配置局域网中的各机器的TCP/IP协议

xp系统下载SyGate安装好后,不能马上就使用,还必须对局域网内各机器的TCP/IP协议进行一些设定。下面是具体的设置过程,感兴趣的朋友可以参考下
收藏 0 赞 0 分享

VRRP虚拟路由器冗余协议介绍

VRRP(VirtualRouterRedundancyProtocol,虚拟路由冗余协议)是一种容错协议,需要的朋友可以看下
收藏 0 赞 0 分享

反掩码简介、计算方法实例、常见反掩码

这篇文章主要介绍了反掩码简介、计算方法实例、常见反掩码,需要的朋友可以参考下
收藏 0 赞 0 分享

HTTP协议Keep-Alive模式详解和HTTP头字段总结

这篇文章主要介绍了HTTP协议Keep-Alive模式详解和HTTP头字段总结,需要的朋友可以参考下
收藏 0 赞 0 分享

分享下TCP/IP、Http、Socket的区别

传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口
收藏 0 赞 0 分享

网络协议是什么?网络协议三要素是什么?

本文向大家详细介绍网络协议是什么以及网络协议三要素是什么的基础知识,不懂的朋友可以通过本文了解学习
收藏 0 赞 0 分享

如何定义网络协议?网络协议有哪些意义?

本文将向大家详细介绍如何定义网络协议以及网络协议有哪些意义的基础知识,不明白的朋友可以过来学习一下
收藏 0 赞 0 分享
查看更多