HTTP【总结】
1. 当用户在浏览器输入网址回车之后,网络协议都做了哪些工作?
首先解析出URL中的域名,根据域名获取对应的ip地址,从浏览器缓存中查看,如果没有则从本机域名解析文件hosts中查看,还没有则从DNS的层层解析。
获取IP地址后,浏览器发起与服务器的三次握手。
握手建立之后,开始组装http请求报文,发送报文。
服务器收到请求报文之后开始请求报文解析,生成响应数据,发送响应数据。
浏览器收到响应之后,开始渲染页面。
2. TCP协议
面向连接的、可靠的、基于字节流的传输通信协议。
特点:基于连接的:数据传输之前需要建立连接;全双工:双向传输;字节流:不限制数据大小,打包成报文段,保证有序接收,重复报文自动丢弃;流量缓冲:解决双方处理能力的不匹配;可靠的传输服务:保证可达,丢包时通过重发机制实现可靠性;拥赛控制:防止网络出现恶性阻塞。
TCP连接:四元组(源地址、源端口、目的地址、目的端口)
三次握手:
客户端向服务器发送一个SYN报文(同步报文),其中包含客户端的SYN序列号(seq=x)。
服务器收到SYN报文后,向客户端回复一个SYN-ACK报文,表示同意建立连接,其中包含服务器和客户端的SYN序列号(seq=y和ack=x+1)。
客户端收到SYN-ACK报文后,向服务器发送一个ACK报文,确认连接建立,其中包含客户端的ACK序列号(seq=x+1和ack=y+1)。
三次握手的作用:
防止已失效的连接被当作新连接。通过三次握手,客户端和服务器都确认了彼此的存在和连接参数,避免了已失效的连接被当作新连接的情况。
确保连接的可靠性。三次握手可以确认双方都理解连接的建立过程,并且能够正常地接收和发送数据。
提高网络效率。三次握手避免了不必要的连接尝试,减少了网络拥塞,提高了网络效率。
四次挥手:
客户端发送FIN报文,请求关闭连接,此时客户端进入FIN_WAIT_1状态。
服务器收到FIN报文后,向客户端发送确认报文,并进入CLOSE_WAIT状态。
服务器完成所有任务后,向客户端发送FIN报文,请求关闭连接,此时服务器进入LAST_ACK状态。
客户端收到FIN报文后,向服务器发送确认报文,并进入TIME_WAIT状态。
四次挥手的作用:
客户端发送FIN报文,表示客户端不再发送数据,请求释放连接。
服务器收到FIN报文后,向客户端发送确认报文,表示同意释放连接。
服务器完成所有任务后,向客户端发送FIN报文,表示服务器不再发送数据,请求释放连接。
客户端收到FIN报文后,向服务器发送确认报文,表示同意释放连接。
3. 浏览器缓存策略
浏览器缓存:减少了沉余的数据传输,节省了网费;减少了服务器的负担,大大提升了网站的性能;加快了客户端加载网页的速度
浏览器缓存主要有两类:协商缓存、彻底缓存,也称协商缓存和强缓存。
强制缓存:不会向服务器发送请求,直接从缓存中读取资源,在chrome控制台的network控制台的network选项中可以看到请求返回200的状态码。
协商缓存:在使用本地缓存之前,需要向服务器发送请求,服务器会根据这个请求的request header的一些参数来判断是否命中协商缓存,如果命中,则返回304状态码并带上新的response header通知浏览器从缓存中读取资源;协商缓存可以解决强制缓存的情况下,资源不更新的问题。
强制缓存中header参数:
cache-control:max-age = 30;强缓存,代表这个请求正确返回时间。
cache-control:-no-cache;协商缓存,先与服务器确认返回的响应是否被更改,如果之前的响应中在ETag,那么请求的时候与服务器端验证,如果资源未被更改,可以避免重新下载。
cache-control:-no-store;直接禁止浏览器缓存数据,每次用户请求该资源,都会向服务器发送请求,每次都会下载完整的资源。
cache-control:- public;可以被所有的用户缓存,包括终端用户和cdn等中间代理服务器。
cache-control:-private;只能被终端用户的浏览器缓存,不允许cdn等中间代理服务器缓存。
协商缓存中header参数:
cache-control:-no-cache;不强制缓存
last-modify 最新修改时间:if-modify-since,浏览器第一次请求一个资源的时候,服务器返回的header中会加上last-modify,last-modify是一个时间标识该资源最后修改时间;当浏览器再次请求该资源时,request的请求头中会包含if-modify-since,该值为缓存之前返回的last-modify,服务器收到后,根据该资源的最后修改时间判断是否命中;如果修改时间和服务器的修改时间相同,则返回给客户端304,表示从客户端缓存中取值,服务器不再返回值。
Etag值资源文件对应的hash值:if-none-match,web服务器响应请求时,告诉浏览器当前资源在服务器的唯一标识(生成规则由服务器决定),if-none-macth发现资源具有Etage声明,则再次向web服务器请求时带上Etag的值,
web服务器收到请求后发现Etag的值与被请求资源的相应校验进行对比,决定是否命中协商缓存。
ETag和Last-modified的作用和区别:
- Etag优于Last-modified,last-modified的时间单位是秒,如果某个文件在1秒内改变多次,last- modified不会体现出来修改时间,Etag每次都会改变hash值确保精度。
- 在性能上,Etag逊于last- modified,last-modified只需要记录最后修改时间,而Etag需要通过服务器算法计算出hash值。
4. Http协议规定的协议头和请求头有什么?
请求头信息:
accept:浏览器告诉服务器所支持的数据类型
host:浏览器告诉服务器想访问服务器的哪台主机
referer:浏览器告诉服务器是从哪里来的(防盗链)
user-agent:浏览器类型、版本信息
date:浏览器告诉服务器什么时候访问的
cookie
x-request-with:请求方式
响应头信息:
location:告诉浏览器找谁
server:告诉服务器类型
content- type:告诉浏览器返回的数据类型
refresh:控制定时刷新
相关文章:
HTTP【总结】
1. 当用户在浏览器输入网址回车之后,网络协议都做了哪些工作? 首先解析出URL中的域名,根据域名获取对应的ip地址,从浏览器缓存中查看,如果没有则从本机域名解析文件hosts中查看,还没有则从DNS的层层解析。…...
统计子岛屿
统计子岛屿 关于岛屿的相似题目: 岛屿数量 – 二维矩阵的dfs算法封闭岛屿数量 – 二维矩阵的dfs算法统计封闭岛屿的数目统计子岛屿不同岛屿的数量 class CountSubIslands:"""floodFill 算法1254. 统计子岛屿https://leetcode.cn/problems/count-su…...
docker介绍、安装及卸载
官网安装教程:https://docs.docker.com/engine/install/centos/ ####### Docker介绍 ########## 镜像(image):Docker镜像就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。它也相当于是一…...

【EI/SCOPUS会议征稿】第二届环境遥感与地理信息技术国际学术会议(ERSGIT 2023)
第二届环境遥感与地理信息技术国际学术会议 2023 2nd International Conference on Environmental Remote Sensing and Geographic Information Technology 第二届环境遥感与地理信息技术国际学术会议(ERSGIT 2023)定于2023年11月10-12日在中国陕西西安…...

LabVIEW应用开发——LabVIEW2019保姆级介绍、安装、第一个程序
一、前言 LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而Lab…...
《TCP/IP网络编程》阅读笔记--Timewait状态和Nagle算法
1--Timewait状态 对于服务器端/客户端,当一端结束连接时,会向另一端发送 FIN 消息;两端的在经过四次挥手过程后,其 Socket 不会马上消除,而是会处于一个 Time-wait 状态的阶段,此时 Socket 拥有的端口号并没…...

Python常用IDE选择与安装
1、IDE简介 选择一款高效而又顺手的IDE学习或使用Python,可以让你的开发之路充满激情和动力,让你真正投入其中。 常见的Python的IDE工具有: PyCharm 由JetBrains开发的Python IDE,功能强大,支持调试、代码自动完成、…...

Docker从认识到实践再到底层原理(三)|Docker在Centos7环境下的安装和配置
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…...

Jmeter系列-Jmeter面板介绍和常用配置(2)
Jmeter面板介绍 常用菜单栏 分布式运行相关的 选项,可以打开日志,修改语言、函数助手对话框,还有管理插件 常用的图标 从左到右依次 新建测试计划选择测试计划模板创建一个新的测试计划打开jmeter脚本保存jmeter脚本剪切复制粘贴展开目录…...
2023高教社杯数学建模D题思路分析 - 圈养湖羊的空间利用率
# 1 赛题 D 题 圈养湖羊的空间利用率 规模化的圈养养殖场通常根据牲畜的性别和生长阶段分群饲养, 适应不同种类、不同阶段 的牲畜对空间的不同要求,以保障牲畜安全和健康;与此同时,也要尽量减少空间闲置所造成 的资源浪费。在实际…...
自动部署工具PM2
在现代应用程序开发中,自动化部署是一项至关重要的任务。它可以帮助我们快速、可靠地将代码部署到生产环境中,并确保应用程序的持续运行。在这方面,PM2(Process Manager 2)是一个备受欢迎的自动部署工具。本文将详细介…...
软考高级系统架构设计师系列案例考点专题三:数据库系统考点梳理及精讲
软考高级系统架构设计师系列案例考点专题三:数据库系统考点梳理及精讲 一、ORM技术二、数据库分类比较三、并发控制四、封锁协议五、不规范化带来的四大问题六、反规范化技术七、分布式数据库八、数据仓库集成数据库系统知识在架构设计师的考试里时有考查,主要考查的是数据库…...

【 XXL-JOB】 XXL-JOB任务分片
文章目录 前言xxl-job 分片广播任务的详细教程创建任务编写任务代码分片参数设置执行任务查看任务执行结果示例1示例2 总结 前言 xxl-job 是一个分布式任务调度平台,支持定时任务和分片任务。其中,分片任务可以将一个大任务拆分成多个小任务,…...
RK3568开发笔记-SATA接口调试
目录 前言 一、sata接口介绍 物理连接 数据传输速度...

异步编程 - 09 Spring框架中的异步执行_@Async注解异步执行原理源码解析
文章目录 概述小结好文推荐 概述 在Spring中调用线程将在调用含有Async注释的方法时立即返回,Spring是如何做到的呢?其实是其对标注Async注解的类做了代理,比如下面的类Async-AnnotationExample。 public class AsyncAnnotationExample {As…...

django-项目
一、RESTful设计风格 基础概念 全称:Representational State Transfer 1.资源 网络上的一个实体,每个资源都有一个独一无二的URL与之对应;获取资源-直接访问URL即可 2.表现层 资源的表现形式 如HTML、xml、JPG、json等 3.状态转化 …...

红日靶场五(vulnstack5)渗透分析
环境搭建 win7 192.168.111.132(仅主机) 192.168.123.212(桥接) .\heart p-0p-0p-0win2008 ip: 192.168.111.131(仅主机) sun\admin 2020.comkali ip: 192.168.10.131(nat)vps&…...
掌握Gitflow的一些进阶用法
1、自定义分支命名约定: 默认情况下,GitFlow使用一套分支命名约定,如feature/、release/和hotfix/等前缀。然而,你可以根据项目的需求自定义分支名称。例如,你可以在分支名称中包含项目、功能或团队成员的信息&#x…...
算法随笔:各种经典最短路算法的简要比较总结
有多种最短路径的应用场景,它们需要用到不同的算法来解决。除了贪心最优搜索之外,其他都是最优性算法,即得到的解都是最短路径。其中m是边的数量,n是点的数量。 问题边权算法时间复杂度一个起点,一个终点非负数&#…...

concrt140.dll怎么下载,concrt140.dll修复工具(修复精灵下载)一键修复问题
今天,我将为大家介绍一个非常常见的问题:由于找不到concrt140.dll,无法继续执行代码怎么办。这个问题可能会让很多网友感到头疼,但是别担心,我会为大家提供5种最全详细的恢复方法。在接下来我将详细介绍这些问题及其解决方法。希望…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...