计网复习Day01

HTTP 1.0 和 2.0 有什么区别?

HTTP 2.0 和 3.0 有什么区别?

常见的 HTTP 状态码有哪些?

HTTP 请求包含哪些内容,请求头和请求体有哪些类型?

请求和响应报文

  • 请求行 (Request Line): 包含请求方法 (GET、POST)、请求的资源路径(/test.html) 已经 HTTP 的版本 (HTTP/1.1)
  • 请求头 (Request Headers): 包含各种键值对,传递客户端环境、请求内容和认证信息
  • 空行 (Blank Line): 用于分隔请求头和请求体
  • 请求体 (Request Body): 仅在 POST 、PUT 等方法中存在,包含需要发送到服务器的数据
  • 状态行(Status Line): 包含 HTTP 的版本(如 HTTP/1.1)、状态码(如 200)和状态描述(如 OK)
  • 响应头(Response Headers): 包含服务器返回的各种键值对,用于描述响应的元信息。
  • 常见的响应头:
    • Date:服务器时间戳,指示响应生成的时间。
    • Server:服务器的应用程序信息(如 Apache/1.3.29)
    • Last-Modified:资源的最后修改时间。
    • ETag:资源的唯一标识,用于缓存验证。
    • Content-Type:响应内容的 MIME 类型(如 text/html)
    • Content-Length:响应内容的字节长度
    • Connection:指示连接是否保持打开(如 close 或 keep-alive)
    • Accept-Ranges:指示服务器支持的部分内容请求(如 bytes)
  • 空行 (Blank Line): 用于分隔请求头和请求体
  • 响应体 (Response Body): 包含服务器返回的实际内容(如 HTML 文档、图片、JSON 数据等)

HTTP 方法

方法 作用 效果
GET 获取资源
HEAD 获取报文首部 GET 方法一样,但是不返回报文实体主体部分。主要用于确认 URL 的有效性以及资源更新的日期时间等。
POST 传输实体主体 POST 主要用来传输数据,而 GET 主要用来获取资源
PUT 上传文件 由于自身不带验证机制,任何人都可以上传文件
PATCH 对资源进行部分修改 PUT 也可以用于修改资源,但是只能完全替代原始资源,PATCH 允许部分修改。
DELETE 删除文件 与 PUT 功能相反,并且同样不带验证机制。
OPTIONS 查询支持的方法 查询指定的 URL 能够支持的方法。 会返回 Allow: GET, POST, HEAD, OPTIONS
CONNECT 要求在于代理服务器通信时建立隧道 使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。 示例 CONNECT www.example.com:443 HTTP/1.1
TRACE 追踪路径 服务器会将通信路径返回给客户端。

HTTP 和 HTTPS 有什么区别?

HTTP 中 GET 和 POST 的区别是什么?

WebSocket 与 HTTP 有什么区别?

服务端是如何解析 HTTP 请求的数据?(考察 HTTP 请求格式的了解程度)

到底什么是 TCP 连接?

一台服务器,最多能建立多少 TCP 连接?

TCP 和 UDP 有什么区别?

TCP 的粘包和拆包能说说吗?

粘包与拆包是什么?

  • 正常情况下,接收端正常收到两个数据包,即没有发生拆包和粘包的现象。
  • TCP 接收数据时有滑动窗口控制接收数据大小,可理解为缓冲区大小,缓冲区满了就发送数据,数据包大小不固定。
  • 当一次请求发送的数据量小,没达到缓冲区大小,TCP 会合并多个请求发送,形成粘包问题。
  • 当一次请求发送的数据量大,超过缓冲区大小,TCP 会拆分数据为多次发送,即拆包,把一个大包拆成多个小包发送。

为什么会发生粘包与拆包

  • TCP 粘包与拆包

  • TCP 是面向连接的流式传输协议,数据以无明确起止边界的字节流形式传输,需手动划分边界。

  • 粘包情况:当发送方每次写入数据小于接收方套接字缓冲区大小时发生。

  • 要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包。

  • 接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包。

  • 拆包情况:当发送方每次写入数据大于接收方套接字缓冲区大小时发生。

  • 要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包。

  • 待发送数据大于MSS(最大报文长度),TCP在传输前将进行拆包。

  • UDP 无粘包问题:UDP 有保护消息边界,每个 UDP 包带有消息头(含 UDP 长度、源端口、目的端口、校验和)。

  • 问题发生层面:粘包拆包问题在数据链路层、网络层、传输层都可能出现,但日常网络应用开发多在传输层,因 UDP 特性,该问题仅在 TCP 协议中发生。

说说 TCP 的三次握手?

TCP 初始序列号 ISN 怎么取值的?

TCP 三次握手时,发送 SYN 之后就宕机了会怎么样?

什么是 SYN Flood 攻击?

TCP 协议是如何保证可靠传输的?

说说 TCP 的四次挥手?

为什么 TCP 挥手需要有 TIME_WAIT 状态?

除了四次挥手,还有什么方法断开连接?

TCP 超时重传机制是为了解决什么问题?

TCP 中何时会出现 RST(reset)报文?

TCP 有超时重传为什么还需要快速重传机制?

TCP 的 SACK 的引入是为了解决什么问题?

TCP 滑动窗口的作用是什么?

说说 TCP 拥塞控制的步骤?

Cookie、Session、Token 之间有什么区别?

JWT Token 能说说吗?

相关推荐
流浪00115 小时前
Linux系统篇(四):一文吃透 Linux 虚拟地址空间:从页表映射到内核结构体全链路拆解
linux·运维·服务器
Jacob程序员15 小时前
WebSSH技术实现全解析
linux·运维·服务器·websocket
暗冰ཏོ15 小时前
运维岗位完整学习指南:从 Linux 基础到 DevOps / SRE 实战
linux·运维·服务器·ubuntu·运维开发·devops
龙泉寺天下行走15 小时前
bash (())奇怪的返回码
linux·运维·服务器
java_cj15 小时前
Elasticsearch索引管理完全指南:从基础API到ILM生命周期管理
大数据·后端·elasticsearch·性能优化
geovindu15 小时前
go: Broadcast Pattern
开发语言·后端·设计模式·golang·广播模式
被考核重击15 小时前
面试复盘总结
面试
Alson_Code15 小时前
Spring AI-1.1.0
java·人工智能·后端·spring·ai编程
Dream_ksw15 小时前
借助AI再次理解三次握手和四次挥手
服务器·网络·tcp/ip
壹号用户16 小时前
初识linux
linux·运维·服务器