浏览器协议TCP详解

news2024/11/26 0:54:43

浏览器协议TCP详解

浏览器进程负责存储、界面、下载等管理。在渲染进程中,运行着熟知的主线程、合成线程、JavaScript 解释器、排版引擎等。

  1. 浏览器进程处理用户在地址栏的输入,然后将 URL 发送给网络进程。
  2. 网络进程发送 URL 请求,在接收到响应数据后进行解析,接着转发给浏览器进程。
  3. 浏览器进程收到响应后,发送“提交导航”消息到渲染进程。
  4. 渲染进程开始接收网络进程发送的数据,并进行文档渲染。

http/https 协议

HTTP 协议工作于客户端-服务端架构上。

浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求。

Web 服务器有:Apache 服务器,IIS 服务器(Internet Information Services)等。

Web 服务器根据接收到的请求后,向客户端发送响应信息。

HTTP 默认端口号为 80,但是你也可以改为 8080 或者其他端口。
在这里插入图片描述

  • 浏览器正确地实现了 HTTPS 且操作系统中安装了正确且受信任的证书颁发机构;
  • 证书颁发机构仅信任合法的网站;
  • 被访问的网站提供了一个有效的证书,也就是说它是一个由操作系统信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);
  • 该证书正确地验证了被访问的网站
  • 此协议的加密层(SSL/TLS)能够有效地提供认证和高强度的加密。

TCP:

  • 三次握手
  • 四次挥手
  • TCP协议具有以下3种主要特征:
    • TCP协议是面向连接的,在任何数据实施交换之前,首先要在两台计算机之间建立连接进程。
    • 由于使用了序列号和返回通知,TCP协议使用户确信传输的可靠性。
    • TCP协议使用字节流通信号,这意味着数据被当做没有信息的字节序列来对待
    • 缓存策略: 可分为 强缓存 和 协商缓存
  • Cache-Control/Expires : 浏览器判断缓存是否过期, 未过期时, 直接使用强缓存,
    Cache-Control 的 max-age 优先级高于 Expires
  • 当缓存已经过期时,使用协商缓存
  • 唯⼀标识⽅案: Etag ( response 携带) & If-None-Match ( request 携带,上⼀次
    返回的 Etag ): 服务器判断资源是否被修改
  • 最后⼀次修改时间: Last-Modified(response) & If-Modified-Since ( request ,
    上⼀次返回的 Last-Modified )
  • 如果⼀致,则直接返回 304 通知浏览器使用缓存
  • 如不⼀致,则服务端返回新的资源

常见状态码

1xx : 接受, 继续处理
200 : 成功, 并返回数据
201 : 已创建
202 : 已接受
203 : 成为,但未授权
204 : 成功, ⽆内容
205 : 成功, 重置内容
206 : 成功, 部分内容
301 : 永久移动, 重定向
302 : 临时移动, 可使用原有URI
304 : 资源未修改, 可使用缓存
305 : 需代理访问
400 : 请求语法错误
401 : 要求身份认证
403 : 拒绝请求
404 : 资源不存在
500 : 服务器错误

get / post

  • get : 缓存 、请求长度受限 、会被历史保存记录
    无副作用(不修改资源),幂等(请求次数与资源无关)的场景
  • post : 安全 、大数据 、更多编码类型

Websocket

  • Websocket 是⼀个 持久化的协议, 基于 http , 服务端可以 主动 push
  • WebSocket用于在Web浏览器和服务器之间进行任意的双向数据传输的一种技术。WebSocket协议基于TCP协议实现,包含初始的握手过程,以及后续的多次数据帧双向传输过程。其目的是在WebSocket应用和WebSocket服务器进行频繁双向通信时,可以使服务器避免打开多个HTTP连接进行工作来节约资源,提高了工作效率和资源利用率
    兼容:
  • FLASH Socket
  • 长轮询: 定时发送 ajax
  • long poll : 发送 --> 有消息时再 response
事件       事件处理程      描述
open     ws.onopen      连接建立时触发
message  ws.onmessage   客户端接收服务端数据时触发
error    ws.onerror     通信发生错误时触发
close    ws.onclose     连接关闭时触发

实例:

<script>
let mes  = new WebSocket('ws://localhost:8080')
mes.onopen = function(e){
    console.log('开始接通')
    $('.btn-send').click(function(){
        mes.send($('.botton').btn()) // 点击发送
      })
      mes.onmessage = function(msg){ // 监听消息
        $('div').append('<span>'+ msg.data +'</span>')
      }
      $('.btn-close').click(function(){
        mes.close()  //  关闭连接
      })
}
</script>

跨域

亿点小知识:JSONP : 利用 <script>标签不受跨域限制的特点, 缺点是只能支持 get 请求

  • 设置 CORS: Access-Control-Allow-Origin:*
  • postMessag

安全

浏览器安全可分为:
Web 页面安全:同源策略、XSS 攻击、CSRF 攻击
浏览器网络安全:HTTPS

在这里插入图片描述

以上就是服务端与网络感谢大家的阅读
如碰到其他的问题 可以私下我 一起探讨学习
如果对你有所帮助还请 点赞 收藏谢谢~!
关注收藏博客 作者会持续更新…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/785048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Yolov8自动标注数据集完整教程】

Yolov8自动标注数据集完整教程 1 前言2 先手动标注数据集&#xff0c;训练出初步的检测模型2.1 手动标注数据集2.2 Yolov8环境配置2.2.1 Yolov8下载2.2.2 Yolov8环境配置 2.3 Yolov8模型训练&#xff0c;得到初步的检测模型2.3.1 训练方式 3 使用初步的检测模型实现自动数据集标…

STM32 I2C OVR 错误

一、问题 STM32 I2C 用作从机时&#xff0c;开启如下中断并启用 callback 回调函数。 每一次复位后&#xff0c;从机都可以正常触发地址匹配中断ADDR&#xff0c;之后在该中断的回调函数中启用接收中断去收取数据时&#xff0c;却无法进入RXNE中断&#xff0c;而是触发了 OVR …

《数据分析-JiMuReport08》JiMuReport报表开发-报表列数量开发限制调整

JiMuReport报表开发列数量限制调整 1.开发列数限制 JiMuReport报表在开发的时候&#xff0c;需要100-200列的数据&#xff0c;但是在设计到一定数量的时候&#xff0c;水平下拉框就不能滑动了 2.报表参数调整 col: n 在application.yml文件的jmreport配置处&#xff0c;如果想…

【C++】特殊类的设计 | 类型转换

文章目录 1. 特殊类的设计单例模式饿汉模式具体代码 懒汉模式具体代码 懒汉模式和饿汉模式的优缺点 2. C的类型转换C语言的类型转换C的类型转换static_castreinterpret_castconst_castdynamic_cast 1. 特殊类的设计 单例模式 设计模式是 被反复使用 多数人知晓 经过分类的、代…

【Docker】Docker中容器之间通信方式

文章目录 1. Docker容器之间通信的主要方式1.1 通过容器ip访问1.2. 通过宿主机的ip:port访问1.3. 通过link建立连接&#xff08;官方不推荐使用&#xff09;1.4. 通过 User-defined networks&#xff08;推荐&#xff09; 2. 参考资料 1. Docker容器之间通信的主要方式 1.1 通…

OpenCV图像处理-视频分割静态背景-MOG/MOG2/GMG

视频分割背景 1.概念介绍2. 函数介绍MOG算法MOG2算法GMG算法 原视频获取链接 1.概念介绍 视频背景扣除原理&#xff1a;视频是一组连续的帧&#xff08;一幅幅图组成&#xff09;&#xff0c;帧与帧之间关系密切(GOP/group of picture)&#xff0c;在GOP中&#xff0c;背景几乎…

前端面试题汇总大全!

文章目录 前端面试题汇总大全&#xff08;含答案超详细&#xff09;-- 持续更新一、HTML 篇1.xhtml和html有什么区别2.行内元素有哪些&#xff1f;块级元素有哪些&#xff1f; 空(void)元素有那些&#xff1f;行内元素和块级元素有什么区别3. 简述一下你对 HTML 语义化的理解&a…

sql进阶 之case表达式

case表达式 CASE表达式是SQL里非常重要而且使用起来非常便利的技术&#xff0c;我们应该学会用它来描述条件分支。本节将通过行列转换、已有数据重分组&#xff08;分类&#xff09;、与约束的结合使用、针对聚合结果的条件分支等例题&#xff0c;来介绍CASE表达式的用法。标红…

在 3dsmax 中创建电影场景

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 有时&#xff0c;通过简单的图像和简单的技术&#xff0c;我们可以创建有效的输出。在本教程中&#xff0c;您将学习如何在 3ds max 中使用三个简单图像创建电影场景。 步骤-1 让我们在 photoshop 中为场…

Java 二维码生成解析

生成二维码需要两个jar包 Download core JAR 3.5.1 ➔ With all dependencies! Download javase JAR 3.5.1 ➔ With all dependencies! 将下载后的jar包添加项目依赖 import com.google.zxing.*; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.googl…

具身智能,是机器人的“冷饭热炒”吗?

大模型正如火如荼&#xff0c;下一个AI风口就来了。 如果你关注2023世界人工智能大会等行业峰会&#xff0c;以及英伟达、微软、谷歌、特斯拉和国內科技大厂的最新发布会&#xff0c;除了“大模型”&#xff0c;应该会听到另一个高频词——具身智能。 所谓具身智能Embodied AI …

【运维】 第05课:Curl 命令最常见使用方式及案例

本课时我们主要了解 Curl 命令的使用和常见案例。在学习本课时的内容之前&#xff0c;你需要先了解 HTTP 的请求过程&#xff0c;以及 Linux 操作系统的基础知识。 首先&#xff0c;我们先来介绍一下 Curl &#xff0c;Curl 是一个Linux命令行中的工具&#xff0c;它模拟客户端…

JAVA解析EXCEL(JExcelAPI,POI,EasyExcel)

前言 文章目录 前言JExcelAPIDemo POIHSSFWorkBookXSSFWorkBookDemo SXSSFWorkBookDemo XSSFReaderDemo EasyExcelDemo demo代码&#xff1a;https://github.com/RwTo/excel-demo JAVA解析Excel 一般有三种方式 JExcelAPI POI EasyExcel JExcelAPI 官网&#xff1a;https://je…

centos安装psql客户端

前言&#xff1a;postgresql数据库采用docker部署&#xff0c;想在宿主机测试访问或数据库备份&#xff0c;则需要安装postgresql客户端&#xff0c;即psql命令 环境&#xff1a;centos7&#xff0c;x86&#xff0c;yum 下面以 postgresql-11 为例 安装镜像 yum install htt…

探索 APK 文件的内部:了解 Android 应用程序的组织结构

I. 什么是 APK 文件 APK (Android application package) 是构建和发布 Android 应用程序的关键组成部分&#xff0c;APK 文件是应用程序的打包格式&#xff0c;它将应用程序的代码、资源和清单信息组合在一起&#xff0c;以便在设备上进行安装和运行。 简称 ”安装包“&#…

Linux系统安装部署Jenkins详细教程(图文讲解)

前言&#xff1a;最近需要使用Jenkins部署项目&#xff0c;所以想出一篇关于如何使用Linux系统安装部署Jenkins的相关教程&#xff0c;整体部署过程还是挺顺利的&#xff0c;特此分享一下&#xff01; 目录 一、安装JDK11和Tomcat11 二、准备Jenkins安装包 三、部署Jenkins…

云端环境跑通BaseLine

云端环境跑通BaseLine 一、实验流程实践 1.报名 报名日期&#xff1a;2023年7月17日&#xff0c;参与AI夏令营第一期 彳 z h i 亍 c h u &#xff0c;都为第四声 \overset{zhi}{彳}\overset{chu}{亍}&#xff0c;都为第四声 彳zhi亍chu&#xff0c;都为第四声 怎么报名的&a…

C++OpenCV(7):图像形态学基础操作

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 &#x1f506; OpenCV项目地址及源代码&#xff1a;点击这里 文章目录 膨胀与腐蚀形态学基础 膨胀与腐蚀 膨胀与腐蚀是数学形态学在图像处理中最基础的操作。 膨胀操作是取每个位置领域内最大值&#xff0…

linux系统编程--线程同步

1.同步概念 所谓同步&#xff0c;即同时起步&#xff0c;协调一致。不同的对象&#xff0c;对“同步”的理解方式略有不同。如&#xff0c;设备同步&#xff0c;是指在两个设备之间规定一个共同的时间参考&#xff1b;数据库同步&#xff0c;是指让两个或多个数据库内容保持一致…

13、ffmpeg使用nvidia显卡对OAK深度相机进行解码和编码

基本思想&#xff1a;简单使用nvidia的硬件解码进行oak相机的编码和解码学习 一、在本机rtx3060配置好显卡驱动和cuda之后进行下面操作50、ubuntu18.04&20.04CUDA11.1cudnn11.3TensorRT7.2/8.6Deepsteam5.1vulkan环境搭建和YOLO5部署_ubuntu18.04安装vulkan_sxj731533730的…