22 - 天 TCPIP 四层模型是什么?Cookie、Session、Token 之间有什么区别?从网络角度来看,用户从输入网址到网页显示,期间发生了什么?

发布于:2025-03-15 ⋅ 阅读:(12) ⋅ 点赞:(0)
  • TCP/IP 四层模型是什么?

    应用层

    • 功能:应用层是 TCP/IP 模型的最高层,它直接为用户提供各种网络应用服务,如网页浏览、文件传输、电子邮件等。此外,它还负责处理应用程序与网络之间的通信,包括数据的格式化、编码、加密等操作,以确保数据能够正确地在网络中传输和被接收方正确解析。
    • 常见协议
      • HTTP/HTTPS:用于网页浏览,分别基于 TCP 和加密的 TCP 协议。
      • FTP:用于文件传输。
      • SMTP/POP3/IMAP:分别用于邮件的发送、接收和管理。
      • DNS:用于域名解析,将域名转换为 IP 地址。
      • DHCP:用于自动分配 IP 地址等网络配置信息。
      • Telnet/SSH:分别用于远程登录,Telnet 不加密,而 SSH 加密通信。

    传输层

    • 功能:传输层主要负责在两个主机之间的应用程序进程提供端到端的通信服务。它通过端口号来标识不同的应用程序进程,实现不同进程之间的数据传输。同时,传输层还提供数据传输的可靠性和数据完整性服务,确保数据能够准确、完整地从发送方传输到接收方。此外,它还进行流量控制和拥塞控制,以优化网络资源的利用和提高传输效率。
    • 常见协议
      • TCP:提供可靠的、面向连接的传输服务,通过三次握手建立连接,四次挥手释放连接。在数据传输过程中,使用序列号、确认应答、重传机制等来保证数据的可靠传输。同时,通过滑动窗口协议实现流量控制和拥塞控制,以适应网络的动态变化。
      • UDP:提供不可靠的、无连接的传输服务,不保证数据的可靠传输,也不进行流量控制和拥塞控制。但它的传输速度较快,适用于对实时性要求较高、对数据丢失不太敏感的应用,如视频直播、语音通话等。

    网络层

    • 功能:网络层主要负责将数据包从源主机传输到目标主机,它通过 IP 地址来标识网络中的每个设备,实现数据包的寻址和路由选择。在网络层,数据被封装成数据包,每个数据包都包含源 IP 地址、目标 IP 地址以及数据内容等信息。路由器等网络设备根据数据包的目标 IP 地址,选择合适的路径将数据包转发到下一个网络节点,直至到达目标主机。此外,网络层还负责数据包的分片和重组,以适应不同网络的 MTU(最大传输单元)限制。
    • 常见协议
      • IP:负责数据包的寻址和路由,是网络层的核心协议。
      • ICMP:用于报告网络通信中的错误信息和进行网络诊断,如 ping 命令就是基于 ICMP 协议实现的。
      • IGMP:用于组播管理,允许主机报告其组播组成员身份,以便路由器能够正确地转发组播数据。

    网络接口层

    • 功能:网络接口层是 TCP/IP 模型的最底层,它直接与物理网络接口(如网卡、无线网卡等)打交道,负责将数据帧封装成适合在物理网络中传输的格式,并通过物理介质(如同轴电缆、双绞线、光纤等)发送出去。同时,它也负责接收物理网络中的数据帧,并将其转换为上层协议能够处理的格式。此外,网络接口层还处理与物理网络相关的硬件地址(如 MAC 地址)、帧同步、错误检测等功能,以确保数据在物理链路中的正确传输。
    • 常见协议
      • 以太网:是最常见的局域网技术,使用 MAC 地址标识设备,通过 CSMA/CD(载波监听多路访问/冲突检测)机制进行介质访问控制。
      • Wi-Fi:是无线局域网技术,允许设备通过无线电波进行通信,遵循 IEEE 802.11 系列标准。
      • PPP:用于在点到点链路上传输数据,常用于拨号上网等场景。
  • Cookie、Session、Token 之间有什么区别?

    Cookie、Session和Token是Web开发中用于管理用户会话和认证的三种不同机制,它们在功能、存储位置、安全性等方面存在一些区别,以下是它们的主要区别:

    1. 概念和原理

    • Cookie:Cookie是存储在客户端的一小段文本信息,用于在用户与服务器之间传递数据。当用户访问某个网站时,服务器可以设置Cookie,将其存储在用户的浏览器中。之后,每次用户请求该网站时,浏览器会自动将Cookie发送给服务器。Cookie通常用于保存用户登录状态、用户偏好设置等信息。
    • Session:Session是服务器端存储的用户会话信息。当用户登录网站时,服务器会为该用户创建一个Session对象,并将用户的相关信息存储在服务器的内存或数据库中。服务器会为每个Session分配一个唯一的标识符(Session ID),并将该标识符发送给客户端,通常通过Cookie保存在客户端。之后,客户端每次请求时都会携带Session ID,服务器通过Session ID找到对应的Session对象,从而获取用户的状态信息。
    • Token:Token是一种由服务器颁发的令牌,用于客户端与服务器之间的身份验证。通常在用户登录时,服务器生成一个Token并将其发送给客户端,客户端在后续请求中将Token包含在请求头或请求参数中,以证明其身份。Token可以存储在客户端的本地存储(如localStorage或sessionStorage)中,也可以存储在Cookie中。

    2. 存储位置

    • Cookie:存储在客户端的浏览器中。
    • Session:存储在服务器端的内存或数据库中。
    • Token:通常存储在客户端的本地存储或Cookie中。

    3. 安全性

    • Cookie:容易受到跨站脚本攻击(XSS)和跨站请求伪造(CSRF)攻击。因为Cookie是自动发送的,攻击者可以通过恶意脚本获取Cookie信息或伪造请求。
    • Session:安全性相对较高,因为Session数据存储在服务器端,但Session ID如果被泄露,攻击者可以冒充用户的身份。因此,需要对Session ID进行严格的保护,如使用安全的传输协议(HTTPS)、设置Cookie的HttpOnly和Secure属性等。
    • Token:安全性较高,特别是当使用如JWT(JSON Web Token)等加密签名的Token时。Token可以防止CSRF攻击,因为攻击者无法伪造一个有效的Token。同时,Token可以设置过期时间,减少被滥用的风险。

    4. 使用场景

    • Cookie:适用于需要在客户端保存一些简单的状态信息,如用户偏好设置、语言选择等。也常用于保持用户登录状态,但需要配合Session或Token使用。
    • Session:适用于需要在服务器端维护用户状态的场景,如购物车、用户认证等。但Session的缺点是服务器端存储会占用内存资源,且在分布式系统中需要考虑Session的共享和同步问题。
    • Token:适用于无状态的、分布式的系统架构,如RESTful API。Token可以减少服务器端的存储压力,因为服务器不需要维护用户的状态信息。同时,Token可以方便地在多个设备或客户端之间共享,实现单点登录等功能。
  • 从网络角度来看,用户从输入网址到网页显示,期间发生了什么?

当用户在浏览器中输入网址并按下回车键后,到网页显示之前,浏览器和网络会进行一系列复杂的操作。以下是详细的步骤:

  1. 解析网址:浏览器首先会对用户输入的网址进行解析。如果用户输入的是一个域名(如www.example.com),浏览器需要将其转换为IP地址。这一步骤是通过DNS(域名系统)解析来完成的。
  2. DNS查询:浏览器会检查本地缓存中是否有该域名对应的IP地址记录。如果没有,它会向本地DNS服务器发送查询请求。本地DNS服务器可能会递归地查询根DNS服务器、顶级域名(TLD)服务器和权威DNS服务器,以获取域名对应的IP地址。
  3. 建立连接:一旦获得了目标服务器的IP地址,浏览器就会开始与该服务器建立连接。这通常涉及到TCP协议的三次握手过程,以确保连接的可靠性。
  4. 发送HTTP请求:连接建立后,浏览器会通过HTTP协议向服务器发送请求。请求中包含用户想要访问的资源的URL、HTTP方法(如GET)、请求头等信息。
  5. 等待服务器响应:服务器接收到请求后,会进行处理。这可能包括执行服务器端脚本、查询数据库、生成动态内容等。处理完成后,服务器会生成一个HTTP响应,其中包含状态码、响应头和响应体(即用户请求的网页内容)。
  6. 接收HTTP响应:浏览器接收到服务器的响应后,会根据响应头中的信息来处理响应体。如果响应体是HTML文档,浏览器会开始解析HTML,并根据HTML中的链接和资源引用,进一步请求CSS、JavaScript文件、图片等其他资源。
  7. 渲染页面:浏览器在接收到足够的数据后,会开始构建DOM树和CSSOM树,并进行布局计算和绘制操作,最终将网页显示在用户的屏幕上。

这个过程涉及到多个层次的网络协议和系统协作,从应用层的HTTP协议到传输层的TCP协议,再到网络层的IP协议和数据链路层的以太网协议等。每个步骤都需要精确的协调和数据传输,以确保用户能够快速、准确地获取所需的网页内容。


网站公告

今日签到

点亮在社区的每一天
去签到