Java面试题----------一天两道之第十一天

一、说说HTTP中TCP的三次握手

SYN-----同步标记位;ACK-----确认标记位;FIN-----终止标记位
seq-----序列号;ack-----确认号,只有当ACK为1时有效

  • 第一次握手:客户端发送SYN=1和随机产生的序列号seq=x进行请求连接,然后客户端进入SYN_SEND状态
  • 第二次握手:服务端发送SYN=1,ACK=1,ack=x+1和随机产生的序列号seq=y回应,然后服务端进入SYN_RCVD状态
  • 第三次握手:客户端发送ACK=1,ack=y+1和seq=x+1,然后客户端进入ESTABLISHED状态;当服务端收到包后也进入ESTABLISHED状态
  • TCP握手结束,进行数据传输

 

二、为什么是三次握手而不是二次或四次握手

答: 第二次握手时服务端响应客户端的请求并做出同步连接,如果只有二次握手,这时就建立好了连接;然而当客户端第一次发送请求时由于网络或者其他原因导致包停留而没有发送服务端,客户端由于没接到响应包会再次发包请求,第二次这个正常并传输数据,当第二次连接结束后第一次发送的包发给服务端了,然后服务端响应再次建立连接了,但客户端已经没有数据要传输了从而导致浪费资源;所以两次握手会让滞留的失效的连接再次连接从而导致资源的浪费,还有三次握手是让双方都互知可以通信了,三次握手客户端已经知道服务端知道自己要请求连接,而服务端也知道了客户端知道自己同意并进行同步连接了,那么就可以进行正常传输了,如果还进行第四次握手,就比较多余了,也由于这次多余的握手浪费了资源

 

谢谢阅读,如有不对之处请指出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值