计算机网络常识:缓存、长短连接 网络初探、URL、客户端与服务端、域名操作 tcp 三次握手 四次挥手
缓存:
缓存是对cpu,内存的一个节约:节约的是网络带宽资源 节约服务器的性能
资源的每次下载和请求都会造成服务器的一个压力
减少网络对资源拉取的延迟 这个就是浏览器缓存的一个好处
表示这个html页面的返回是不要缓存的 忽略缓存 需要每次都到服务器上获取新的
并不是不缓存 而是提示浏览器忽略缓存
pragma:no-cache:浏览器忽略缓存 出现在响应头里面
用来控制缓存:
浏览器发起请求,先会去看有没有缓存 没有缓存直接去请求服务器去拉取资源
在有缓存,但是缓存过期的情况下
返回304的条件:
从磁盘缓存当中去获取:过期时间没有到
图片一定是设置了过期时间的 图片资源不放在服务器上 用单独的图片服务器
图片就会做一个缓存
视频类的存储在磁盘当中
三次握手 四次挥手的状态变化
状态变化是从三次握手开始的
服务器:启动--绑定--设置监听 listen()--监听先准备好 这样才是有效的
从无状态变成listen
这样开始三次握手的操作:
(1)第一次握手:客户端发起 客户端调用connect函数
rcvd:接收
第二次握手服务器发生变化 客户端收到服务器的返回页发生变化
当最后成功 客户端和服务器是一个样子 都是established
三次握手成功 双方连接建立
建立之后就可以进行通信了--进行数据传输 通信过程中tcp是没有发生任何变化的
established就是正常的通信状态
SYN==1 发起连接请求 ==0时是没有连接
三次握手:
第一次握手:建立连接时,客户端发送SYN包到服务器,并等待服务器确认。
第二次握手:服务器收到SYN包,同时自己也给客户端发送一个确认包SYN+ACK包。
第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK。
此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手
四次挥手:
双方通信完毕,关闭连接时,要进行四次挥手
第一次挥手:客户端发送一个FIN包,申请断开连接,并等待服务器确认。
第二次挥手:服务端回复一个ACK包,表示接受到客户端的关闭连接请求,但现在服务端还不能马上关
闭连接,需要检查下是否还有未处理完的数据
第三次挥手:服务端处理完所有数据,给客户端发送FIN包,表示可以断开连接
第四次挥手:客户端回复ACK包,表示断开连接
http的长短连接:
短连接:每次请求都会建立连接
长连接就是只建立一次连接 多次资源请求都复用该连接 完成后关闭
网络深层知识:
浏览器请求一个网页:
客户端就是用户所用的程序:浏览器 应用程序等等都叫做客户端client
客户端client
服务端就是存储数据 存储网页的程序 还有处理数据的一个载体
服务端:数据和文件的出口 客户端就是数据的入口
后台是数据的管理
服务器就是电脑:家用电脑 配置高一点 服务器的系统带server
我们输入一个url地址,回车:就会对网址先进行dns解析 先去解析到底是什么东西
将网址转换成ip地址 然后通往服务器 这个过程会建立三次握手和四次挥手
这个就是请求网页的流程!!!!
一般来说,一个服务器承载着一个或者多个ip地址
一个网址对应一个ip地址 那为什么不直接使用ip而使用URL地址呢?
首先是方便记忆 数字不方便记忆
一个ip地址能映射出多个域名 所以ip地址是不适合用户直接接触的
计算机对数字是比较敏感的
三次握手才会真正的建立三次握手的连接 建立连接之后才能进行http请求
服务器返回,客户端收到的是html代码文件,浏览器进行解析和渲染
等到渲染页面结束,进行四次挥手
tcp/ip的这种连接方式叫做长连接
重点:
tcp在哪个层
回答下tcp的功能
tcp为什么是三次握手?不是两次四次?
如果只做两次,无法去确认客户端的接收能力
tcp面向连接 必须是双方的 如果只有两次 只是服务器建立 客户端并没有
造成连接资源的浪费
四次是没有必要的 所以没有必要进行第四次握手
TCP为什么需要4次挥手? 为什么不是三次?
如果将第二次和第三次和为一体 第二次和第三次之间是有时间延迟的
导致客户端不能及时接收:客户端会重新发送断开请求
ack和fin之间是有时差的
这个延迟是没有办法处理的 只能是把这两次都分开 这样才能达到效率最高
只有当客户端和服务器两端都确定好要断开了 才能断开
四次是最优的方案
五次会造成资源的浪费
异常状态码,400应该找前端还是后端
HTTP状态码 400 表示客户端请求存在语法或参数错误,其责任归属需要具体分析。
http是哪一层协议
osi七层协议有哪七层 tcp四层模型
tcp四层模型
物理层和数据链路层合称为网络接口层
三层交换机具有路由功能
分层:方便管理
第七层 应用层
应用层是OSI模型中的最高层,也是和用户最近的一层。它直接面向用户和应用程序,为用户提供各种网络服务和应用程序支持
第六层 表示层
负责数据格式与编码方式的转换、加密解密和数据压缩等任务。在实际的通信协议中,表示层往往与应用层或会话层结合使用,对数据进行处理和转换。
第五层 会话层
在OSI七层模型中,会话层没有单独的协议,而是利用下层协议提供的会话机制来实现数据交换。会话层的作用是管理和协调应用程序之间的对话和会话,并与表示层一起支持数据转换、加密和解密等功能。
第四层 传输层
传输层的作用是在不可靠的网络上提供可靠的数据传输服务。它负责将应用程序发送的数据分割成较小的数据段,并使用可靠的数据传输协议(如TCP)或不可靠的数据传输协议(如UDP)将这些数据段传输到目标设备。传输层还负责控制数据流量、错误恢复和拥塞控制等任务。
如果你想要稳,就选tcp,想要稳,就选UDP第三层 网络层
负责将数据包从源主机传输到目标主机。网络层通过使用IP协议来实现这一过程,提供了路由、寻址和分组传输等功能,以确保数据能够经过多个网络进行传输,并最终到达目标主机。
第二层 数据链路层
负责将网络层传输过来的数据包进行分帧,并在物理介质上进行传输。数据链路层还提供了错误检测和纠正功能,以确保数据的可靠性。此外,数据链路层还实现了访问控制和流量控制等功能,以协调多个设备之间的数据传输。
第一层 物理层
这一层就是osi最底层了,负责将数字数据转换成物理信号并在网络中传输。其意义在于实现不同设备之间的数据传输和通信,使得计算机网络得以正常工作。物理层还定义了传输媒介、传输速率、编码方式等参数,为上层协议提供了可靠的数据传输基础。
就是进行物理连接的
get和post请求的区别
应用层的常见协议有哪些?
http状态码
常见HTTP状态码 :
1xx :100 Continue继续:客户端应继续其请求
2xx :200 OK
请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。
204 No Content(无内容)
服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档。
206 Partial Content(部分内容)
服务器成功处理了部分GET请求。
3xx:
301 Moved Permanently(永久重定向)
请求的资源已被永久的移动到新URL,返回信息会包括新的URL,浏览器会自动定向到新URL。今后任何新的请求都应使用新的URI代替。
302 Found(临时重定向)
与301类似。但资源只是临时被移动。表示请求的资源被分配了新的URL,希望本次访问使用新的URL。
303 See Othe(查看其他地址)
当请求者应对不同的位置进行单独的 GET 请求以检索响应时,服务器会返回此代码。对于除 HEAD 请求之外的所有请求,服务器会自动转到其他位置。
304 Not Modified(未修改)
所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。
305 Use Proxy(使用代理)
请求者只能使用代理访问请求的网页。如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理
307 Temporary Redire(临时重定向)
与303有着相同的含义,307会遵照浏览器标准不会从POST变成GET;(不同浏览器可能会出现不同的情况)。
4xx :
400 Bad Request (语法错误)
客户端请求的语法错误,服务器无法理解。
401 Unauthorized(未授权)
请求要求用户的身份认证
403 Forbidden(禁止)
服务器理解请求客户端的请求,但是拒绝执行此请求
404 Not Found(未找到)
服务器无法根据客户端的请求找到资源(网页)。除此之外,也可以在服务器拒绝请求但不想给拒绝原因时使用。
405 Method Not Allowed (方法禁用)
客户端请求中的方法被禁止。
406 Not Acceptable(不接受)
无法使用请求的内容特性来响应请求的网页。
408 Request Time-out(请求超时)
服务器等待客户端发送的请求时间过长,超时。
5xx
500Internal Server Error(服务器内部错误)
服务器遇到错误,无法完成请求。
501 Not Implemented(尚未实施)
服务器不具备完成请求的功能。例如,当服务器无法识别请求方法时,服务器可能会返回此代码。
502 Bad Gateway(错误网关)
作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503 Service Unavailable(服务不可用)
由于超载或系统维护,服务器暂时的无法处理客户端的请求。通常,这只是一种暂时的状态。
504 Gateway Time-out(网关超时)
服务器作为网关或代理,未及时从上游服务器接收请求。
505 HTTP Version not supported(HTTP 版本不受支持)
服务器不支持请求中所使用的 HTTP 协议版本。
相关文章:

计算机网络常识:缓存、长短连接 网络初探、URL、客户端与服务端、域名操作 tcp 三次握手 四次挥手
缓存: 缓存是对cpu,内存的一个节约:节约的是网络带宽资源 节约服务器的性能 资源的每次下载和请求都会造成服务器的一个压力 减少网络对资源拉取的延迟 这个就是浏览器缓存的一个好处 表示这个html页面的返回是不要缓存的 忽略缓存 需要每次…...

软件逆向工程核心技术:脱壳原理与实战分析
目录 一、脱壳技术概述:从保护到还原的逆向之旅 1.1 脱壳技术的本质与核心价值 1.2 壳的分类与核心技术解析 1.3 学习路径:从压缩壳到加密壳的渐进式突破 二、脱壳三步法:系统化逆向工程框架 2.1 核心流程总览 2.2 实战案例࿱…...
前端面经 作用域和作用域链
含义:JS中变量生效的区域 分类:全局作用域 或者 局部作用域 局部作用域:函数作用域 和 块级作用域ES6 全局作用域:在代码中任何地方都生效 函数中定义函数中生效,函数结束失效 块级作用域 使用let或const 声明 作用域链:JS查…...

华为OD机试真题——荒岛求生(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
2025 A卷 200分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录…...
【Python 字符串】
Python 中的字符串(str)是用于处理文本数据的基础类型,具有不可变性、丰富的内置方法和灵活的操作方式。以下是 Python 字符串的核心知识点: 一、基础特性 定义方式: s1 单引号字符串 s2 "双引号字符串" s…...
基础编程题目集 6-9 统计个位数字
本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-21252中,2出现了3次,则该函数应该返回3。 函数接口定义: int Count_Digit ( const int N, const int D ); 其中N和D都是用户传入的参数。N的值不超过int的范围&…...
LeetCode[226] 翻转二叉树
思路: 使用递归,归根结底还是左右节点互相倒,那么肯定需要一个temp节点在中间传递,最后就是递归,没什么说的 代码: /*** Definition for a binary tree node.* public class TreeNode {* int …...

【CTFer成长之路】举足轻重的信息搜集
举足轻重的信息搜集 信息搜集 常见的搜集 题目描述: 一共3部分flag docker-compose.yml version: 3.2services:web:image: registry.cn-hangzhou.aliyuncs.com/n1book/web-information-backk:latestports:- 80:80启动方式 docker-compose up -d 题目Flag n1book{info_…...
AI——认知科学中的认知架构建立步骤与方法
认知科学中的认知架构建立步骤与方法 认知架构(Cognitive Architecture)是模拟人类心智活动的计算框架,旨在整合感知、记忆、推理、学习等核心认知功能。其建立需结合心理学理论、神经科学证据和计算建模技术。以下是建立认知架构的系统方法…...

Linux开发工具【中】
目录 一、vim 1.1 插入模式 1.2 底行模式 1)set nu 2)set nonu 3) /XXX n 4)!command 5)vs other 1.3 补充 1) 批量化操作 2)批量化替换 : 3)快速定位&am…...
Ceph PG unfound/lost 问题排查与解决
Ceph PG unfound/lost 问题排查与解决 背景现象排查过程经验总结参考命令结语 背景 Ceph 集群出现 HEALTH_ERR,提示有 PG 对象丢失(unfound),并且 repair 无法自动修复。 现象 ceph health detail 显示: HEALTH_ERR …...

MySQL OCP 认证限时免费活动 7 月 31 日 前截止!!!
为庆祝 MySQL 数据库发布 30 周年,Oracle 官方推出限时福利:2025 年 4 月 20 日至 7 月 31 日期间,所有人均可免费报考 MySQL OCP(Oracle Certified Professional)认证考试。该认证验证持证者在 MySQL 数据库管理、优化…...
Python Cookbook-7.8 使用 Berkeley DB 数据库
任务 你想将一些数据做持久化处理,而且也想体验一下BerkeleyDB数据库的简洁和高效。 解决方案 如果以前在你的计算机中安装过 BerkeleyDB,Python标准库附带的bsddb包(以及可选的 bsddb3,用于访间Berkeley DBrelease 3.2数据库)可以被用来作…...
STM32智能手表:基于FreeRTOS
引言 随着物联网和可穿戴设备的快速发展,智能手表作为典型代表,集成了传感器数据采集、实时显示、无线通信等多项功能。本文将深入剖析一个基于STM32和FreeRTOS的智能手表项目,从硬件架构到软件设计,逐步讲解如何构建一个完整的嵌…...

学习笔记:数据库——事务
1.内容: 基于现有数据库设计检查点实验,观察比较提交前后执行结果并分析。 2.实现 源码 -- 开启事务 START TRANSACTION;-- 插入一条订单记录(客户ID为10002) INSERT INTO orders (o_date, c_id) VALUES (NOW(), 10002);-- 获…...
C++命名空间、内联与捕获
命名空间namespace 最常见的命名空间是std,你一定非常熟悉,也就是: using namespace std;命名空间的基本格式 注意,要在头文件里面定义! namespace namespace_name{data_type function_name(data_type parameter){data_type result;//function contentreturn result;}…...

UE5 Daz头发转Blender曲线再导出ABC成为Groom
先安装Daz to Blender Import插件 【神器】 --DAZ一键导入blender插件的详细安装和使用,自带骨骼绑定和控制器,多姿势动画,Importer桥接插件_哔哩哔哩_bilibili 然后安装DAZHairConverter插件 一分钟将DAZ头发转化成Blender粒子毛发_哔哩哔…...
【进阶】C# 委托(Delegate)知识点总结归纳
1. 委托的基本概念 定义:委托是一种类型安全的函数指针,用于封装方法(静态方法或实例方法)。 核心作用:允许将方法作为参数传递,实现回调机制和事件处理。 类型安全:委托在编译时会检查方法签…...

【贪心算法】贪心算法四
贪心算法四 1.最长回文串2.增减字符串匹配3.分发饼干4.最优除法点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.最长回文串 题目链接: 409. 最长回文串 题目分析: 给一个包含大小字母的字符串,从里面挑选出来一些字母构成一个…...
【漫话机器学习系列】240.真正类率(True Positive Rate,TPR)
理解真正类率(True Positive Rate,TPR):公式、意义与应用 在机器学习与深度学习模型评估中,"真正类率"(True Positive Rate,简称TPR)是一个非常重要的指标。TPR反映了分类…...

Linux的基础开发工具
目录 前言: 1、包管理器yum 1.1 软件包的依赖 1.2 镜像源 1.3 查找/安装/卸载软件 2、编辑器vim 2.1 命令模式(默认) 2.1.1 撤销与反撤销 2.1.2 光标定位 2.1.3 复制&&剪切(删除)&&粘贴 2.1.4 替换 2.1.5 插入模式 2.1.6 V-Block模式 …...

【Electron】electron-vue 借助 element-ui UI 库助力桌面应用开发
前面文章我们讲过 electron 让可以用 HTML、JS、CSS 开发桌面应用程序。而 electron-vue 是一个结合了 electron 与 vue 的套件。这样我们就能方便地使用 vue 快速开发桌面应用。但是,vue 只是在 js 这层面做了大量的便捷的操作。对 UI 并未过多涉及。此时如果您在开…...

Linux基础(最常用基本命令)
1.查看文件ls 1.1 格式 ls 选项 参数,如:ls -lah ~/ 1.2 选项设置: -l:list 以列表方式显示文件 -h:human-readable 以人类可读的方式显示文件大小(会将纯数字转换为kb,mb) -a:all 显示所有的…...

含铜废水循环利用体系
在工业绿色转型浪潮中,含铜废水回收技术正以"资源再生智能管控"的双核驱动模式,重构传统水处理产业的价值链。该体系通过构建"精准分离-梯级利用-智慧运维"的闭环系统,不仅突破了重金属废水处理的技术桎梏,更…...
移动端返回指定页面
onLoad(() > { // #ifdef APP-PLUS || MP-ALIPAY || H5 onBackPress(() > { uni.switchTab({ url: ‘/pages/my/my’, }) return true }) // #endif }) onUnload(() > { // #ifdef MP-WEIXIN uni.switchTab({ url: ‘/pages/my/my’, }) // #endif })...

MySQL 安装配置(完整教程)
文章目录 一、MySQL 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1 初始化 MySQL5.2 搭建 MySQL 环境 六、修改 MySQL 密码七、卸载 MySQL八、结语 一、MySQL 简介 MySQL 是一款广泛使用的开源关系型数据库管理系统(RDBMS)&#…...

【JavaScript】二十九、垃圾回收 + 闭包 + 变量提升
文章目录 1、作用域1.1 局部作用域1.2 全局作用域1.3 作用域链 2、JC垃圾回收机制♻️3、GC算法3.1 引用计数法3.2 标记清除法 4、闭包4.1 定义4.2 闭包的应用:实现数据的私有 5、变量提升 1、作用域 即一个范围,离开了这个范围,这个变量就不…...

【从零开始学习RabbitMQ | 第一篇】从异步通信到交换机
目录 前言 1.什么是RabbitMQ? 2.同步调用的优缺点 3.异步调用的优缺点 3.1优点: 3.2异步调用的问题是什么? 4技术选型 4.1AMQP协议就是: 4.2kafka和RabbitMQ的使用场景 5.安装RabitMq 6.rabitmq的整体架构 7.RabibtM…...
100个常用的DeepSeek指令
日常生活类(20个) 1. 新闻解读:请为我解读今天的热点新闻。 2. 天气查询:请查询……的天气并推荐着装。 3. 旅行攻略:请制定前往……的旅行攻略。 4. 菜谱生成:请生成……菜的具体做法。 5. 解决方案&…...

AI(学习笔记第二课) 使用langchain进行AI开发
文章目录 AI(学习笔记第二课) 使用langchain进行AI开发学习内容:1. 使用背景2.创建python(pycharm community版)开发环境并连接deepseek2.1 创建python(pycharm community版)开发环境2.2 创建python工程2.3 写入初始py…...