计算机网络的第一阶段操作系统,笔试题一,计算机网络,操作系统

计算机网络:三次握手,四次挥手,握手阶段什么时候可以传送数据,挥手威慑呢客户端要等待一会。

第一次握手:建立连接时,客户端A发送SYN包到服务器B,进入SYN_SEND状态,等待服务器的确认。

第二次握手:服务器收到SYN包,必须确认客户端的SYN,(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=k+1),此包发送完毕,服务器和客户端进入established状态,完成三次握手。

完成三次握手,服务器和客户端开始传送数据。

由于TCP链接是全双工的,因此每个方向上都必须进行单独关闭,当一方完成他的数据发送任务后就能够发送一个FIN来终止这个方向的链接。

收到一个FIN只意味着这一个方向没有数据流动了,一个TCP链接收到一个FIN后仍能够发送数据,首先进行关闭的一方将进行主动关闭,而另一方执行被动关闭。

第一次挥手:客户端发送一个FIN来关闭客户端到服务器的数据传送。

第二次挥手:服务器B收到一个FIN,它发回一个ACK,确认序号会收到的序号加1,

第三次挥手:服务器B关闭与客户端的链接,发送一个FIN给客户端A

第四次挥手:客户端发回一个ACK确认,确认序号为收到的序号加1.

为什么建立链接是3次握手,关闭链接是4次挥手,

因为服务器端的listen状态下的socket收到SYN报文的链接建立请求后,他可以把ACK和SYN放在同一个报文李传送,

(ACK起应答作用,SYN起同步作用)。但是在关闭链接时,当收到对方的FIN关闭报文时,仅仅表示对方没有数据要发送给你了,但未必你所有的数据都发送给对方了,所以未必会马上关闭socket,即还需发送一个数据给对方,然后再发送FIN给对方表示同意关闭链接,所以这里的ACK报文和FIN报文多数情况下是分开的。

为什么要3次握手而不是2次握手:

为了防止已经失效的链接请求报文又传送到服务器B,因为产生错误。

A发了一个链接请求,延迟了,然后再重传,重传后建立链接。然后第一个链接请求有到了。但是此时第一个请求为已经失效的报文段。B收到后,想A发出确认报文,同意建立链接,假定不采用3次握手,B发出确认,新的连接就建立了。A对于自己没有发出的请求,不予理睬B,也不会向B发送确认数据。B等待A的数据,造成很多资源的浪费。

采用3次握手后,A不会向B发送确认,B收不到确认,就知道A没有要求建立连接。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值