网络协议基础02

1、HTTP基础知识

(1)HTTP是什么

HTTP是超文本传输协议,英文全称 HyperText Transfer Protocol。

是一种分布式、协作式和超媒体信息系统的应用层协议。是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的互联网文件都必须遵守。

HTTP(超文本传输协议)分为三个部分

  • 超文本
  • 传输
  • 协议

image-20230917232535897

1、协议

确定计算机之间的交流通信方式(两个以上的参与者),以及相关的各种控制和错误处理方式(行为约定和规范),理解为一种约定

2、传输

HTTP协议是一个双向协议。专门用来在两点之间传输数据的约定和规范。

image-20230917232852931

3、超文本

HTTP传输的内容是[超文本]

超文本就是超越普通文本的文本,是文字、图片、视频等的混合体,最关键有超链接,能从一个超文本跳转到另外一个超文本。

总结:

HTTP是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。

(2)统一资源定位符(URL)

常说的网址就是URL。

由协议、主机名、域名、端口、路径、以及文件名这个六个部分构成。端口默认隐藏不显示。

1
htthttps://en.wikipedia.org:443/wiki/Hypertext_Transfer_Protocol?id=123#HTTP/1.1_response_messages

image-20230917233959370

其中path文件路径也被称为URI

#之后的称为锚点,了解即可。

(3)统一资源标志符(URI)

URL中的文件路径就是URI,用来标识抽象或物理资源的一个紧凑字符串。

URI的范围要比URL大,因为URL更具体。

image-20230917234337538

2、HTTP客户端请求信息

HTTP请求报文:web客户端向服务器发送的请求

HTTP请求由四个部分组成:

  • 请求行
  • 请求头部
  • 请求空行
  • 请求体

image-20230918083835893

(1)请求行

1
2
3
4
5
6
Method Request-URI HTTP-Version CRLF

Method:表示请求方法;
Request-URI:是一个统一资源标识符
HTTP-Version:表示请求的HTTP协议版本;
CRLF:表示回车和换行

image-20230918084319657

请求方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
GET 请求获取Request-URI所标识的资源

POST 在Request-URI所标识的资源后附加新的数据

HEAD 请求获取由Request-URI所标识的资源的响应消息报头

PUT 请求服务器存储一个资源,并用Request-URI作为其标识

DELETE 请求服务器删除Request-URI所标识的资源

TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断

OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

CONNECT 保留将来使用,HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

PATCH 用于将局部修改应用到资源。(由 RFC 5789 指定的方法)

(2)请求头部

1
Header:Header_Value CRLF

允许客户端传递关于自身的信息和希望的响应形式(告诉服务端自己的需求和类型)

image-20230918084633384

(3)请求空行

表示请求头结束,请求体开始。

(4)请求正文

GET方法:数据参数会作为请求行中的URL一部分,放在文件路径后面发送给服务器,被称为查询字符串

POST方法:发送的数据(参数)在请求体中

3、HTTP服务端响应消息

HTTP响应报文:在接收和解释请求消息后,服务器返回一个HTTP响应消息。

HTTP响应也分四个部分:

  • 状态行(响应行)
  • 消息报头(响应头)
  • 空行(响应空行)
  • 响应正文(响应体)

image-20230918085250731

(1)状态行

1
2
3
4
5
HTTP-Version Status-Code Reason-Phrase CRLF

HTTP-Version:表示服务器HTTP协议的版本;
Status-Code:表示服务器发回的响应状态代码;
Reason-Phrase:表示状态代码的文本描述。

image-20230918085510382

(2)响应头部

响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。

image-20230918085712466

(3)空行

表示响应头结束,响应体开始

(4)HTTP请求方法理解

1、GET

Get请求含义是从服务器获取资源,这个资源可以是静态的文本,页面,图片视频等。

没有请求体。

image-20230918090226229

2、POST

post请求:向Request-URI所标识的资源提交数据,数据就放在请求正文中

image-20230918090615897

image-20230918090556022

3、HEAD

HEAD:请求获取由Request-URI所标识的资源的响应消息报头首部,不返回报文主体

image-20230918090745806

4、OPTIONS

OPTIONS:查询资源支持的方法。

image-20230918090917371

5、PUT

PUT:请求服务器存储一个资源,并用Request-URI作为其标识

服务器会将请求体的内容保存到URL指定的资源位置,包含两种情况:

1、URL指定的资源不存在,服务器会新建一个文件,将请求主体中的内容保存到新建的文件里,响应码为201。

2、URL指定的资源存在,服务器会重置文件内容,用请求体中的内容覆盖原问价内容,响应码为200或204。

image-20230918091206825

PUT方法自身不带验证机制,任何人都可以执行,存在安全问题,所以网站一般不会使用PUT方法。

6、DELETE

DELETE:请求服务器删除Request-URI所标识的资源

image-20230918091414835

7、TRACE

TRACE:路径追踪,请求服务器回送收到的请求信息,主要用于测试或诊断发送的请求是否在客户端与服务端之间传送时被网关,防火墙,代理更改。

(5)HTTPS与HTTP

1、区别
  • HTTP是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS则解决HTTP不安全的缺陷,在TCP和HTTP网络层之间加入了SSL/TLS安全协议,使得报文能够加密传输。

  • HTTP连接建立相对简单,TCP三次握手之后便可进行HTTP的报文传输。而HTTPS在TCP三次握手之后,还需进行SSL/TLS的握手过程,才可进入加密报文传输。

  • HTTP的端口号是80,HTTPS的端口号是443。

  • HTTPS协议需要向CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。

2、HTTPS解决的问题

HTTP由于是明文传输,存在风险:

  • 窃听风险,比如通信链路上可以获取通信内容,用户号容易没
  • 篡改风险,比如强制入垃圾广告,视觉污染,用户眼容易瞎
  • 冒充风险,比如冒充淘宝网站,用户钱容易没

image-20230918092126584