计算机网络:http协议

news2024/9/23 13:21:46

计算机网络:http协议

  • 一、本文内容与前置知识点
    • 1. 本文内容
    • 2. 前置知识点
  • 二、HTTP协议工作简介
    • 1. 特点
    • 2. 传输时间分析
    • 3. http报文结构
  • 三、HTTP版本迭代
    • 1. HTTP1.0和HTTP1.1主要区别
    • 2. HTTP1.1和HTTP2主要区别
    • 3. HTTPS与HTTP的主要区别
  • 四、参考文献

一、本文内容与前置知识点

1. 本文内容

HTTP自己用到的状态码,方法,HTTP各版本区别。

2. 前置知识点

  1. c++关于指针和内存分配知识点

二、HTTP协议工作简介

1)面向事物的应用层协议。
2)请求-应答模型,这部分可以理解为同步通信。
工作图解如下
参考《计算机网络》6.4.3 超文本传输协议HTTP p267
在这里插入图片描述

1. 特点

1)基于TCP连接:保证了数据可靠传输,所以HTTP不再需要考虑数据丢失和重传。
2)本身是无连接协议:从http协议层面来说,不存在http连接建立。
3)无状态的:服务器并记录客户访问的过程,每一个都是新的独立的http请求,简化了服务器设计,提高效率。

2. 传输时间分析

1)客户端和服务器tcp连接三次握手,第三次握手的时候会传输http请求报文。(1.5RTT时间)
2)服务器收到http请求报文之后进行数据准备,分片发送文件,需要花费时间T。
3)分片发送文件的最后一片到达的时间为1.5RTT+T+0.5RTT = 2RTT+T。
综上,一次http请求从开始到返回应答的时间是2RTT+T

在此之后会有四次挥手的连接释放过程,但是在此之前已经拿到应答了。

3. http报文结构

如下图所示:
参考《计算机网络》6.4.3超文本传输协议HTTP p271
在这里插入图片描述
1)开始行
用于区分请求报文和响应报文,会有所不同,请求报文主要是方法和URL,响应报文主要是状态码。
个人用到的常见方法

方法意义
OPTION请求一些选项信息
GET读取URL标志的星系
POST给服务器添加信息
DELETE删除URL所标志的资源

状态码
1xx表示通知消息,2xx表示成功,3xx表示重定向,4xx表示客户端出错,5xx表示服务器差错。
个人用到常见状态码

状态码含义
200OK,请求成功
400Bad Request,错误请求
404Not Found,服务器无法找到请求资源
503Service Unavailable,服务器暂时无法处理请求,因为忙碌或超载

2)首部行

3)实体主体
消息传输的载体,一般服务器返回的数据就在这个实体主题显示,在机器人API的数据请求指令中,实体主体内会包含json字符串格式的数据。

三、HTTP版本迭代

1. HTTP1.0和HTTP1.1主要区别

1)引入了长连接,一次http请求应答之后,tcp连接会继续持续一段时间,此时可以继续发送其他http请求,提高效率。
"Connections:close"代表此次http请求后会将长连接断开。
"Connections:keep-alive"代表此次http请求后还会有额外的请求,不打算断开tcp连接。
2)http1.1流水线模式(请求管线化),每个http请求不需要等待上一个请求应答就可以立刻发送,tcp连接建立后,访问所有对象都只需要一个RTT时间。但是响应必须按照请求发出顺序返回,存在头部阻塞

2. HTTP1.1和HTTP2主要区别

1)数据分帧:帧是 HTTP/2 协议中的最小单位。所有的 HTTP/2 通信都通过帧进行。每个帧都包含一个固定长度的头部(标识所属于的stream流)和一个可变长度的负载
2)引入了多路复用:有了固定长度头部之后,就可以表面这个帧属于那一个http请求流,此时头部阻塞问题解决,实现了真正的并发,所有流使用同一个tcp连接进行,

3. HTTPS与HTTP的主要区别

1)HTTPS使通过SSL\TLS进行了加密
2)端口号不同,HTTP是80默认,HTTPS443
3)HTTPS需要CA证书
4)HTTP 的连接简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身 份认证的网络协议,比 HTTP 协议安全。

四、参考文献

《计算机网络》6.4.3 超文本传输协议HTTP p267**
《计算机网络》6.4.3超文本传输协议HTTP p271**

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

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

相关文章

如何操作可以有效的防止其他人修改Excel文件?

工作中,我们经常遇到同一份表格可能需要好多人共同去完成,但是当你整理好数据发给别的同事的时候,等表格再回来的时候,你可能发现你之前设置的资料格式内容等都被修改了,遇到这种情况时,如何操作可以有效的…

Codeforces Round 970 (Div. 3)(A~H)

​​​​​题目链接​​​​​​​​​​​​​​​​​​​​​ A 当 a 为奇数的时候,无论如何配对都无法将最后一个 1 减去; 当 a 为偶数的时候,b 也偶数,自然可以内部通过加减操作变成 0;当 b 为奇数的时候&#…

观察者设计模式详解

观察者设计模式详解 文章目录 观察者设计模式详解一、定义二、观察者模式的结构三、特点四、应用场景五、实现 一、定义 **观察者设计模式(Observer Pattern)**是一种行为设计模式,也叫做 “发布-订阅模式”, 它定义了一种一对多…

ArcGIS的8个“合并”功能要分清——矢量:编辑器合并,复制粘贴,工具合并、追加、联合——栅格:镶嵌、镶嵌至新栅

​​​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 今天来看看ArcGIS中的几个涉及“合并”功能的用法。 对矢量: 包括编辑器中的合…

IOS 20 发现界面(UITableView)歌单列表(UICollectionView)实现

发现界面完整效果 本文实现歌单列表效果 文章基于 IOS 19 发现界面(UITableView)快捷按钮实现 继续实现发现界面歌单列表效果 歌单列表Cell实现 实现流程: 1.创建Cell,及在使用UITableView的Controller控制器上注册Cell&#x…

uni-app应用更新(Android端)

关于app更新,uni-app官方推荐的是 uni-upgrade-center,看了下比较繁琐,因此这里自己实现检查更新并下载安装的逻辑。 1.界面效果 界面中的弹框和 进度条采用了uView 提供的组件 2.检查更新并下载安装 一、版本信息配置在服务端&#xff0c…

【Azure Redis】Redis-CLI连接Redis 6380端口始终遇见 I/O Error

问题描述 使用Redis-cli连接Redis服务,因为工具无法直接支持TLS 6380端口连接,所以需要使用 stunnel 配置TLS/SSL服务。根据文章(Linux VM使用6380端口(SSL方式)连接Azure Redis (redis-cli & stunnel) : https://www.cnblogs.com/luligh…

Python使用turtle画笑脸

import turtle as t t.pensize(5) #设置画笔尺寸 t.color("red","yellow") #设置画笔颜色 t.begin_fill() #开始填充 t.circle(150) #绘制一个半径为100像素的圆 t.end_fill() #结束填充#画眼睛(左眼…

Leetcode - 周赛413

目录 一,3274. 检查棋盘方格颜色是否相同 二,3275. 第 K 近障碍物查询 三,3276. 选择矩阵中单元格的最大得分 四,3277. 查询子数组最大异或值 一,3274. 检查棋盘方格颜色是否相同 本题就是找规律,假设白…

x11转发远程图形界面

1、 开一个有vnc的节点 2、 开放所有用户的Xserver权限 xhost 3、X11转发 ssh hlzhang192.168.3.156 -X4、打开远程窗口 paraview在227的界面打开156的图形窗口

uniapp和vue3中使用vConsole在H5中开启移动端调试

uniapp和vue3中使用vConsole在H5中开启移动端调试 1. 安装vconsole npm install vconsole --save2. 在main.js中全局引入 重新启动项目即可

【C++】手搓实现模板类

myTamplate.h #ifndef MYTAMPLATE_H #define MYTAMPLATE_H #include <iostream> using namespace std;template<typename T> class Node {T *data; //数据域int size; //指针域int len;//实际长度 public://无参构造Node():size(10),len(0){data new T[size]…

写的一致性问题之双写模式

文章目录 1、先写mysql&#xff1a;mysql会回滚&#xff0c;而redis不会回滚2、先写redis&#xff1a; 1、先写mysql&#xff1a;mysql会回滚&#xff0c;而redis不会回滚 写入msql成功&#xff0c;写入redis也成功&#xff0c;但是后续事务提交失败&#xff0c;mysql会回滚&a…

Django学习(一)

一、创建django项目 二、修改settings.py里的配置&#xff1a; 1、修改语言和时区&#xff1a; # 语言编码 LANGUAGE_CODE zh-hansTIME_ZONE UTCUSE_I18N True# 不用时区 USE_TZ False 2、配置数据库&#xff1a; DATABASES {default: {ENGINE: django.db.backends.m…

Python中的self有什么作用

你是否曾经好奇过,为什么Python类中的方法总是有一个神秘的self参数?为什么有时它似乎可有可无,有时却又不可或缺?今天,让我们一起深入探讨Python中self的奥秘,揭开面向对象编程的神秘面纱! 目录 引言:self的重要性self的本质:实例的引用为什么需要self?self的工作原理self的…

极米科技:走出舒适圈,推动数据架构现代化升级 | OceanBase 《DB大咖说》

《DB 大咖说》第 13 期&#xff0c;邀请到了极米科技软件与创新产品线高级架构师施刘凡来进行分享。 在小红书平台上&#xff0c;“是否应将家里的电视升级为投影仪&#xff1f;”这一话题激发了上百万篇笔记的分享与推荐&#xff0c;反映出年轻群体对投影仪的偏好。随着手机、…

Java MVC

1. MVC模式 1.1. JavaBean JavaBean&#xff1a;符合特定规范的Java类&#xff0c;是一种可重用的组件 特定规范&#xff1a; public, class, 提供无参数构造方法属性private提供public的getter和setter方法 功能分类&#xff1a; 封装数据&#xff1a;数据Bean&#xff0c…

【gtokentool】什么是数字货币?怎么使用?

一、什么是数字货币 数字货币是一种基于密码学原理&#xff0c;独立于传统银行体系运行的电子货币形式。数字货币具有以下特点&#xff1a; 去中心化&#xff1a;数字货币采用去中心化的交易验证方式&#xff0c;不依赖于任何中央机构或政府。安全性高&#xff1a;通过加密算法…

STM32G474之DAC

STM32G474分别使用CORDIC硬件和“math.h”的正弦值&#xff0c;从DAC1和DAC2输出。 1、DAC特点 PA4的附加功能为DAC1_OUT1&#xff0c;无需映射&#xff0c;直接将它配置为模拟功能&#xff0c;就可以使用了。 PA6的附加功能为DAC2_OUT1&#xff0c;无需映射&#xff0c;直接将…

数据结构-栈、队列-详解

数据结构-栈、队列-详解 1.前言2.栈2.1是什么2.2函数实现struct StackStackInitStackDestroyStackPushStackSizeStackEmptyStackTopStackPop 2.3小结 3.队列3.1是什么3.2函数实现struct QueueQueueInitQueueDestroyQueueEmptyQueuePushQueuePopQueueFrontQueueBackQueueSize 3.…