网络协议-HTTP 协议(一)
码农天地 -HTTP协议
是一种无状态的
、应用层的
、以请求/应答
方式运行的协议,它使用可拓展的语义和自描述消息格式,与基于网络的超文本信息
系统灵活地互动。
DNS解析
的目的就是把域名字符串对应的 ip地址
拿到,有了这个 ip地址
之后就可以向 ip地址
对应的计算机发起通信了:
上述步骤拿到 ip
地址之后通过该 ip
地址完成三次握手建立TCP
接连(TCP 连接的内容会在后续文章介绍),然后就可构建HTTP
请求,填充上下文至HTTP头部
,再发起 HTTP
请求,这个时候就会涉及到 HTTP
协议的格式,下面介绍基于ABNF语言描述的HTTP协议格式
:
ABNF
语言来严格定义。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
描述的字符规则及含义:
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 80
GET /themes/simpleboot3/portal/public/assets/css/moco.css HTTP/1.1
Host: singwa666.com
返回如下图所示:
telnet singwa666.com 80
之后会提示和 49.234.12.156
连接成功,然后提示输入内容,接下来输入 GET /themes/simpleboot3/portal/public/assets/css/moco.css HTTP/1.1
和Host: singwa666.com
两次回车,可以看到请求数据和返回数据都遵循 ABNF
规范。6.小结本文主要介绍了 HTTP
请求的过程,然后对 DNS
域名解析做了详细的描述,DNS
解析拿到 ip
地址之后就可以完成经典的 TCP/IP
握手,然后就可以发起 HTTP
请求了,文中还对 HTTP
请求的格式规范做了介绍,HTTP
协议规范是基于 ANBF
语言的一种严格定义,最后介绍了如何试用 telnet
工具模拟 HTTP
请求过程。
扫码关注爱因诗贤
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。
php介绍
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
下一篇: 教你在docker中实现安装php拓展