以Telnet的方式来学习Http协议
一、Http协议
Http(HyperText Transfer Protocol),叫做超文本传输协议,它属于应用层协议,是基于Tcp连接的。它是一种基于请求/响应模式的,无状态的协议。http1.0的特点:一次连接一次响应后就断开;http1.1的特点:持续连接,在一次连接中可发送多个请求,不必等待每次请求的响应是否到来。Http一般连接过程如下:
二、书写格式
http://host[:port][abs_path]
http:表示Http协议来定位网络资源
host:代表合法的主机域名或IP地址(以点分十进制格式表示)
port:代表端口号
abs_path:指定请求资源的URI,如果URL中没有给出abs_path,那么当它作为请求URI时,必须以"/"的形式给出。通常这个工作浏览器就帮我们完成了。
小知识点:URI(Uniform Resource Identifier,统一资源标识符),纯粹是一个符号结构,用于指定构成Web资源的字符串的各个不同部分URL是一个特殊类型的URI, 它包含了用于查找某个资源的足够信息。其他的URI,例如:mailto:xxx@123.com,则不属于URI,因为它里面不存在根据该标识符来查找的任何数据。这种URI成 为URN(通用资源名)
三、Http请求
由三部分组成:请求行,消息报头,请求正文,请求格式为:Method Request-URI HTTP-Version CRLF 除了作为结尾的CRLF外,不允许出现单独的CR或LF字符,CRLF表示回车换行。
请求方法有:
请求方法 | 说明 |
get | 请求获取由Request-URI所标识的资源,(查询) |
post | 在Request-URI所标识的资源后附加新的资源,(查询+更新) |
put | 请求服务器存储一个资源,并用Request-URI作为其标识,(增加) |
delete | 请求服务器删除由Request-URI所标识的资源,(删除) |
head |
请求获取由Request-URI所标识的资源的响应消息报头,常用于测试 超链接的有效性,是否可以访问,以及最近是否更新等 |
trace | 请求服务器回送受到的请求信息,主要用于测试或诊断 |
connect | 保留将来使用 |
options | 请求查询服务器的性能,或者查询与资源相关的选项和需求 |
当我们通过浏览器地址栏中直接输入网址的方式去访问网页时,浏览器采用的就是GET方法向服务器获取资源
Tips:在HTML中书写get和post不区分大小写,但在HTTP协议中的GET和POST只能是大写形式
四、Http响应
在接收和解释请求消息后,服务器会返回一个HTTP响应消息(状态行,消息报头,响应正文),状态行的书写格式:HTTP-Version Status-Code Reason-Phrase CRLF\
Status-Code表示服务器发回的响应代码,Reason-Phrase表示状态代码的文本描述
状态代码及说明:
状态码 | 说明 |
1xx | 指示信息-表示请求已接收,继续处理 |
2xx | 表示请求已经被成功接收,理解,接受 |
3xx | 重定向-要完成请求必须进行更进一步的操作 |
4xx | 客户端错误-请求有语法错误或请求无法实现 |
5xx | 服务器端错误-服务器未能实现合法的请求 |
五、Http消息
Http消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行,消息报头(可选),空行(只有CRLF),消息正文(可选)组成。对于请求消息开始行就是请求行,响应消息开始行就是响应行。
六、用Telnet来验证http原理
a. 用Telnet来学习Http的连接方式(Telnet和Http都是基于Tcp连接的),首先我们需要打开Telnet服务,在Win7,Win10打开Telnet:控制面板->程序->打开或关闭Windows功能->Telnet客户端
b. 连接网址:telnet www.baidu.com 80 记住添加80端口,不然会使用Telnet默认端口去访问(Telnet默认端口号是23,Ftp默认端口号是21,浏览器默认端口号是80)
c. 采用两种方式来输出请求内容
HEAD /index.html HTTP/1.1
Host: www.baidu.com
c1. 采用不回显的方式输入请求
输入要求:两行之间不能有空格,否则会遗失对主机的连接,输入完成后敲两次回车,第一次表示指令已输完,第二次表示执行指 令
成功界面:
c2. 采用回显的方式输入请求
在Telnet www.baidu.com的窗口按下"Ctrl+]"组合键,在出现界面再点击"Enter"键,在出现窗口界面输下请求
小知识点:回显就是你在键盘上按下一个“键”,如果在电脑上同时显示出你按的内容,这就是回显;如果没有显示,就不回显。