HyperText Transfer Protocol
客户端与服务器直接通信的一个协议
1. 什么是协议(Protocol)
协议这个词主要应用在计算机领域,就是连入网络的计算机都有遵循一定的技术规范,关于硬件、软件和端口等的技术规范。计算机通信网是由许多具有信息交换和处理能力的节点互连而成。要使整个网络有条不紊地工作,就要求每个节点必须遵守一些事先约定好的有关数据格式及时序等的规则。这些为实现网络数据交换而建立的规则、约定或标准就称为网络协议。
通信双方预先定义好的一个通信规范或是通信规则。
比如说:红外遥控协议(照相机)
遥控器上的灯按照32768Hz闪烁16次,停止7.33ms,再闪烁16次,这样就是立即拍照。
遥控器上的灯按照32768Hz闪烁16次,停止5.36ms,再闪烁16次,就是延时5s拍照。
当照相机读取,收到遥控器上发射的这种规律、闪烁的红外的规则后,照相机就能知道是什么意思。因为它们之前已经约定好了,按照这种规则来闪烁,所以它们就可以通信了。而且可以实现相应的功能。
再比如说:飞鸽传书协议
飞鸽传书类似QQ,不过它是在局域网使用的一个即时通讯的工具。飞鸽传书协议是一个相对简单的局域网内信息传输协议。
发送消息也是需要协议的,要发一条消息,不仅要发出这条消息内容本身,还有一些附加的其它内容比如 消息来自哪里,发送消息者姓名,etc.
版本号:包编号:发送者姓名:发送者主机名:命令字:附加信息(消息内容)
1:23149:riverlet:127.0.0.1:\x20:balabalala
接收者收到这条消息后就可以解析消息内容,拿到相关信息。
HTTP协议(超文本传输协议)
历史版本
1. 最早是HTTP/0.9版本,这个协议比飞鸽传书协议还要简单。
GET /index.html
Telnet工具演示,(用来在服务器和客户端直接建立通信(TCP连接),建立连接后客户端输入的信息会被即时发送到服务器端)
>telnet example.com 80
告诉telnet连接到example.com这台服务器上80端口。
输入:GET /
HTTP/1.0 505 HTTP Version Not Supported
Content-Type: text/html
Content-Length: 379
Connection: close
Date:
Server:
<?xml version="1.0" encoding="iso-8859-1"?>
......
</html>
遗失对主机连接。
因为刚输入的是HTTP/0.9的协议,所以不支持
2. HTTP/1.0 (1996年诞生)
POST /index.html HTTP/1.0
在HTTP/0.9的基础上加了POST支持,提供了对CGI的支持,可以看到动态生成的内容,并且html也添加了图像支持
添加了缓存相关header
If-Modified-Since: Wed, 18 Mar 2020 09:21:55 GMT
添加了身份认证
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
默认值: close
Connection: close
>telnet example.com 80
GET HTTP/1.0
HTTP/1.0 404 Not Found
Content-Type: text/html
Date:
Server:
Content-Length: 345
Connection: close
<?xml version="1.0"
......
</html>
遗失对主机的连接
3. HTTP/1.1 (2000年诞生)
GET /index.html HTTP/1.1
2. HTTP通信交互流程
3. 常见HTTP header的含义及作用
4. 常见HTTP响应状态码的含义
5. Cookie、Session的原理
6. HTTP缓冲策略
7. HTTP安全、常见攻击方式及防范策略