(一)面试题:TCP三次握手

1.TCP(Transmission Control Protocol):传输控制协议。

2.TCP有六种标志位:

  • SYN:建立连接, 值为1时,表示希望建立连接,并设定序列号的初始值。
  • ACK:确认应答,除了第一次握手时,其余时刻ACK必须为1。
  • FIN:结束符, 值为1时表示今后不会再有数据发送,希望断开连接。
  • RST:重置符,值为1时,表示TCP连接中途出现异常时必须强制断开连接。
  • PSH 、UGR    (用的较少)

3.三次握手:

 (1)最开始客户端和服务器的状态都是closed的,然后服务器通过socket来绑定和监听ip和端口。这时server是被动等待连接的,也就是代码中的server_socket.accept()。

(2)第一次握手:client向server发送请求,等待确定。这时client的状态变成SYN_SENT

(3)第二次握手:server响应client,并要求client确认。此时服务器的状态变为SYN_RCVD

(4)第三次握手:client响应server,服务收到后检查ACK,通过检验后则成功创建连接, server和client进入ESTABLISHED状态。

4.为什么是三次握手???

答:三次握手主要是为了确保server和client能够进行正常的连接与数据传输。

第一次握手的时候client什么也不知道。server知道自己接收正常,知道client发送正常。

第二次握手的时候,client知道自己发送和接受数据正常,也知道server发送和接受正常。但server只知道自己接收正常以及client发送正常。

第三次握手的时候,server和client就都知道双方接收和发送正常,所以就成功建立了连接。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值