TCP协议特点和3次握手

TCP是面向连接的协议,传输之前两端点之间要建立连接,传输结束则关闭这一连接。TCP连接有如下特点:

1.TCP连接是两端点之间点对点的连接,不支持一点对点的传输和广播。

2.TCP是全双工连接,支持双向传输,允许端点在任何时间发送数据,TCP能够在两个方向上缓冲输入和输出的数据。

3.TCP连接采用客户-服务器模式,主动发起连接请求的进程为客户,被动等待建立连接的进程为服务器。

4.TCP连接的端点用IP地址和端口号二元组来标识,而一个连接则由本地和远程的一对端点,即一个四元组(本地IP、本地端口号、远程IP、远程端口号)来标识,它是唯一的。

TCP使用了三次3握手的方式建立连接,3此握手的过程如图所示客户机主机A的端口1和服务器主机B端口2建立连接,共交换3次报文。

    

①主机A发起握手,目的端点为主机端口2

生成一个随机数作为它的初始发送序号x。

发送一个同步报文段,SYN=1,发送序号seq=x,ACK=0

②主机B监听到端口2上有连接请求,主机B响应,并继续同步过程。

生成一个随机数作为它的初始发送序号seq=y。

发送同步报文段并对主机A端口1的连接请求进行确认,SYN=1,发送序号seq=y,ACK=1.确认序号ackseq=x+1。

③主机A确认B的同步报文段,建立连接过程结束。

发出对端口2的确认,ACK=1,确认序号ackseq=y+1。

这样双方就建立了连接,客户机和女服务器主机就可以相互发送含有数据的报文段了。

3次握手时,前两个报文段不携带数据,而在第3次握手时主机A 把数据放在握手的保文段中连同对主机B的确认信息(ACK=1,ackseq=y+1)一起发送出去。

为什么TCP的连接需要3次握手,而不是两次呢?下面我们假设是两次握手看看会发生什么:

当主机A发出连接请求报文,但是它在某些中间网络节点延迟时间过长,当主机A的重传定时时限到,于是又重发一次连接请求,这次B收到了连接请求,发回确认,A收到确认,建立了连接,而且A只发送很短的 ①数据,这样传输就会很快完毕并释放了连接。

但是,A第一次发送的请求并没有真正的丢失,这个时候它姗姗来吹,到达主机B,而对于B来说,无法鉴别这种情况,误认为A又发送了一次 新的连接请求,于是它向A发出确认报文段,同意建立连接。但是A并没有要求建立连接,因此对于B的确认并不会理睬,可是B却以为传输连接接这样建立了,然后一直等待A发来数据,浪费了主机B的资源。由此一来,就产生了问题。

但是当采用3次握手时,就可以防止上述由于延迟的连接请求而引起的不正常现象发生。由下上面的3次握手的图可以看出,如发生了上述同样的情况,虽然连接已经发生了前两次握手,但是A知道这是不正常的连接,并不会继续进行正常的第3次握手,而是发送一个复位 报文段用来清除这一连接,如下图所示:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值