文章目录
概述
网络知识体系是开发人员都必须具备的,本章主要讲解TCP/UDP协议,Socket,IP多播方式。理解非阻塞socket工作方式和怎样设计一个事件驱动系统。
Q1 为什么总问TCP握手过程
TCP为了保证可靠性,第一步要做的就是保证建立的链接是有效可用的,并且确认双方收到消息的序列号起始,通过序列号处理消息丢失后重发,而我们在设计其他系统的时候,也是可以借鉴这种方式。
第一步:
客户端A发送SYN类型消息给服务端B,消息携带客户端的序列号
第二步:
B响应请求后回SYN-ACK消息表示接收到链接请求,SYN-ACK包分为SYN(携带服务端的序列号),和ACK(确认收到的客户端的序列号)
第三步:
A响应B发过来的SYN-ACK包,并发送ACK(确认收到的服务端的序列号)
通过三次握手,最核心的部分是收发双方都确认通信对端当前的序列号起始位置,当有序列号数据包未确认时,可以重发来确保通信的可靠性。
Q2 当客户端没有通知服务端关闭链接时异常退出,服务端如何处理链接状态?
TCP链接有keepalive标志,当开启keepalive时,tcp会建立一个定时器,当定时时间到时,服务端会发送一个keepalive的探测包,当在配置的时间段内客户端没有回报时,该链接会被认为无效而关闭相关资源。