首页 > 其他分享 >网络原理 HTTP与HTTPS协议

网络原理 HTTP与HTTPS协议

时间:2024-09-23 09:21:37浏览次数:3  
标签:HTTP 请求 GET 浏览器 Cookie HTTPS 原理 POST

 博主主页: 码农派大星.

    数据结构专栏:Java数据结构

 数据库专栏:MySQL数据库

JavaEE专栏:JavaEE

关注博主带你了解更多计算机网络知识

目录

1.HTTP概念

2.HTTP报文格式

3.HTTP请求 

1.首行

1.1URL 

 1.2 GET⽅法 

1.3 POST⽅法

1.4 其他⽅法 

2.请求头(header) 

2.1 关于请求报头和响应报头(header)

2.2 User-Agent(简称UA)

2.3 Referer

2.4 Cookie

3.空行  

4.正文

4.HTTP响应

认识"状态码"

1.首行

2.响应头(header)

3.空行

4.正文


1.HTTP概念

HTTP全称为超文本传输协议,是⼀种应⽤⾮常⼴泛的应⽤层协议,不仅仅能传输文本,还能传输图片,传输音频,传输视频,传输其他的各类数据,广泛应用在日常开发的各种场景.

例如:打开浏览器网页;打开手机app;后端程序,都是分布式/微服务体系结构,服务器之间的相互调用,也大概率是HTTP.

目前互联网上见到的HTTP协议,绝大部分都是HTTP/1.1版本(已经很好用了),如果要升级,要考虑成本,收益,设备兼容等情况 

并且HTTP协议,是一种典型的"一问一答模型"协议:

客户端->服务器:客户端发一个请求,服务器返回一个响应(一一对应)

2.HTTP报文格式

先解释下抓包:抓包就是通过网卡上的数据,获取到,并且解析显示出来

借助抓包工具,观察到HTTP请求/响应的详细情况,我们可以通过使用Fiddler来抓包. Fidder官方下载网址:Fiddler Classic | Original Web Capturing Tool for Windows,下载完打开Fiddler:

当我访问我的博客网页,就会出现一些抓包信息: 蓝色数据表示响应为html,Raw表示最原始的数据格式,可以查询HTTP的响应的请求。

3.HTTP请求 

HTTP的请求格式是文本格式:

1.首行

1.1URL 

俗称的"⽹址"其实就是说的URL:统⼀资源定位符

登录信息几乎见不到了,http端口默认为80 ,键值对之间用&分割,键和值之间用=分割,比如:

https://search.bilibili.com/allvt=88073156&keyword=%E9%BB%91%E6%82%9F%E7%A9%BAmod&search_source=1

 URL主要关心四个部分:IP地址(域名);端口号;层次的路径;查询字符串(在Spring MVC重点学习). 

 

 1.2 GET⽅法 

GET是最常⽤的HTTP⽅法.常⽤于获取服务器上的某个资源.在浏览器中直接输⼊URL,此时浏览器就会发送出⼀个GET请求.GET把服务器的数据放到query string(URL)中.

GET请求的特点 : ⾸⾏的第⼀部分为GET;URL的query string可以为空,也可以不为空;header部分有若⼲个键值对结构;body部分为空.

1.3 POST⽅法

POST⽅法也是⼀种常⻅的⽅法.多⽤于提交⽤⼾输⼊的数据给服务器(例如登陆⻚⾯).POST把服务器的数据放到body中

POST请求的特点: ⾸⾏的第⼀部分为POST;URL的query string⼀般为空(也可以不为空);header部分有若⼲个键值对结构;body部分⼀般不为空;body部分⼀般不为空body内的数据格式通过header中的Content-Type 指定.body的⻓度 由header中的Content-Length 指定

经典⾯试题:谈谈GET和POST的区别:

明确结论,这两个方法其实没有本质区别,但在使用习惯上,还是有区别的:

1.语义不同:  方法表示的含义:GET表示从服务器拿数据,POST表示往服务器提交数据

2.传输数据方式不同: GET传递数据,通常通过query string 把自定义数据交给服务器; POST传递数据,通常是通过body把自定义数据交给服务器

3.GET方法对应的请求,通常设计成"幂等"的;POST方法对应请求,对于"幂等性"则无要求

4.GET如果设计成幂等性,此时GET的结果是可以被缓存的;POST不设计成幂等性,POST就不应该被缓存.

错误说法:
1.GET传输数据有上限,POST没有:早期硬件资源有限,限制了URL长度,但是实际上并没有规定。
2.GET请求数据不安全,POST安全:安全是指传输的数据不容易被黑客获取到或者说获取到不容易破解。
3.GET只能传输文本数据:POST可以文本+二进制:完全可以!!

1.4 其他⽅法 

PUT与POST相似,只是PUT具有幂等特性,⼀般⽤于更新,PUT是把数据放到body中

DELETE删除服务器指定资源,DELETE是把数据放到query string中

2.请求头(header) 

2.1 关于请求报头和响应报头(header)

Host: 表⽰服务器主机的地址和端⼝.

Content-Length: 表⽰body中的数据⻓度.(没有正文则没有这个属性)

Content-Type: 表⽰请求的body中的数据格式. (没有正文则没有这个属性)

Content-Length Content-Type,如果有body但是没有这两个属性,意味着这是非法的请求/错误的请求

2.2 User-Agent(简称UA)

User-Agent 是一个 HTTP 请求头部字段,它允许网络请求标识发起请求的客户端应用程序的信息,包括应用程序的类型、版本以及正在使用的操作系统等

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36

2.3 Referer

Referer是一个 HTTP 请求头部字段,用于指示一个请求是从哪个页面发起的。这个字段通常由浏览器设置,当用户点击链接时,它会告诉服务器请求是从哪个页面(URL)跳转过来的。

2.4 Cookie

HTTP 协议中,Cookie 是服务器发送到用户浏览器并保存在本地的小块数据。它用于存储有关用户会话的信息,以便在用户浏览网站时跨多个页面请求或在后续的会话中识别用户,也就是说Cookie就属于浏览器给网站提供的一种"客户端存储数据"的机制.它是按照域名为为维度分别进行存储. 

Cookie也是键值对结构,使用; 来分割键值对,使用= 来分割键和值

为了安全,浏览器禁止网页直接访问你的电脑硬盘,浏览器并没有把路完全堵死,它允许网页通过键值对的方式(Cookie)来存储数据(本质也是储存在硬盘上),具体这样的键值对是如何储存到硬盘上的,浏览器封装好,网页本身无法干预.

首次访问某个网站,可能是不带Cookie的,在响应中就会有Set-Cookie这样的header,把一些键值对写回到浏览器这边,浏览器后续访问这个网站就会带有Cookie

Cookie来源:当用户访问一个网站时,服务器可以通过 HTTP 响应中的 Set-Cookie 向用户的浏览器发送一个或多个 Cookie

Cookie去向:当用户再次访问同一个网站时,浏览器会把之前存储的 Cookie 带上,发送回服务器。

有一个Cookie非常经典的使用场景,使用Cookie保存用户的身份信息 ,浏览器登录页面

3.空行  

请求头结束的标记

4.正文

有的http请求有,有的没有

4.HTTP响应

认识"状态码"

1)200 ok: 成功
2)404 NOT FOUND :访问资源没有找到,url可能错了
3)403 Forbidden:请求资源没有权限访问
4)405 Method not Allowed:你的服务器只支持get请求,可是你发了一个post
5)500 Internal Server Error:服务器内部错误
6)302 Move temporarily:临时重定向

1.首行

2.响应头(header)

3.空行

请求头结束的标记。

4.正文

正文内容比较长,可能是多种格式,HTML,CSS,JS,JSON,图片,字体,视频等。

标签:HTTP,请求,GET,浏览器,Cookie,HTTPS,原理,POST
From: https://blog.csdn.net/jj666mhhh/article/details/142410463

相关文章

  • 二叉搜索树(BSTree)原理及应用场景
    目录引言二叉搜索树的基本概念常见算法插入节点查找节点删除节点二叉搜索树的应用场景1.数据库索引2.符号表3.字典和词汇表4.动态集合结论引言二叉搜索树(BinarySearchTree,BST)是一种特殊的二叉树,其每个节点的值都大于其左子树中的所有节点的值,同时小于......
  • 编码器与霍尔传感器的工作原理及区别
    霍尔传感器示意图:120度安装: 60度安装:霍尔编码器示意图:工作原理:霍尔传感器:基于霍尔效应,利用霍尔元件检测磁场变化,从而确定位置和运动。当磁场发生变化时,霍尔传感器产生电压信号,用于检测转子位置或线性运动的位置。霍尔传感器通常用于无刷直流电机中,通过检测永磁体的位......
  • 关于bldc的学习笔记(三)无刷测速原理
    第一步:可以看出当只有一对级时,旋转一圈霍尔输出一个完整脉冲(一N一S)第二步:计算其中高电平的持续时间,即:t=C/Ft (其中Ft是计数频率,C为计数次数第三步:所以旋转一圈,需要的总时间为T=2*C/Ft所得出的结果就为:s/圈,倒数就为:圈/s,转化为RPM即:Ft/(2*C)*60即可值得注意的是,......
  • 《深度学习》卷积神经网络CNN 原理及其流程解析
    目录一、CNN图像原理1、了解图像的原理2、举例二、CNN图像识别1、画面不变性2、主要表现    1)平移不变性    2)尺度不变性    3)旋转不变性3、传统神经网络识别    1)数据预处理    2)特征提取    3)搭建神经网络模型......
  • 对抗攻击的详细解析:原理、方法与挑战
    对抗攻击的详细解析:原理、方法与挑战对抗攻击(AdversarialAttack)是现代机器学习模型,尤其是深度学习模型中的一个关键安全问题。其本质在于,通过对输入数据添加精微的扰动,人类难以察觉这些扰动,但它们会导致模型产生完全错误的预测。对抗攻击揭示了深度学习模型对数据中某些脆......
  • python爬虫连载 HTTP请求头
    HTTP头部信息HTTP由众多头域组成,每个头域由域名、冒号、域值三部分组成。域名是大小写无关的, 请求头:1GET代表的是请求方式,HTTP/1.1表示使用HTTP1.1协议标准。2Host头域,用于指定请求资源的Intenet主机和端口号,必须表示请求URL的原始服务器或网关的位置。HTTP/1.1请求必须......
  • AC自动机详解,原理、优化分析,代码实现
    零、前言对于模式串匹配问题,在很多基础的数据结构课程中都有涉及到,如KMP算法,BM算法,Trie。但是给定文本串,我们有多个模式串要去查询。难道要多次调用KMP/BM,或者在Trie上多次查询吗?Aho和Corasick基于Trie,对KMP进行了推广,使得Trie可以在一个文本串中识别一个关......
  • PIM-SM 协议原理
         ......
  • DM协议原理
         ......
  • 如何生成免费的HTTPS证书
    如何生成免费的HTTPS证书原创 前端赏金猎人 前端赏金猎人  2024年08月25日10:20 江苏 听全文生成免费的HTTPS证书,有多种方法可供选择,这些方法大多依赖于不同的证书颁发机构(CA)提供的免费服务。以下是一些常用的方法来生成免费的HTTPS证书:1.使用Let'sEncryptLet'......