计算机网络概念入门(十四)之DNS_DHCP_HTTP
正文
1.ABNF
=》ABNF(Augmented BNF)
—>是BNF的修改,增强版
—>在RFC 5234中表明:ABNF用作Internet中通信协议的定义语言
—>ABNF是最严谨的HTTP报文格式描述形式,脱离ABNF谈论HTTP报文格式,往往都是片面、不严谨的
=》关于HTTP报文格式的定义
—>RFC 2616 4.HTTP Message(旧)
—>RFC 72303.Message Format(新)
2.报文-整体
HTTP-messge=start-line
*(header-field CRLF)
CRLF
[message-body]
3.ABNF-核心规则(常用)
—>CRLF:互联网标准换行
—>表示0个或多个。2表示至少2个,3*6表示3到6个
4.报文格式—request-line、status-line
request-line=method SP request-target SP HTTP-version CRLF
HTTP-version=HTTP-name “/” DIGIT “.” CRLF
HTTP-name=%48.54.54.50 ; HTTP
eg:
GET /hello /HTTP/1.1
status-line =HTTP-version SP status-code SP reason-phrase CRLF
status-code = 3DIGIT
reason-phrase = *(HTAB/SP/VCHAR/obs-text)
eg:
HTTP/1.1 200
HTTP/1.1 200 OK
5.报文格式—header-filed、message-body
=》header-field=field-name“:”OWS field-values OWS
field-name=token
field-value=(field-content/obs-fold)
OWS=(SP/HTAB)
6.URL的编码
=》URL中一旦出现了一些特殊字符(比如中文、空格),需要进行编码
—>在浏览器地址栏输入URL时,是采用UTF-8进行编码
比如:
编码前:https://www.baidu.com/s?wd=百度
编码后:https://www.baidu.com/s?wd=%E5%8D8E%E4%B8%BA
7.Xshell+telnet
=》在Xshell(安全终端模拟软件),在Xshell中使用tenlent
—>可以直接面相HTTP报文与服务器交互
—>可以更清晰、直观地看到请求报文、响应报文的内容
—>可以检验请求报文格式的正确与否
8.请求方法
=》RFC 7231,section 4:Request methods:描述了8种请求方法
—>GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE
=》RFC 5789,section 2:Patch method:描述了PATCH方法
=》GET:常用于读取的操作,请求参数直接拼接在URL的后面(浏览器对URL是有长度限制的)
=》POST:常用于添加、修改、删除的操作,请求参数可以放到请求体中(没有大小限制)
=》HEAD:请求得到与GET请求相同的响应,但没有响应体
—>使用场景举例:在下载一个大文件前,先获取其大小,再决定是否要下载,以此可以节约宽带资源
=》OPTIONS:用于获取目的资源所支持的通信选项,比如服务器支持的请求方法
—>OPTIONS+HTTP/1.1
=》PUT:用于对已存在的资源进行整体覆盖
=》PATCH:用于对资源进行部分修改(资源不存在,会创建新的资源)
=》DELETE:用于删除指定的资源
=》TRACE:请求服务器回显其收到的请求信息,主要用于HTTP请求的测试或诊断
=》CONNECT:可以开启一个客户端与所请求资源之间的双向沟通的通道,它可以用来创建隧道
—>可以用来访问采用了SSL(HTTPS)协议的站点
9.响应头字段
—>User-Agent : 浏览器的身份标识字符串
—>Host:服务器的域名、端口号
—>Date:发送该消息的日期和时间
—>Referee:表示浏览器所访问的前一个页面,正是那个页面上的某个链接将浏览器带到了当前所请求的这个页面
—>Content-Type:请求体的类型
—>Content-Length:请求体的长度(字节为单位)
视频教程
14.ABNF_请求头_响应头
下集预告
状态码_form提交