每日十题八股-2025年1月10日

1.HTTP长连接与WebSocket有什么区别?

2.Nginx有哪些负载均衡算法?

3.Nginx位于七层网络结构中的哪一层?

4.说一下tcp的头部

5.TCP三次握手过程说一下?

6.tcp为什么需要三次握手建立连接?

7.TCP 三次握手,客户端第三次发送的确认包丢失了发生什么?

8.服务端发送第二个报文后连接的状态进入什么状态?

9.三次握手和 accept 是什么关系? accept 做了哪些事情?

10.客户端发送的第一个 SYN 报文,服务器没有收到怎么办?

1.HTTP长连接与WebSocket有什么区别?

在网络的领域内,单工、半双工、全双工是经常会遇见的名称,下面简单的讲述一下他们的区别。

单工:简单的说就是一方只能发信息,另一方则只能收信息,通信是单向的。

半双工:比单工先进一点,就是双方都能发信息,但同一时间则只能一方发信息。

全双工:比半双工再先进一点,就是双方不仅都能发信息,而且能够同时发送。

2.Nginx有哪些负载均衡算法?

轮询,加权轮询,IP哈希,URL哈希,最短响应时间。

3.Nginx位于七层网络结构中的哪一层?

Nginx 主要操作和处理 HTTP 请求、响应等应用层数据,因此它位于 第七层(应用层) 网络结构中。

Nginx 在作为反向代理服务器或负载均衡器时,处理的是 HTTP(或其他协议,如 HTTPS、SMTP、POP3)请求,这些都属于应用层的协议。它根据请求内容进行路由和处理,决定如何将请求转发到后端服务器。

4.说一下tcp的头部?

目的端口号和源端口号各16位序列号和确认应答号各32位 。4位首部,保留6位,6个1位的控制位 ,16位窗口,16位校验和 ,16位紧急指针。

5.TCP三次握手过程说一下?

TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的。首先双方要在一个开启的状态的状态。客户端发送SYN报文。客户端在收到服务端的SYN+ACK报文后就处于established状态,服务端还要等ACK报文才能处于established。第三次握手是可以携带数据的,前两次握手是不可以携带数据的,这也是面试常问的题。



状态变化

6.tcp为什么需要三次握手建立连接?

简单来说,三次握手的首要原因是为了防止旧的重复连接初始化造成混乱。 如果仅用两次握手,可能会导致旧的连接请求被误认为是新的连接请求。通过第三次握手,双方确认双方都知道对方的初始序列号,避免了这种情况。

7.TCP 三次握手,客户端第三次发送的确认包丢失了发生什么?

如果超过最大重传次数,服务器端就直接终止这次连接。

8.服务端发送第二个报文后连接的状态进入什么状态?

SYN_RCVD。

9.三次握手和 accept 是什么关系? accept 做了哪些事情?

又是突然出现完全不知道的知识点accept是啥啊。

三次握手和 accept() 函数密切相关,accept() 是在服务器端用于接受并建立连接的系统调用。

10.客户端发送的第一个 SYN 报文,服务器没有收到怎么办?

客户端超时重传。超时时间每次翻倍,重传次数默认5次。

相关推荐
yaoxin5211233 小时前
434. Java 日期时间 API - Period 基于日期的时间段
java·开发语言·python
何极光4 小时前
IDEA集成Maven
java·maven·intellij-idea
程序员二叉4 小时前
【JUC】ThreadLocal底层原理|内存泄漏|弱引用|跨线程传递方案
java·开发语言·面试·职场和发展·juc
程序员二叉4 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
老马识途2.04 小时前
在AI的帮助下理解spring的启动过程
java·前端·spring
青山木4 小时前
Hot 100 --- 轮转数组
java·数据结构·算法
Qt程序员5 小时前
掌握 Linux 内核调度:从原理到实现(进程篇)
java·开发语言
code bean5 小时前
【LangChain】检索器完全指南:从向量检索到生产级 RAG 架构
java·开发语言·微服务
大白菜和MySQL5 小时前
java应用排查高线程
java·python
KobeSacre5 小时前
ReentrantLock源码
java