TCP三次握手、四次挥手

包序管理:

  • TCP连接双方总共维护两套序号,客户端维护一套,服务端维护一套
  • 客户端在发送给数据的时候,消耗的是客户端维护的序号,在回复ACK的时候,是确认服务端的序号
  • 服务端你在发送数据的时候,消耗的是服务端维护的序号,在回复ACK的时候,是确认客户端的序号
  • 纯ACK数据包是不消耗序号的

三次握手:

四次挥手:

          FIN:断开连接报文

          MSL:报文最大生存时间

          2MSL:丢失的ACK的MSL报文 + 重传的FIN报文

CLOSE_ WAIT:

  • 被动断开连接方产生的状态
  • 一旦产生这种状态,是由于被动断开连接方没有调用close关闭掉套接字描述符(不是侦听套接字,而是为客户端产生的新的套接字描述符)
  • 是由于当前程序的执行流卡死在某一个阻塞流程当中,也就是意味着不能够调用到close函数

         阻塞: accept
                  recv


TIME_ WAIT:

  • TIME_ WAIT状态是主动断开连接方拥有的
  • 如果当前是服务端处于TIME_ WAIT状态
  1. 服务端程序是结束掉了
  2. 当快速重新启动的时候,会发现报错:  bind: Address already in use
  • 原因:
  1. 虽然服务端程序已经结束了, 但是在内核当中端口并没有被络协议栈释放掉
  2. 一个端口只能被一个进程所绑定

端口重用:

 

  • listenfd :侦听套接字
  • SOL_ SLCKET :套接字选项
  • SO_ REUSEADDR :重用端口
  • 只有当服务端状态是TIME_ WAIT的时候才可以重用
  • opt --> 1
  • opt的大小
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值