前言

最近一直在后端开发的面经🙌,里面涉及到了好多计算机网络的知识😁,在这里以问题的形式写一个学习笔记(其中参考了: 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.pswp.cn/bicheng/87668.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/87668.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/87668.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 消息的发布和订阅

Redis 消息的发布和订阅 1、什么是发布和订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 Redis 客户端可以订阅任意数量的频道。 2、Redis的发布和订阅示意 1、客户端可以订阅频道如下图 2、当…

python优先队列使用

heapq 是 Python 的一个内置模块,提供了堆队列算法的实现,也称为优先队列算法。以下是关于 heapq 模块的详细使用说明。 基本概念 堆:一种特殊的二叉树结构,满足父节点总是小于或等于其子节点(最小堆)特性…

在 Windows 机器上安装和配置 RabbitMQ

RabbitMQ 它是一款基于 AMQP(高级消息队列协议)的流行消息代理。RabbitMQ 适用于 Windows、Linux 和 macOS,易于安装和使用,并提供一系列强大的消息队列和路由功能。要在 Windows 计算机上使用 RabbitMQ,您必须先安装 …

第十五节:第六部分:日志技术:logback的核心配置文件详解、日志级别

核心配置文件logback.xml 什么是日志级别,为什么要学日志级别

从入门到精通:数据库全攻略

目录一、数据库基础概念1.1 数据库定义1.2 数据库与文件系统的区别1.3 数据库系统组成部分1.4 关系型数据库与非关系型数据库二、数据库安装与配置2.1 下载 MySQL2.2 安装 MySQL2.3 初始化数据库服务器2.4 启动和停止 MySQL 服务2.5 登录 MySQL2.6 创建数据库2.7 创建数据表三、…

【JAVA】消息队列(MQ)是个好东西

一、前言再JAVA系统开发中,再高并发的场景经常需要使用到消息队列,有时候是不得不使用到消息对了。特别是大数据量的并发处理。对数据实时性要求又没那么高的情况下。用户请求 → 接入层(Nginx) → 限流 → 消息队列 → 订单服务 → 库存服务 → 支付服务…

【Golang面试题】Go结构体的特点,与其它语言的区别

Go 结构体深度解析:与 C/C、Java 的全面对比 一、核心概念对比特性Go 结构体 (struct)C/C 结构体 (struct)Java 类 (class)本质值类型复合数据类型值类型复合数据类型引用类型内存分配栈或堆 (编译器决定)栈 (显式控制)堆 (JVM管理)默认访问权限首字母大写导出publi…

CppCon 2018 学习:OOP is dead, long live Data-oriented design

探讨了面向对象编程(OOP)的一些根本性问题深入理解: 标题:What is so wrong with OOP? 什么是面向对象的问题? 这不是说 OOP “绝对错误”,而是指出它在实践中经常引发的问题,尤其是在性能敏…

科学的第五范式:人工智能如何重塑发现之疆

在人类探索未知的壮阔史诗中,科学方法的演进如同照亮迷雾的灯塔。从基于经验的第一范式(描述自然现象),到以理论推演为核心的第二范式(牛顿定律、麦克斯韦方程),再到以计算机模拟为标志的第三范…

tmux 左下角会话名显示不全的解决方法

在 tmux 中显示完整的会话名 有时候我们要在服务器上长时间跑某个任务,但不可能时时刻刻保持终端模拟器开启,这时候就需要用到 tmux ,可以在关闭会话的同时让任务继续在后台跑,后续还可以连回来。但在 tmux 会话中,左…

【期末分布式】分布式的期末考试资料大题整理

🧸安清h:个人主页 🎥个人专栏:【Spring篇】【计算机网络】【Mybatis篇】 🎯大题 ✨一.Nacos的服务注册与发现 🚦1.怎么来进行服务的注册与发现的这样的一个流程,描述一下。 🎃描述…

Android手机无网离线使用FunASR识别麦克风语音内容

手机断网离线使用FunASR识别麦克风语音内容 --本地AI电话机器人 上一篇:阿里FunASR本地断网离线识别模型简析 下一篇:手机无网离线使用FunASR识别手机历史通话录音 一、前言 继上一篇《阿里FunASR本地断网离线识别模型简析》和前面几篇ASR相关理论的…

Stable Diffusion 项目实战落地:从0到1 掌握ControlNet 第五篇 线稿到高清修复:一步步教你用AI做出完美IP形象

大家好!上一篇,我们一起玩转了字体风格变换 ,让文字根据提示词进行自如变换,个性十足又充满创意! 如果你错过了那篇文章,别担心,赶紧点这里补课:Stable Diffusion 项目实战落地:从0到1 掌握ControlNet 第四篇 风格化字体大揭秘:从线稿到涂鸦,ControlNet让文字焕发新生…

Java网络编程:TCP/UDP套接字通信详解

TCP客户端套接字创建与使用 Socket类基础概念 Socket类的对象代表TCP客户端套接字,用于与TCP服务器套接字进行通信。与服务器端通过accept()方法获取Socket对象不同,客户端需要主动执行三个关键步骤:创建套接字、绑定地址和建立连接。 客户端…

VMware vSphere 9与ESXi 9正式发布:云原生与AI驱动的虚拟化平台革新

2025年6月18日,VMware正式推出其旗舰虚拟化平台vSphere 9及配套的ESXi 9操作系统,标志着企业级虚拟化技术迈入以云原生、人工智能(AI)和硬件加速为核心的新纪元。此次更新不仅在功能层面实现突破,更通过授权模式革新为…

汽车功能安全概念阶段开发【相关项定义HARA】2

文章目录 1 浅谈概念阶段开发2 功能安全概念阶段开发2.1 相关项定义2.2 危害分析与风险评估(HARA-Hazard Analysis and Risk Assessment) 3 关键输出与对后续阶段的影响4 总结 1 浅谈概念阶段开发 概念阶段开发是整个研发流程的起点和基石。它发生在任何…

WPF中依赖属性和附加属性

依赖属性(DependencyProperty) 依赖属性是WPF中的一种特殊属性,它的实现依赖于DependencyObject类提供的基础设施。与普通的.NET属性不同,依赖属性的值可以通过多种方式确定,包括继承、样式、数据绑定和动画等。 主要特…

Docker 中如何实现镜像的推送和拉取

在 Docker 中,镜像的推送(push)和拉取(pull)是通过与**Docker 镜像仓库(Registry)**交互完成的。默认仓库是 Docker Hub,但你也可以使用私有仓库(Harbor、Nexus、AWS ECR…

[C#] WPF - 自定义样式(Slider篇)

一、定义样式 在App.xaml里面定义样式&#xff1a; <Applicationx:Class"WpfApp.StudySlider.App"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local&q…

eBPF 实战指南:精准定位 TCP 重传,洞察网络瓶颈真相

更多云服务器知识&#xff0c;尽在hostol.com 你有没有遇到过这种情况&#xff1f;网站访问卡顿&#xff0c;接口响应慢得像蜗牛爬。你 ping 服务器没丢包&#xff0c;CPU 内存也没打满&#xff0c;日志也没报错&#xff0c;结果就是不知道哪儿出的问题。 你用抓包分析&#x…