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种最全详细的恢复方法。在接下来我将详细介绍这些问题及其解决方法。希望…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
