核心内容摘要
Dify混合RAG召回率优化终极 checklist(含LLM重排序温度值、HyDE提示词熵值、BM25字段权重黄金区间)
TCP/IP建立连接需要进行“三次握手”断开连接需要进行“四次挥手”。
面试术语。
“三次握手”其过程是客户端第1步发送“SYN同步数据包”第2步接收“SYNACK数据包”第3步发送“ACK数据包”。
“四次挥手”其过程是客户端发送“FINACK终止数据包”客户端接收“ACK应答数据包”客户端接收“FINACK终止数据包”客户端发送“ACK应答数据包”。
设计TCPIP程序时要注意的事项
TCP交换数据是根据“源端口和目的端口”进行交付。
SYN是Synchronize Sequence Numbers的缩写就是要实现“序列号同步”。
建立连接需要进行“三次握手”其过程是第1步发送“SYN同步数据包”第2步接收“SYNACK数据包”第3步发送“ACK数据包”。
ACK是Acknowledgment的缩写就是“确认”表示应答。
FIN是Finish的缩写就是“通知对方本端要关闭了”。
断开连接需要进行“四次挥手”其过程是客户端发送“FINACK终止数据包”客户端接收“ACK应答数据包”客户端接收“FINACK终止数据包”客户端发送“ACK应答数据包”。
TCP协议规定,主动关闭连接的一方需要要处于TIME_ WAIT状态,等待两个MSL(maximum segment lifetime)的时间后才能回到CLOSED状态。
MSL在RFC1122中规定为2分钟。
但是由于各个操作系统的实现不同, 在Centos7/Ubuntu上默认配置的值是60秒。
在Linux中可以通过输入“cat /proc/sys/net/ipv4/tcp_fin_timeout”查看msl的值。
关闭服务器后如果客户端立即使用“相同的端口”建立连接就会失败。
是因为服务器出于TIME_WAIT状态端口还被占用着呢。
其次客户端连接到服务器后如果客户端再使用“相同的端口”建立连接也会失败也是因为端口还占用。
在设计程序时要注意我们可以换个端口连接到服务器。
这就是服务器不主动连接客户端的原因因为服务器的端口是固定。
或者服务器等待客户端超时断开连接也是可以的但不建议这么设计程序。
PSH是Push的缩写推送的意思提示“接收方应用程序”立刻从“接收方的TCP缓冲区”把数据读走。
“接收方的TCP缓冲区”满的处理办法
、当“接收方的TCP缓冲区”由满到腾出空间后接收方会主动向发送方发出一个报文并把“它的缓存窗口大小”发送给我。
、当“接收方的TCP缓冲区”满了的时候“发送方”就要定时的向“接收方”发送“不携带数据的报文”询问直到收到“它的缓存窗口大小”。
在设计程序时要注意这么处理“拥塞”。
RST是Reset的缩写以时是“重置”就是“发送方”要求“重新建立连接”然后再发送“SYN同步数据包”重新进行“三次握手”。
发送“RST数据包”后发送方会立即关闭连接而不需要等待对方的确认。
接收方收到RST包后也会立即关闭连接。
“三次握手”的过程是第1步发送“SYN同步数据包”第2步接收“SYNACK数据包”第3步发送“ACK数据包”。
如果接收方没有收到第3步发送“ACK数据包”就需要发送RST数据包要求“重新建立连接”。
这在设计程序时要注意。
URG是Urgent的缩写意思是“紧急”。
如果紧急指针有效就是“收到的数据”要被优先处理相当于插队。
当发送方发现“前面发送的数据”错误了要取消上传这时就要发送“紧急数据”进行暂停。