当前位置: 首页 > news >正文

计算机网络(网页显示过程,TCP三次握手,HTTP1.0,1.1,2.0,3.0,JWT cookie)

前言

最近一直在后端开发的面经🙌,里面涉及到了好多计算机网络的知识😁,在这里以问题的形式写一个学习笔记(其中参考了: JavaGuide 和 小林coding 这两个很好的学习网站😘)

1.当键入网址后,到网页显示,其间发生了什么?

(1)首先浏览器会解析URL。(如确定协议像Http或Https)
(2)然后通过DNS服务器把域名解析为IP地址。(找到服务器啦)
(3)接着TCP协议三次握手和服务器建立连接。(客户端与服务器之间建立起连接了)
(4)成功建立连接后,浏览器向服务器发送一个 HTTP 请求报文。(发送数据了)
(5)服务器收到 HTTP 请求报文后,处理请求,并返回 HTTP 响应报文给浏览器。
(6)最后,浏览器把这些内容解析并展示出来。

2.TCP 传输数据之前,要先三次握手建立连接,过程是什么?

我们都知道在 HTTP 传输数据之前,首先需要 TCP 建立连接,Http数据的传输是要基于TCP 连接的。

(1).首先,客户端发一个SYN包给服务器(这就像打招呼说:你好!我想连你了😘)
(2.)服务器收到后,发送一个SYN+ACK包回去(我收到啦,同意连接)
(3).客户端收到后,再发一个ACK包给服务器,确认连接。

在这里插入图片描述

3.HTTP1.0,1.1,2.0,3.0区别?

这个吧,它这个很多,我也没咋学全面,我感觉吧,因为Http数据的传输是要基于TCP 连接的,这个技术基于传输层,就是不断提升不断升级就是是运输的效率更高?稍微总结一下:

(1)HTTP/1.0 每次请求响应都要建立新连接,效率低。
(2)HTTP/1.1 支持持久连接,能减少连接开销,但还是按顺序来处理请求。
(3)HTTP/2.0 能同时处理多个请求,多路复用,传输更快。
(4)HTTP/3.0 用UDP协议替代了TCP,减少了TCP握手延迟,改进了拥塞控制,在高丢包网络环境下性能更好。

4.HTTP 是不保存状态的协议, 如何保存用户状态?

这个在后端开发登陆界面的时候有很大用处

方法一:Session (会话) 配合 Cookie (主流方式)

🙌先来了解一下Cookie和Session:
**cookie:**是主要在客户端,能存一些小数据,,就像身份证,负责在客户端和服务器见传递标志;
**Session:**主要在服务端,就像档案库,在服务器端存客户端的状态信息

基本流程是这样的:

(1)用户向服务器发送用户名、密码、验证码用于登陆系统。
(2)服务器验证通过后,会为这个用户创建一个专属的 Session 对象
(3)服务器通过 HTTP 响应头中的 Set-Cookie 指令,把这个 Session发送给用户的浏览器。
(4)浏览器接收到 SessionID 后,会将其以 Cookie 的形式保存在本地。
(5)当用户保持登录状态时,每次向该服务器发请求,浏览器都会自动带上这个存有 Session 的 Cookie。
(6)服务器收到请求后,从 Cookie 中拿出 Session,就能找到之前保存的那个 Session 对象

注🤯:然而这种方法不支持跨域请求,所以一般使用以下方法:

方法二:Token-based 认证 (如 JWT - JSON Web Tokens)

这个我在苍穹外卖登录界面的文章里写过,里面还有实现代码感兴趣想进一步学习可以看看: 点我🙌

实现步骤如下:
(1)用户向服务器发送用户名、密码以及验证码用于登陆系统;
(2)如果用户用户名、密码以及验证码校验正确的话,服务端会返回已经签名的 Token,也就是 JWT;
(3)客户端收到 Token 后自己保存起来(比如浏览器的 localStorage )用户以后每次向服务端发请求都在 Header 中带上这个 JWT (直接当发送信息储存到HTTP传输数据中);
(4)服务端检查 JWT 并从中获取用户相关信息。

http://www.lryc.cn/news/581211.html

相关文章:

  • 一键将 SQL 转为 Java 实体类,全面支持 MySQL / PostgreSQL / Oracle!
  • 永磁同步电机无速度算法--基于锁频环前馈锁相环的滑模观测器
  • 使用SSH隧道连接远程主机
  • 五、Python新特性指定类型用法
  • 【赵渝强老师】Oracle RMAN的目录数据库
  • 数据库-元数据表
  • 事务的原子性
  • 自建双因素认证器 2FAuth 完美替代 Google Auth / Microsoft Auth
  • CSS 文字浮雕效果:巧用 text-shadow 实现 3D 立体文字
  • 虚拟机与容器技术详解:VM、LXC、LXD与Docker
  • HarmonyOS学习3---ArkUI
  • 《Redis》哨兵模式
  • ✨ OpenAudio S1:影视级文本转语音与语音克隆Mac整合包
  • 构建未来交互体验:AG-UI 如何赋能智能体与前端通信?
  • openai和chatgpt什么关系
  • hono框架绑定cloudflare的d1数据库操作步骤
  • 2025最新Telegram快读助手:一款智能Telegram链接摘要机器人
  • 【leetcode100】最长回文子串
  • 探索 .NET 桌面开发:WinForms、WPF、.NET MAUI 和 Avalonia 的全面对比(截至2025年7月)
  • MAX3485在MCU芯片AS32S601-485通信外设中的应用
  • Java 创建对象过程 JVM 内存分配并发安全笔记
  • 介绍Flutter
  • 2025最新软件测试面试八股文
  • 在SoC数据加解密验证中使用 Python 的 gmssl 库
  • 【论文笔记】OctoThinker:突破 Llama 推理瓶颈的中期训练范式
  • web前端面试-- MVC、MVP、MVVM 架构模式对比
  • 硬件嵌入式工程师学习路线终极总结(二):Makefile用法及变量——你的项目“自动化指挥官”!
  • WEB攻防-文件包含LFIRFI伪协议编码算法无文件利用黑白盒
  • Go语言的web框架--gin
  • NX二次开发——NX二次开发-检查点是否在面上或者体上