[计算机网络]十五、http协议

本文详细介绍了HTTP协议的基本概念,包括URL、HTTP的工作原理,重点解析了HTTP报文的结构,请求与响应的方法,如GET与POST的区别。此外,还探讨了HTTP的无状态性和持久性连接。接着,文章转向HTTPS,讲解了其加密原理、数字认证、中间人攻击以及工作流程,最后简述了HTTP代理的概念。
摘要由CSDN通过智能技术生成

目录

1、HTTP简介

1.1、什么是URL

1.2、什么是超文本传输协议HTTP?

2、HTTP的工作原理(访问www.baidu.com背后发生了什么)

2.1、HTTP协议版本(常考)

2.1.1、http方法

2.2、非持久性连接和持久性连接(传输层)

2.2.1、HTTP的无状态性

2.2.2、HTTP的有状态性

3、HTTP报文结构

3.1、请求报文

3.1.1、请求报文中有什么东西。首部字段有什么。

3.1.2、请求报文中的方法

3.1.3、POST和GET的区别

3.2、响应报文

3.3、响应报文中的状态码 

3.3.1、常见的状态码以及含义

3.3.2、状态码200和304的区别

3.3.3、403

3.4、用go搭建一个小网站

3.5、首部字段或消息头

3.6、HTTP代理

4、HTTPS

4.1、HTTPS的加密原理

4.2、数字认证

4.2.1、中间人攻击

4.3、HTTPS的工作流程


1、HTTP简介

什么是超文本?

包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又称网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。

http:超文本传输协议(hyper text transfer protocol)。

作用:在网页上传输web网页。

http协议是在浏览器和web服务器之间使用,用来传输网页。所有的浏览器都懂http协议。;所有的web服务器:nginx、tomcat、IIS、python web、go web框架、jave web框架都能读懂http协议。

1.1、什么是URL

URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某个一文档(例如以html结尾的文档)。URL由协议、主机和端口(默认为80)以及文件名构成。如:

1.2、什么是超文本传输协议HTTP?

是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。

2、HTTP的工作原理(访问www.baidu.com背后发生了什么)

 

序号7和8要调换一下顺序。因为有长连接(现在用的是1.1(用的人数多一些)和2.0版本(新一些))和短连接(以前http协议用的是0.9版本,不支持长连接)

  • 长连接:长时间连接--》保持一段时间,然后再四次断开。比如:ngxin中就是保持65秒然后断开
  • 短连接:短时间连接--》事情完成就进行四次断开。

2.1、HTTP协议版本(常考)

  • 0.9版本  不支持长连接  引入了GET方法
  • 1.0版本  引入了POST HEAD方法
  • 1.1版本  支持长连接,传输的数据是文本格式(现在还是主流版本) 引入了PUT、OPTIONS、DELETE等方法,引入了持久连接,即长连接
  • 2.0版本  比较新的,速度更加快,数据格式是二进制,多路复用(提升效率,吞吐快)

在1.1之前,每次请求都会新建一个TCP连接(大量的浪费了资源)。

即下面的非持久性连接和持久性连接:

2.1.1、http方法

  • GET     请求获取  浏览器默认参数只能放在url中 /sc?username=root&passwd=123456,不会携带body数据
  • POST    新增   可以携带body数据
  • PUT     修改
  • DELETE  删除
  • CONNECT 连接
  • OPTIONS 查看服务器端的参数,比如支持哪些方法
  • HEAD  请求头

2.2、非持久性连接和持久性连接(传输层)

2.2.1、HTTP的无状态性

定义:是指同一个客户端(浏览器)第二次访问同一个Web服务器上的页面时,服务器无法知道这个客户曾经访问过。HTTP的无状态性简化了服务器的设计,使其容易支持大量并发的HTTP请求。

web服务器端的nginx不知道你的请求是第一次来的请求,还是第二次。即不知道你是新的请求还是旧的请求。(可以用新老用户来理解,无状态性即每次都是新用户;有状态性即第二次来就是老用户了)

2.2.2、HTTP的有状态性

什么是Http无状态?Session、Cookie、Token三者之间的区别 - 翎野君 - 博客园

定义:服务器收集客户端的数据,记录它的信息,通过这些信息可以判断你是老用户还是新用户。

session和cookie技术可以保留用户的信息。都有一个过期时间。

用生活的例子来解释什么是Cookie和Session:

健身房的会员卡(Cookie)和人脸识别系统(Session)。

  • Cookie:Web服务器让浏览器保存用户的信息。信息保存到客户端,放在浏览器的Cookie(存放数据的地方)。比作会员卡是因为会员卡会要自己携带,等进健身房,你掏出会员卡,人家才知道你是老用户。
  • Session:用户的信息保存在服务器端,可以放在数据库中,也可以放在内存中的一个数结构中。获取信息的时候,可以到Session中取查找,要是查得到就是老用户。查不到就是新用户。比作人脸识别系统,是因为人脸识别系统的数据都是存放在服务器端的,我们只需要人过去就能够识别是不是新用户,不需要我们携带什么证明自己是老用户的东西。

现在流行使用的token验证。它会将token放在url的参数后面。

3、HTTP报文结构

3.1、请求报文

即从客户端(浏览器)向Web服务器发送的请求报文。报文的所有字段都是ASCII码。(因为http1.1是纯文本格式的)

根据《图解HTTP》书中所写,通常,报文主体等于实体主体。只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。
我们拆开理解:
报文主体指HTTP报文本身的主体部分。那报文主体的作用是什么?HTTP报文的主体用于传输请求或响应的实体主体。
理解实体主体要先知道什么是实体,实体作为请求或响应的有效载荷被传输,其内容由实体首部和实体主体组成。(实体首部会放在报文首部之中)
所以通常情况下报文主体等于实体主体。

支持压缩,会让客户能够更快的加载网页提高用户的服务质量,但是会多是消耗服务器的资源。

这个表示自己用的什么途径(浏览器啥的)访问的服务器。 

3.1.1、请求报文中有什么东西。首部字段有什么。

HTTP 首部字段详细介绍 - 超超boy - 博客园

在请求中,HTTP 报文由方法、URI、HTTP 版本、HTTP 首部字段等部分构成。

  • host
  • user-agent
  • method
  • http1.1
  • URL
  • ACCEPT

Cookie属于可选字段。

3.1.2、请求报文中的方法

3.1.3、POST和GET的区别

get请求的数据会暴露在地址栏中,而POST请求则不会。GET方法携带的数据放在URL里,不能够携带非常多的参数;但是POST方法可以通过body部分从而携带的数据更加多。

  • URL形式
  • 传输数据的大小
  • 安全性

3.2、响应报文

即从Web服务器到客户机(浏览器)的应答。报文的所有字段都是ASCII码。

3.3、响应报文中的状态码 

状态码(Status-Code):是响应报文状态行中包含的一个3位数字,指明特定的请求是否被满足,如果没有满足,原因是什么。状态码分为以下五类:

3.3.1、常见的状态码以及含义

 

3.3.2、状态码200和304的区别

在请求报文中,有这个一个字段"If-Modified_since"。在响应报文中,有这一个字段叫做"Last-Modified"。这个字段会记录发出数据的时间,并且判断是200还是304都是要依靠这两个字段的时间来决定。

在嗅探抓包过程中,常见的有两种200和304。这两个状态码都关系到能否获取重要信息。当客户第一次请求服务器资源,服务器成功返回资源,这时状态码为200。所以,状态码为200的数据包往往包含用户从服务器获取的数据。

每个资源请求完成后,通常会被缓存在客户端,并会记录资源的有效时间和修改时间。当客户再次请求该资源,客户端首先从缓存中查找该资源。如果该资源存在,并且在有效期,则不请求服务器,就不会产生对应的请求数据包。

如果不在有效期,客户端会请求服务器,重新获取。服务器会判断修改时间,如果没有修改过,就会返回状态码304,告诉客户端该资源仍然有效,客户端会直接使用缓存的资源。针对304的响应,渗透人员可以分析对应的请求包,获取资源路径。如果该资源不限制访问,就可以直接请求获取。否则,就需要进行Cookie劫持,进行获取。

对于浏览器来说,若是原网页数据没有发生改变的情况下,我们第二次请求(第一次和第二次时时间差在有效时间以内)的时候,点击"刷新",返回的状态码是304。按"Ctrl+F5"(强制刷新)返回的状态码才是200。若是第二次请求的时候,原网页数据发生了改变,那么不管是刷新还是强制刷新,返回的状态码都是200。

3.3.3、403

若是我们把nginx里的网页文件的权限设置为000,那么我们浏览器再次请求网页的时候,因为请求不到,就会返回403这个状态码。当然这个权限设置为多少才能返回403,要看是谁用nginx创建了这个网页。若是普通用户创建的,我们只要在第三位设置为0,那么就会返回403;若是root用户创建的那么我们只要在第一位设置为0,就会返回403。

3.4、用go搭建一个小网站

# 先安装go
yum install go -y
[root@fttswlp go_server]# cat server.go 
package main

import (
	"fmt"
	"net/http"
)
func handler(writer http.ResponseWriter, request *http.Request)  {
	fmt.Fprintf(writer, "hello,world, %s !",request.URL.Path[1:])
}
func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe(":8080",nil)
}
[root@fttswlp go_server]# go built server.go
[root@fttswlp go_server]# ./server &


# 在此之前我们要把防火墙关闭
[root@fttswlp go_server]# service firewalld stop

 

3.5、首部字段或消息头

1、通用首部:请求报文和响应报文两方都会使用的首部

2、请求首部:从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、请求内容相关优先级等信息

3、响应首部:从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息

4、实体首部:针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的的信息

5、协商首部:某资源有多种表示方法时使用

3.6、HTTP代理

HTTP代理又称Web缓存或代理服务器(Proxy Server),是一种网络实体,能代表浏览器发出HTTP请求,并将最近的一些请求和响应暂存在本地磁盘中,当请求的Web页面先前暂存过,则直接将暂存的页面发给客户端(浏览器),无需再次访问Internet。

4、HTTPS

参考网站1:深入理解HTTPS工作原理 - SegmentFault 思否
参考网站2:HTTPS原理详解_猪哥66的博客-CSDN博客_https原理

协议
HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。
HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。

https通信模型
如上图所示 HTTPS 相比 HTTP 多了一层 SSL/TLS

 - SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。
 - TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公

4.1、HTTPS的加密原理

4.2、数字认证

4.2.1、中间人攻击

数字证书,解决公钥传输信任问题

证书颁发和使用过程 

 

4.3、HTTPS的工作流程

 

 

4.4、HTTPS的四次握手

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FanMY_71

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值