当前位置: 首页 > 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.dtcms.com/a/267103.html

相关文章:

  • 【网络协议安全】任务12:二层物理和单臂路由及三层vlanif配置方法
  • HarmonyOS:创建ArkTS卡片
  • 从零开始开发纯血鸿蒙应用之探析仓颉语言与ArkTS的差异
  • Vuex身份认证
  • 《C++初阶之类和对象》【经典案例:日期类】
  • Java创建型模式---单例模式
  • WSL命令
  • C#每日学习日记
  • 3dmax烘焙插件3dmax法线贴图烘焙教程glb和gltf元宇宙灯光效果图烘焙烘焙光影贴图支持VR渲染器
  • AWS WebRTC:通过shell分析viewer端日志文件
  • 深入解析享元模式:通过共享技术高效支持大量细粒度对象
  • 【力扣 简单 C】70. 爬楼梯
  • 【鸿蒙】鸿蒙操作系统发展综述
  • 递归与循环
  • 深入理解Reactor调试模式:Hooks.onOperatorDebug() vs ReactorDebugAgent.init()
  • 软件工程经济与伦理
  • 流水线(Jenkins)打包拉取依赖的时候提示无法拉取,需要登录私仓的解决办法
  • HTML知识复习2
  • HuggingFists: 无代码处理复杂PDF
  • 一个简单的网页设计
  • Vue Router 中,params参数的名称必须与路由配置中的动态路径参数名完全一致
  • Go语言基础之接口
  • CppCon 2018 学习:Sane and Safe C++ Class Types
  • FLAN-T5:规模化指令微调的语言模型
  • NumPy 函数库在数学建模中的基本使用方法
  • 电脑休眠控制工具,灵活设置防休眠
  • 通过 Windows 共享文件夹 + 手机访问(SMB协议)如何实现
  • Python(28)Python循环语句指南:从语法糖到CPython字节码的底层探秘
  • Everything 1.5.0.1393a高效实用的系统文件搜索工具(2025年7月4日更新)
  • 构建未来交互体验:AG-UI 如何赋能智能体与前端通信?