【php】网络协议-HTTP 协议(一)
网络协议-HTTP 协议(一)
爱因诗贤发布于 2020-11-19
HTTP协议
是一种无状态的
、应用层的
、以请求/应答
方式运行的协议,它使用可拓展的语义和自描述消息格式,与基于网络的超文本信息
系统灵活地互动。
1.HTTP 请求场景示意图
2.浏览器发起 HTTP 请求流程图
3.DNS 解析流程示意图
DNS解析
的目的就是把域名字符串对应的 ip地址
拿到,有了这个 ip地址
之后就可以向 ip地址
对应的计算机发起通信了:
3.1 DNS 解析流程示意图
3.2 DNS 解析流程说明图
4.构建 HTTP 请求
上述步骤拿到 ip
地址之后通过该 ip
地址完成三次握手建立TCP
接连(TCP 连接的内容会在后续文章介绍),然后就可构建HTTP
请求,填充上下文至HTTP头部
,再发起 HTTP
请求,这个时候就会涉及到 HTTP
协议的格式,下面介绍基于ABNF语言描述的HTTP协议格式
:
4.1 HTTP 协议的格式示意图
4.2 ABNF(扩充巴科斯-瑙尔范式)操作符
(1)空白字符(SP):用来分隔协议定义中的各个元素
method SP request-target SP HTTP-version CRLF
(2)选择(/):表示可以选择的规则
start-line = request-line / status-line
(3)范围值(%c##-##)
OCTAL = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" 等价于 OCTAL = %x30-37
(4)序列组合(( )):把规则组合起来作为单个元
(5)不定量重复(m*n):
*表示 0 个或多个元素:*(header-field CRLF)
1*表示 1 个或多个元素:2*4 表示 2-4 个元素
(6)可选序列([]):
[message-body]
4.3 ABNF(扩充巴科斯-瑙尔范式)规则表
下面列举出 ABNF
描述的字符规则及含义:
下面列举出 ABNF
描述的字符规则及含义:
规则 | 定义形式 | 含义 |
---|---|---|
ALPHA | %x41-5A / %x61-71 | 大写和小写字母(A-Z,a-z) ASSCII |
DIGIT | %x30-39 | 数字0-9 |
HEXDIG | DIGIT / "A" / "B" / "C" / "D" / "E" / "F" | 十六进制数字(0-9,A-F,a-f) |
DQUOTE | %x22 | 双引号 |
SP | %x22 | 空格 |
HTAB | %x09 | 横向制表符 |
WSP | SP / HTAB | 空格或横向制表符 |
LWSP | *(WSP / CRLF WSP) | 直线空白 |
VCHAR | %x21-7E | 可见(打印)字符 |
CHAR | %x01-7F | 任何7-位 US-ASCII 字符,不包括 NUL(%x00) |
OCTET | %x00-FF | 8位数据 |
CTL | %x00-1F / %x7F | 控制字符 |
CR | %0D | 回车 |
LF | %x0A | 换行 |
CRLF | CRLF | 互联网标准换行 |
BIT | "0" / "1" | 二进制数字 |
4.4 基于 ABNF 描述的 HTTP 协议格式
HTTP-message = start-line *(header-field CRLF) CRLF [message-body]start-line = request-line / status-line
request-line = method SP request-target SP HTTP-version CRLF
status-line = HTTP-version SP status-code SP reason-phrase CRLF
header-field = field-name ":" OWS field-value OWS
OWS = *(SP / HTAB)
field-name = token
field-value = *(field-content / obs-fold)
message-body = *OCTET
5.Telnet 模拟 HTTP 请求
telnet singwa666.com 80GET /themes/simpleboot3/portal/public/assets/css/moco.css HTTP/1.1
Host: singwa666.com
返回如下图所示:
6.小结
本文主要介绍了 HTTP
请求的过程,然后对 DNS
域名解析做了详细的描述,DNS
解析拿到 ip
地址之后就可以完成经典的 TCP/IP
握手,然后就可以发起 HTTP
请求了,文中还对 HTTP
请求的格式规范做了介绍,HTTP
协议规范是基于 ANBF
语言的一种严格定义,最后介绍了如何试用 telnet
工具模拟 HTTP
请求过程。
扫码关注爱因诗贤
phphttp后端
阅读 101发布于 2020-11-19
本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议
爱因诗贤
54 声望
6 粉丝
爱因诗贤
54 声望
6 粉丝
宣传栏
目录
HTTP协议
是一种无状态的
、应用层的
、以请求/应答
方式运行的协议,它使用可拓展的语义和自描述消息格式,与基于网络的超文本信息
系统灵活地互动。
1.HTTP 请求场景示意图
2.浏览器发起 HTTP 请求流程图
3.DNS 解析流程示意图
DNS解析
的目的就是把域名字符串对应的 ip地址
拿到,有了这个 ip地址
之后就可以向 ip地址
对应的计算机发起通信了:
3.1 DNS 解析流程示意图
3.2 DNS 解析流程说明图
4.构建 HTTP 请求
上述步骤拿到 ip
地址之后通过该 ip
地址完成三次握手建立TCP
接连(TCP 连接的内容会在后续文章介绍),然后就可构建HTTP
请求,填充上下文至HTTP头部
,再发起 HTTP
请求,这个时候就会涉及到 HTTP
协议的格式,下面介绍基于ABNF语言描述的HTTP协议格式
:
4.1 HTTP 协议的格式示意图
4.2 ABNF(扩充巴科斯-瑙尔范式)操作符
(1)空白字符(SP):用来分隔协议定义中的各个元素
method SP request-target SP HTTP-version CRLF
(2)选择(/):表示可以选择的规则
start-line = request-line / status-line
(3)范围值(%c##-##)
OCTAL = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" 等价于 OCTAL = %x30-37
(4)序列组合(( )):把规则组合起来作为单个元
(5)不定量重复(m*n):
*表示 0 个或多个元素:*(header-field CRLF)
1*表示 1 个或多个元素:2*4 表示 2-4 个元素
(6)可选序列([]):
[message-body]
4.3 ABNF(扩充巴科斯-瑙尔范式)规则表
下面列举出 ABNF
描述的字符规则及含义:
下面列举出 ABNF
描述的字符规则及含义:
规则 | 定义形式 | 含义 |
---|---|---|
ALPHA | %x41-5A / %x61-71 | 大写和小写字母(A-Z,a-z) ASSCII |
DIGIT | %x30-39 | 数字0-9 |
HEXDIG | DIGIT / "A" / "B" / "C" / "D" / "E" / "F" | 十六进制数字(0-9,A-F,a-f) |
DQUOTE | %x22 | 双引号 |
SP | %x22 | 空格 |
HTAB | %x09 | 横向制表符 |
WSP | SP / HTAB | 空格或横向制表符 |
LWSP | *(WSP / CRLF WSP) | 直线空白 |
VCHAR | %x21-7E | 可见(打印)字符 |
CHAR | %x01-7F | 任何7-位 US-ASCII 字符,不包括 NUL(%x00) |
OCTET | %x00-FF | 8位数据 |
CTL | %x00-1F / %x7F | 控制字符 |
CR | %0D | 回车 |
LF | %x0A | 换行 |
CRLF | CRLF | 互联网标准换行 |
BIT | "0" / "1" | 二进制数字 |
4.4 基于 ABNF 描述的 HTTP 协议格式
HTTP-message = start-line *(header-field CRLF) CRLF [message-body]start-line = request-line / status-line
request-line = method SP request-target SP HTTP-version CRLF
status-line = HTTP-version SP status-code SP reason-phrase CRLF
header-field = field-name ":" OWS field-value OWS
OWS = *(SP / HTAB)
field-name = token
field-value = *(field-content / obs-fold)
message-body = *OCTET
5.Telnet 模拟 HTTP 请求
telnet singwa666.com 80GET /themes/simpleboot3/portal/public/assets/css/moco.css HTTP/1.1
Host: singwa666.com
返回如下图所示:
6.小结
本文主要介绍了 HTTP
请求的过程,然后对 DNS
域名解析做了详细的描述,DNS
解析拿到 ip
地址之后就可以完成经典的 TCP/IP
握手,然后就可以发起 HTTP
请求了,文中还对 HTTP
请求的格式规范做了介绍,HTTP
协议规范是基于 ANBF
语言的一种严格定义,最后介绍了如何试用 telnet
工具模拟 HTTP
请求过程。
扫码关注爱因诗贤
以上是 【php】网络协议-HTTP 协议(一) 的全部内容, 来源链接: utcz.com/a/110810.html
得票时间