自学内容网 自学内容网

20250114面试鸭特训营第22天

更多特训营笔记详见个人主页【面试鸭特训营】专栏

250114

1. TCP/IP 四层模型是什么?

  • TCP/IP四层模型是一个基于实际网络通信的分层协议模型,主要用于描述互联网通信协议的体系结构。
  • 它将网络通信过程分为四个层次,分别为:网络接口层、互联网层(网络层)、传输层、应用层。

在这里插入图片描述

网络接口层

  • 负责在计算机和网络硬件之间传输数据。
  • 负责在物理网络上发送和接受数据帧,包括以太网、Wi-Fi 等协议。
  • 典型协议
    • Ethernet(以太网)
    • PPP(点对点协议)
    • ARP(地址解析协议)

互联网层(网络层)

  • 负责将数据包从源地址传递到目标地址。
  • 通过 IP 协议提供数据包和路由的转发。
  • 实现不同网络之间的数据传输和路由选择。
  • 典型协议
    • IP(互联网协议)
      • IPv4(IP协议第4版)
      • IPv6(IP协议第6版)
    • ICMP(互联网控制消息协议)
    • IGMP(互联网组管理协议)

传输层

  • 负责在两个主机之间提供端到端的数据传输服务(通信服务)。
  • 负责数据的分段、传输和重组,确保数据可靠性。
  • 典型协议
    • TCP(传输控制协议)
      • 面向连接,提供可靠的数据传输。
    • UDP(用户数据报协议)
      • 面向无连接,提供快速但不可靠的数据传输。

应用层

  • 通过各种协议提供网络应用程序的功能。
  • 为用户提供应用程序接口,直接与用户交互,支持网络应用程序和服务的实现。
  • 典型协议
    • HTTP/HTTPS(超文本传输协议/安全超文本传输协议)
    • FTP(文件传输协议)
    • SMTP(简单邮件传输协议)
    • DNS(域名系统)
    • SSH(安全外壳协议)

分层的优点

  • 简化设计与实现
    • 通过将网络功能分解为不同的层,每一层只负责特定的任务,且只和相邻的上下层进行交互,简化了设计和实现的复杂性。
  • 模块化
    • 每一层可以独立发展和优化,不同层次之间通过标准接口记性通信,便于各层的更新和替换。
  • 互操作性
    • 明确定义每个层次之间的接口和协议,不同厂商或组织开发的网络设备和软件可以相互兼容,使得不同的网络设备和系统能够在不同的层次上进行无缝互操作,提升了网络的兼容性。
  • 故障隔离
    • 每个层次都有自己的错误检测、纠错和恢复机制,且分层结构能够帮助网络工程师定位问题所在的层次,从而更快地进行故障排除。

应用层主要包头信息和单位

  • 包头信息主要字段
    • HTTP:Host(目标主机)、User-Agent (客户端类型)、Content-Length (内容长度)等。
    • DNS:Transaciton ID (事务 ID )、Flags (标识符)、Query / Response (查询 / 标识响应)等。
  • 数据单位
    • 数据(Data)

传输层主要包头信息和单位

  • 包头信息主要字段
    • TCP:Source Port(源端口)、Destination Port (目的端口)、Sequence Number (序列号)、Acknowledgment Number (确认号)、Flags (控制标志)等。
    • UDP:Source Port(源端口)、Destination Port (目的端口)、Length (数据包长度)、Checksum (校验和)等。
  • 数据单位
    • 报文段(Segment)

网络层主要包头信息和单位

  • 包头信息主要字段
    • IP :Source IP Address(源 IP 地址)、Destination IP Address (目的 IP 地址)、TTL (生存时间)、Protocol (上层协议类型)等。
  • 数据单位
    • 数据包(Packet)

网络接口层主要包头信息和单位

  • 包头信息主要字段
    • 以太网 :Source MAC Address(源 MAC 地址)、Destination MAC Address (目的 MAC 地址)、Type (上层协议类型)等。
  • 数据单位
    • 帧(Frame)

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

Cookie

  • 存储位置:存储在客户端(浏览器)。
  • 数据格式:键值对,最大大小约为4KB。
  • 生命周期
    • 会话Cookie:浏览器关闭后失效。
    • 持久Cookie:设置ExpiresMax-Age后可长期存储。
  • 安全性
    • 可设置HttpOnly标记,防止JavaScript访问。
    • 可设置Secure标记,仅通过HTTPS传输。
  • 作用域:可设置DomainPath限定适用范围。
  • 主要用途:
    • 存储用户偏好设置(如主题、语言)。
    • 保持用户登录状态、跟踪用户行为。
    • 保存会话标识符(如Session ID)以维持用户会话。

Session

  • 存储位置:数据存储在服务器端,客户端只存储一个Session ID(通常通过Cookie传递)。
  • 数据管理:会话数据存储在服务器内存或数据库中。
  • 生命周期:通常与用户会话绑定,用户关闭浏览器或Session超时后失效。
  • 安全性:比Cookie更安全,敏感数据不会暴露给客户端。
  • 依赖Cookie:通过Cookie传递Session ID,无Cookie时可通过URL参数传递。
  • 典型用途
    • 服务器端会话状态管理。
    • 存储用户的临时状态信息(如购物车、登录状态等)。

Token

  • 存储位置:通常存储在客户端(浏览器的本地存储或会话存储,也可以通过Cookie传递)。
  • 数据格式:常用 JWT(JSON Web Token) ,由Header、Payload和Signature组成。
  • 自包含性:Token自身包含认证信息,无需依赖服务器存储会话状态(即无状态)。
  • 安全性
    • 加密性:可签名或加密,防止篡改。
    • 不应直接暴露敏感信息。
  • 生命周期
    • Access Token(短生命周期)。
    • Refresh Token(用于刷新Access Token,有较长生命周期)。
  • 典型用途
    • 无状态认证和授权。
    • 分布式系统中的用户认证和授权。

表格对比

特性CookieSessionToken
存储位置客户端
(浏览器)
服务器端
(Session ID在客户端)
客户端
(可选:Cookie或LocalStorage)
存储数据小量数据(4KB)任意复杂数据编码后的认证信息
状态管理无状态有状态无状态
安全性易被劫持
(需配合安全措施)
更安全相对安全
(需保护Token不泄露)
适用场景用于保存用户偏好设置、Session ID、记住登录状态等小型数据
小型数据存储、标识用户
客户端状态的简单存储和跟踪
用于需要存储用户状态的场景,比如购物车、短期登录会话
短期用户会话
服务器端的复杂状态管理
特别是需要存储大量会话数据时
分布式认证、API接口调用无状态的认证和授权
特别是在分布式和跨域环境下

3. 从网络角度来看,用户从输入网址到网页显示,期间发生了什么?

  1. 浏览器解析 URL
    • 浏览器会解析 URL ,根据请求信息生成对应的 HTTP 请求报文。
  2. DNS 解析
    • 请求需要知晓浏览器对应的 IP 地址才能通信。
    • 浏览器会先检查本地缓存、操作系统缓存、路由器缓存
      • 如果命中 IP 缓存,则直接使用。
      • 如果未命中 IP 缓存,浏览器向配置的 DNS 服务器发送查询请求, DNS 服务器递归查询,最终返回 IP 地址(如 192.0.2.1)。
  3. TCP 或 UDP
    • 浏览器会调用 Socket 库委托协议栈工作,根据指定的情况选择 TCP 或 UDP 。
    • 如果使用 TCP ,需要通过三次握手与服务端建立连接,然后才能发送数据。
    • 此时得到了封装了 HTTP 数据的 TCP 数据包。
  4. IP
    • 在 TCP 数据包的基础上,再封装源地址 IP 和目标地址 IP 等信息,得到网络包。
    • 有了 IP 就能在多个网络节点中确定数据包的传输路径,最终能找到目标服务器。
  5. MAC
    • 得到网络包之后,需要在 IP 头部的前面加上 MAC 头部,封装发送方 MAC 地址。
    • MAC 用来确保子网内设备两点之间的通信寻址(IP 是多个网络节点的传输寻址)。
  6. 网卡
    • 这时,网络包还是存储在内存中的二进制数据。
    • 网卡把二进制数据转换为电信号,通过网线进行传输。
  7. 交换机
    • 通过网线会连接到交换机,交换机是二层网络设备。
    • 交换机工作在 MAC 层,它会根据数据包中的 MAC 头找到另一个设备连接在交换机的哪个端口,然后传输。
    • 如果找不到对应的端口,则会向交换机上的除源端口外的所有端口广播。
  8. 路由器
    • 路由器是三层网络设备(包含 IP 层),也是用于进行转发。
    • 利用路由器,数据在不同网络节点之间转发,最后到达服务器。
  9. 层层验证
    • 服务器确认 MAC 地址匹配、 IP 地址匹配。
    • 如果是 TCP 协议,就看看序列号是否匹配,若匹配根据端口找到对应的监听进程,此时服务器上对应的应用就接收到了数据。
  10. 服务器处理
    • 服务器在收到请求后,处理响应的业务逻辑,生成 HTTP 响应。
    • 这期间可能涉及到读取数据库、访问文件系统等。
    • 最终会生成响应给客户端(一层层的封装 TCP 、 IP 、 MAC 等头部数据,得到最终传输的数据包),从网卡到交换机到路由器…
  11. 浏览器接收响应并渲染页面
    • 经过多个路由器的转发后,浏览器最终会接收到服务器响应的数据,进行页面渲染。

原文地址:https://blog.csdn.net/Again_acme/article/details/145143268

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!