计算机网路HTTP、TCP详解
HTTP
HTTP基本概念
HTTP(超文本传输协议):HTTP是在计算机世界中两点之间传输文字、图片、视频等超文本内容数据的约束与规范。
常见状态码:
2xx:报文被收到,已经在正确处理中。
3xx:重定向,资源位置发生改变,需要客户端重新发请求。
4xx:客户端错误,请求报文有问题,服务器无法处理。
5xx:服务器错误,服务器在处理内部请求时发生了错误。
HTTP常见字段
Host:客户端发送请求时用来寻找服务器的域名(域名通过DNS解析找到服务器IP,到达服务器后通过host找到需要在服务器中访问的网址)
Content-Length:表示响应的长度。HTTP请求通过回车符作为header的结束,通过Content-Length作为body的结束。
Content-Type:服务器向客户端返回值时,告诉客户端返回的格式是什么,例如UTF-8。这个值可以通过response.setHeader("Content-Type", "text/html;charset=UTF-8");
Connection(设置为Keep-Alive):表示开启HTTP长连接,只要客户端或者服务器某一端不提出断开连接的请求,那么TCP就不会断开连接。但是在HTTP2的时候已经是默认长连接了。
GET与POST
GET:在RPC的定义下,GET请求主要是从服务器中获取指定资源。
POST:在RPC的定义下,POST请求主要是从服务器中修改指定资源。
GET与POST是安全或者是幂等的吗?
GET请求:获取指定资源是一个查询操作,所以不论是请求一次还是一万次他都是同一个值,所以GET请求时安全并且幂等的操作。因为多次操作获取值是相同的,所以GET请求的返回值是会被浏览器进行缓存。
POST请求:修改指定资源,他可能是一个新增或者提交操作,所以多次请求他就会新增多条数据,那么他就不是幂等的操作。而POST请求不会被浏览器进行缓存。
HTTP缓存技术
当多次请求返回值都一样时,浏览器会将结果存储到浏览器中,这样就不需要去请求服务器了。缓存方式分为:强制缓存和协商缓存。
强制缓存:
强制缓存指只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏览器这边。
当浏览器第一次请求服务器时,如果服务器在response中添加了Cache-Control字段设置浏览器强制缓存时间。下次请求时,先判断Cache-Control到期时间,如果没到期直接从缓存中获取数据。服务器再次获取该请求时会再次设置Cache-Control时间。
协商缓存:
协商缓存就是与服务端协商过后,通过服务端告诉你是否可以使用本地缓存。服务器会响应一个304告诉客户端可以使用本地缓存。
响应头部,包含Etag存储资源唯一标识。请求头部包含if-none-match,当资源过期时会将if-none-match值设置为Etag,判断资源是否发生变化,如果不变化返回304继续使用缓存,变化返回200重新加载资源。
这种方式的优势,解决没有修改文件内容,修改时间改变问题、修改在秒级以下也能监控。所以Etag优先级比根据资源修改时间判断的优先级更高。
协商缓存这两个字段都需要配合强制缓存中 Cache-Control 字段来使用,当强制缓存没有命中之后,才会跟服务器之间进行协商缓存
HTTP1.1的特性
优点:HTTP的优点就是简单,报文通过key-value的形式存在在header或者body里面。同时他位于OSI协议的最顶层,他的下层有更高的灵活性,例如HTTPS便是在HTTP与TCP加入了SSL/TLS安全协议。HTTP广泛的使用,不论手机端还是PC端都是通过HTTP进行请求。
缺点:HTTP的两大缺点,无状态(需要重复验证)与明文传输(不安全)。
无状态:
无状态的好处就是服务器可以不用处理更多资源,坏处在于关联操作时每次都需要进行验证(登录->加入购物车->下单->支付。每个过程都需要验证身份信息)。我们通过Cookie(服务器发给浏览器一个凭证)可以解决这个问题。
明文传输:
HTTP的信息不安全,写在url上或者Body里面,通过抓包就可以获取数据了。HTTPS通过SSL/TLS安全协议对数据进行加密解决该问题。
HTTPS与HTTP
HTTPS对比HTTP的主要改变就是变的更加安全,通过在TCP协议中添加SSL/TLS协议从而进行信息加密、校验机制、身份证书解决了安全问题。
HTTPS通过对称加密(只使用公钥验证)+非对称加密(公钥私钥一起验证)、摘要算法+数字签名、数字证书(权威机构申请)三种方式共同保证HTTPS的安全性。
HTTP1.0/1.1/2的演变
HTTP1.1对比HTTP1.0的优势是支持长连接、管道。
HTTP2(基于HTTPS)对比HTTP1.1的优势是数据安全,性能上支持二进制格式、并发传输、服务器推送。
TCP
三次握手四次挥手
三次握手(客户端与服务端状态变化也需要牢记):
为什么不是是两次握手
两次握手会导致历史连接,避免资源的浪费。理论上三次连接就能避免任何问题,所以不需要四次连接。
2.25分讲解什么是历史连接
TCP如何解决丢包问题与乱序问题
四次挥手
为什么要有超时等待状态?
因为当在第四次挥手时,如果ACK包发送失败,而客户端已经关闭。那么服务端将一直处于最后确认状态。所以,超时等待状态是为了预防ACK包发送失败所设置的状态。
相关文章:
计算机网路HTTP、TCP详解
HTTP HTTP基本概念 HTTP(超文本传输协议):HTTP是在计算机世界中两点之间传输文字、图片、视频等超文本内容数据的约束与规范。 常见状态码: 2xx:报文被收到,已经在正确处理中。 3xx:重定向…...
小程序未来趋势预测:技术革新与市场前景
一、引言 在数字化转型加速的时代,小程序作为一种轻量级、无需下载安装的应用形式,凭借其快速开发、易于使用的特点,迅速崛起并成为企业和开发者拓展业务的重要工具。随着移动互联网的进一步普及和用户对便捷应用体验的需求增长,…...
JavaEE初阶——计算机工作原理
一、什么是JavaEE JavaEE(Java Platform,Enterprise Edition)是sun公司(2009年4月20日甲骨文将其收购)推出的企业级应用程序版本。这个版本以前称为 J2EE。能够帮助我们开发和部署可移植、健壮、可伸缩且安全的服务器…...
Web前端ui框架
文章目录 Element简介 Ant Design vue简介关键特点: iview简介 Element 官网:https://element.eleme.cn/#/zh-CN/component/installation添加链接描述 简介 Elementui 一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库 Ant Design …...
炸弹 (boom.c)
炸弹 (boom.c) 时间限制: 800ms 内存限制: 256000KiB 进度: 57/12406 0.5% 题目描述 出题助教: Sakiyary 验题助教: Corax、XiEn、ErinwithBMQ、runz、MacGuffin、Bob 维多利亚的腐烂荒野上出现了 N 个魔物,你和小维需要抓紧时间调配炸弹对付它们。 荒野可以视…...
【C语言】可移植性陷阱与缺陷(八): 随机数的大小
在C语言编程中,随机数的生成和使用是一个常见的需求。然而,由于不同平台上的C标准库实现可能存在差异,随机数的生成和使用也可能面临可移植性问题。本文将深入探讨C语言中随机数的大小与可移植性相关的陷阱与缺陷,并提供相应的解决…...
SSL VPN
SSL VPN 是什么? 是采用SSL/TLS协议来实现远程接入的一种轻量级 VPN 技术。利用 SSL 协议提供的基于证书的身份认证、数据加密和消息完整性验证机制,可以为应用层之间的通信建立安全连接。因为 SSL 协议内置于浏览器中,使用 SSL VPN 可以免于…...
C语言:函数
目录 1.函数的解释 2.C语言函数的分类 2.1库函数 2.2自定义函数 2.2.1自定义函数的语法格式 2.2.2自定义函数的实践 (1)第一题:欢迎光临 (2)第二题 打印数字的平方 编辑 (3)第三题 计算和 3.函数的参数 3.1值传递的表现 --- 形参 3.2地址传递的表现 -…...
Vue 环境配置与项目创建指南
1. 前置要求 在开始配置 Vue 开发环境之前,需要确保以下工具已安装: Node.js:Vue 的构建工具依赖 Node.js。 npm 或 yarn:Node.js 自带 npm 包管理工具,也可以选择安装 yarn。 安装 Node.js 前往 Node.js 官网 下…...
关于物联网的基础知识(三)——物联网技术架构:连接万物的智慧之道!连接未来的万物之网!
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于物联网的基础知识(三&a…...
iOS - Tagged Pointer
1. 基本结构 // Tagged Pointer 的内存布局 union TaggedPointer {uintptr_t bits; // 完整的指针值struct {uintptr_t data : 60; // 数据部分uintptr_t tag : 4; // 类型标记};// 扩展类型struct {uintptr_t extData : 52; // 扩展数据uintptr_t extTag : …...
基于SpringBoot的音乐网站与分享平台
基于SpringBoot的音乐网站与分享平台 摘要1. 研究背景2.研究内容3.系统功能 3.1前台首页功能模块3.2在线听歌功能模块3.3后台登录功能模块3.4在线听歌管理模块 4.部分功能代码实现5.源码分享(免费获取) 需要源码联系我即可(免费获取)~ ??大家点赞、收藏、关注、评论啦 、查…...
【机器学习篇】 科技异次元的超强 “魔杖”,开启奇幻新程
一起开启这场旅行吧,关注博主,点赞支持不迷路,下面一同欣赏本篇的美妙吧!! ! 博主主页: 羑悻的小杀马特.-CSDN博客 在当今科技飞速发展的时代,机器学习宛如一把来自科技异次元的超强…...
opencv CV_TM_SQDIFF未定义标识符
opencv CV_TM_SQDIFF未定义标识符 opencv4部分命名发生变换,将CV_WINDOW_AUTOSIZE改为WINDOW_AUTOSIZE;CV_TM_SQDIFF_NORMED改为TM_SQDIFF_NORMED。...
OneFlow的简单介绍
OneFlow 是北京一流科技有限公司旗下的采用全新架构设计的开源工业级通用深度学习框架。以下是关于 OneFlow 的详细介绍: 本篇文章的目录 特点 功能 应用场景 发展历程 特点 简洁易用的接口:为深度学习相关的算法工程师提供一套简洁易用的用户接口…...
如何配置【Docker镜像】加速器+【Docker镜像】的使用
一、配置Docker镜像加速器 1. 安装/升级容器引擎客户端 推荐安装1.11.2以上版本的容器引擎客户端 2. 配置镜像加速器 针对容器引擎客户端版本大于1.11.2的用户 以root用户登录容器引擎所在的虚拟机 修改 "/etc/docker/daemon.json" 文件(如果没有…...
《OpenCV》——模版匹配
文章目录 什么是模版匹配?函数介绍实例 什么是模版匹配? 模板匹配是在一幅图像中寻找与另一幅模板图像最匹配部分的技术。OpenCV 提供了多种模板匹配的方法,它在目标检测、物体识别等众多计算机视觉任务中有广泛的应用。例如,你有…...
【网络安全技术与应用】(选修)实验3 网络侦察
一、实验目的 培养学生综合运用搜索引擎、Whois数据库等手段对目标站点进行侦查的能力,了解站点查询常用的信息源及搜索工具,熟练掌握常见搜索工具的功能及使用技巧。培养学生使用搜索引擎在互联网查找特定设备的能力,熟悉联网设备搜索引擎的功能,熟练掌握设备搜索引擎的使…...
基于XGBoost的集成学习算法
目录 一、XGBoost原理1.1 提升方法(Boosting)1.2 提升决策树 (BDT)1.3 梯度提升决策树 (GBDT)1.4 极限梯度提升(XGBoost)1.4.1 XGBoost改进1.4.2 XGBoostcsklearn实现1.4.3 XGBoost回…...
【84键矮轴无线键盘】个人使用经历
推荐: 前行者MK84键(理由:价格实惠,键位布局好,其他都是可接受程度)K3 max(理由:除了短命的续航、脚垫容易脱落,已无明显短板) 我需要一把在小巧、舒适的主力…...
基于Arduino的FPV头部追踪相机系统
构建FPV头部追踪相机:让你置身于遥控车辆之中! 在遥控车辆和模型飞行器的世界中,第一人称视角(FPV)体验一直是爱好者们追求的目标。通过FPV头部追踪相机,你可以像坐在车辆或飞行器内部一样,自由…...
Flutter:邀请海报,Widget转图片,保存相册
记录下,把页面红色区域内的内容,转成图片后保存到相册的功能 依赖 # 生成二维码 qr_flutter: ^4.1.0 # 保存图片 image_gallery_saver_plus: ^3.0.5view import package:demo/common/index.dart; import package:ducafe_ui_core/ducafe_ui_core.dart; i…...
CSS——16. nth—child序列选择器1
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>nth-child选择器</title><style type"text/css">/* 选择的是li的父元素(ul)中的第9个li子元素 */li:nth-child(9){color: red…...
【HarmonyOS 5.0】从0到1开发购物应用App(二):登录页对接口
【HarmonyOS Arkts笔记】http网络请求封装 【HarmonyOS Arkts笔记】ohos.data.preferences用户首选项实现存储信息 登录页 点击登录按钮调用login()方法 import { promptAction, router } from kit.ArkUI; import loginApi from "../../api/login" import Prefere…...
asp.net core webapi中的数据注解与数据验证
在这一课中,主要讲解了如何在 Web API 中使用数据注解(Data Annotations)和进行数据验证,以确保请求数据的有效性和完整性。 在 Web API 中,数据验证是确保客户端传递的数据符合业务规则和格式要求的关键步骤。数据注…...
VulnHub—potato-suncs
使用命令扫描靶机ip arp-scan -l 尝试访问一下ip 发现一个大土豆没什么用 尝试扫描一下子域名 没有发现什么有用的信息 尝试扫描端口 namp -A 192.168.19.137 -p- 尝试访问一下端口,发现都访问不进去 查看源代码发现了网页的标题 potato,就想着爆破一下密码 hydr…...
uniapp 微信小程序 自定义日历组件
效果图 功能:可以记录当天是否有某些任务或者某些记录 具体使用: 子组件代码 <template><view class"Accumulate"><view class"bx"><view class"bxx"><view class"plank"><…...
云架构Web端的工业MES系统设计之区分工业过程
云架构Web端的工业MES系统设计之区分工业过程 在当今数字化浪潮席卷全球的背景下,制造业作为国家经济发展的重要支柱产业,正面临着前所未有的机遇与挑战。市场需求的快速变化、客户个性化定制要求的日益提高以及全球竞争的愈发激烈,都促使制造企业必须寻求更加高效、智能的生产…...
Harbor 仓库部署(docker-compose 部署方式)
一、 安装的前提条件 硬件 资源 最低 推荐 cpu2C4C内存4G8G硬盘40G160G 软件 软件 版本 描述 dockerv17.0.6-ce 安装参考官方文档 Install Docker Engine | Docker Documentation docker-composev1.18.0 安装参考官方文档 Overview | Docker Documentation Openssllatest…...
机器学习基础-支持向量机SVM
目录 基本概念和定义 1. 超平面(Hyperplane) 2. 支持向量(Support Vectors) 3. 线性可分 4. 边界 SVM算法基本思想和分类 基本思想 间隔最大化 间隔(Margin) 软边距 SVM 核函数的概念 基本概念…...
卸载wps后word图标没有变成白纸恢复
这几天下载了个wps教育版,后头用完了删了 用习惯的2019图标 给兄弟我干没了??? 其他老哥说什么卸载关联重新下 ,而且还要什么撤销保存原来的备份什么,兄弟也是不得不怂了 后头就发现了这个半宝藏博主&…...
mongodb==安装prisma连接
官网下载mongodb,解压安装 Download MongoDB Community Server | MongoDB 修改bin/mongod.cfg # mongod.conf# for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/# Where and how to store data. storage:dbPat…...
python代码实现了一个金融数据处理和分析的功能,主要围绕国债期货及相关指数数据展开
# 忽略某些模块的提示信息 import warnings warnings.filterwarnings("ignore") # 在全局配置中添加RQData账号信息 import rqdatac as rq from typing import List import pandas as pd import numpy as np import re from datetime import datetime, timedelta,tim…...
声音是如何产生的
一、音频概述 RTMP中一般音频采用aac编码,采样率为44100HZ, 每帧1024采样,帧率43,23.2ms一帧 RTC中一般音频采用opus编码,采样率为48000HZ,每帧480采样,帧率100,10ms一帧 通道数(c…...
Matlab回归预测大合集(不定期更新)-188
截至2025-1-2更新 1.BP神经网络多元回归预测(多输入单输出) 2.RBF神经网络多元回归预测(多输入单输出) 3.RF随机森林多元回归预测(多输入单输出) 4.CNN卷积神经网络多元回归预测(多输入单输…...
CUDA编程【7】 线程束
文章目录 线程束和线程块线程束线程块 线程束的分化问题线程束分化(Warp Divergence)线程束分化的执行机制如何避免线程束的分化 线程束和线程块 线程束 线程束是SM中基本的执行单元当一个网格被启动(即一个核函数被启动)&#…...
nodejs:nodejs的技巧有哪些(2)
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者构建高性能的网络应用。 1. 使用异步编程,利用 async/await 来处理异步操作,使代码更清晰、易读。 const fetchData async () > { const data await getDataFrom…...
构建数字化校园:定义与意义
随着信息技术的快速发展,"数字化校园"这一概念逐渐成为教育领域内热议的话题。数字化校园是指利用先进的信息技术手段,如互联网、大数据、云计算等,对学校的教学、科研、管理和服务等方面进行全面升级和优化的过程。它不仅改变了传…...
LabVIEW语言学习过程是什么?
学习LabVIEW语言的过程可以分为几个阶段,每个阶段的重点内容逐步加深,帮助你从入门到精通。以下是一个简洁的学习过程: 1. 基础入门阶段 理解图形化编程:LabVIEW是一种图形化编程语言,与传统的文本编程语言不同&am…...
阿里云 人工智能与机器学习
阿里云的 人工智能(AI)与机器学习(ML) 服务为企业提供了全面的AI解决方案,帮助用户在多个行业实现数据智能化,提升决策效率,推动业务创新。阿里云通过先进的技术和丰富的工具,支持用…...
NUTTX移植到STM32
STM32移植NUTTX 1. Ubuntu下搭建开发环境1.1 先决条件1.2 下载 NuttX1.3 使用Make 进行编译1.4 烧录运行 2.通过NUTTX点亮LED2.1 部署操作系统2.2 修改配置文件2.3 编译运行程序 开发板:DshanMCUF407 官方开发文档:安装 — NuttX latest 文档 参考文档&…...
.NET 9.0 WebApi 发布到 IIS 详细步骤
微软表示,.NET 9 是迄今为止性能最高的 .NET 版本,对运行时、工作负载和语言方面进行了 1,000 多项与性能相关的改进,并采用了更高效的算法来生成更好的代码。 .NET 9 是 .NET 8 的继任者,特别侧重于云原生应用和性能。 作为标准期…...
麒麟 kylin v10 server 升级openssh 9.9p1
准备升级工作 yum install gcc make perl zlib zlib-devel pam pam-devel备份原有的ssh目录,以备后用 cp -r /etc/ssh /etc/ssh.bak cp /etc/pam.d/sshd /etc/pam.d/sshd.before cp /etc/ssh/sshd_config /etc/ssh/sshd_config.before解压源码压缩包 tar -zxf o…...
ollama+FastAPI部署后端大模型调用接口
ollamaFastAPI部署后端大模型调用接口 记录一下开源大模型的后端调用接口过程 一、ollama下载及运行 1. ollama安装 ollama是一个本地部署开源大模型的软件,可以运行llama、gemma、qwen等国内外开源大模型,也可以部署自己训练的大模型 ollama国内地…...
设计模式 行为型 策略模式(Strategy Pattern)与 常见技术框架应用 解析
策略模式(Strategy Pattern)核心思想是将算法的实现从使用该算法的类中分离出来,作为独立的对象,通过接口来定义算法家族,这样就可以很容易地改变或扩展算法。通过这种方式,可以避免在客户端代码中使用大量…...
2025资源从哪里来!
方案规划告诉你资源最好的答案? 方案一、如果你不知道啥资源可以到这里面找到初步的答案? 哔哩哔哩 (゜-゜)つロ 干杯~-bilibili 在这个网站你可以找到你对应的专业-对应的路线-对应的资源-对应的百度网盘里面全是免费的资源------------------惊喜不&…...
Alist-Sync-Web 网盘自动同步,网盘备份相互备份
Alist-Sync-Web 一个基于 Web 界面的 Alist 存储同步工具,支持多任务管理、定时同步、差异处理等功能。 如果好用,请Star!非常感谢! GitHub Gitee DockerHub 功能特点 📱 美观的 Web 管理界面🔄 支持多任…...
【FlutterDart】 listView.builder例子二(14 /100)
上效果图 上代码: import package:flutter/material.dart;class ListRoles extends StatelessWidget {ListRoles({super.key});final List<String> entries <String>[, -, *, /];final List<int> colorCodes <int>[600, 500, 100, 50];o…...
《shared_ptr源码剖析》
【shared_ptr导读】上一节,我们为大家介绍了unique_ptr的底层原理和实现。相对于unique_ptr,shared_ptr也是被大家广泛使用的智能指针,shared_ptr内部的原理是怎样的?shared_ptr是多线程安全的吗? 本文将以Centos标准库…...
关于markdown实现页面跳转(调查测试:csdn(博客编写效果、发布效果)、typroa中md转pdf的使用情况)
一-方法介绍 [点击跳转到标题0](#1) <a href"#2">正文2</a>### <span id"2">标题0</span>二、跳转测试区 点击跳转到标题0 正文2 三、测试结果 场景MDspan-可标题写博客时候,右侧显示区效果可以发布博客的效果可以…...