[HTTP协议格式详解]
一、URI结构
HTTP
使用统一资源标识符(URI
)来传输数据和建立连接。URL
(统一资源定位符)是一种特殊种类的URI
,包含了用于查找的资源的足够的信息,我们一般常用的就是URL
,而一个完整的URL
包含下面几部分:
http://www.fishbay.cn:80/mix/76.html?name=kelvin&password=123456#first
1.协议部分
该URL
的协议部分为http:
,表示网页用的是HTTP
协议,后面的//
为分隔符
2.域名部分
域名是www.fishbay.cn
,发送请求时,需要向DNS
服务器解析IP
。如果为了优化请求,可以直接用IP
作为域名部分使用
3.端口部分
域名后面的80
表示端口,和域名之间用:
分隔,端口不是一个URL
的必须的部分。如果端口是80
,也可以省略不写
4.虚拟目录部分
从域名的第一个/
开始到最后一个/
为止,是虚拟目录的部分。其中,虚拟目录也不是URL
必须的部分,本例中的虚拟目录是/mix/
5.文件名部分
从域名最后一个/
开始到?
为止,是文件名部分;如果没有?
,则是从域名最后一个/
开始到#
为止,是文件名部分;如果没有?
和#
,那么就从域名的最后一个/
从开始到结束,都是文件名部分。本例中的文件名是76.html
,文件名也不是一个URL
的必须部分,如果没有文件名,则使用默认文件名
6.锚部分
从#
开始到最后,都是锚部分。本部分的锚部分是first
,锚也不是一个URL
必须的部分
7.参数部分
从?
开始到#
为止之间的部分是参数部分,又称为搜索部分、查询部分。本例中的参数是name=kelvin&password=123456
,如果有多个参数,各个参数之间用&
作为分隔符。
二、Request
HTTP的请求包括:请求行(request line)、请求头部(header)、空行 和 请求数据 四个部分组成。get请求没有请求体。
三、Response
1.状态行
状态行由协议版本号、状态码、状态消息组成
2.响应头
响应头是客户端可以使用的一些信息,如:Date(生成响应的日期)、Content-Type(MIME类型及编码格式)、Connection(默认是长连接)等等
3.空行
响应头和响应体之间必须有一个空行
4.响应体
响应正文,本例中是键值对信息
四、工作原理
HTTP
协议采用请求/响应模式,客户端向服务器发送一个请求报文,然后服务器响应请求。下面介绍一下一次HTTP
请求的过程:
- 在浏览器中输入
URL
,并按下回车键 - 浏览器向
DNS
服务器请求解析该URL
中的域名对应的IP
地址(如果是IP
请求,则不需要该步骤) - 解析出
IP
后,根据IP
和端口号,和服务器建立TCP连接 - 浏览器向服务器发送请求,该请求报文作为
TCP
三次握手的第三个报文发送给服务器 - 服务器做出响应,把数据发送给浏览器
- 通信完成,断开
TCP
连接 - 浏览器解析收到的数据并显示
五、网络传输的基本流程
分为四层:
- 应用层:FTP
- 传输层:TCP
- 网络层:IP
- 链路层:MAC地址
首先用户层需要传输文件,那么就需要文件传输协议。
在需要传送的数据加上文件传输协议的报头,呼叫下一层。
传输层接收到这个指令之后,加上该层的协议报头,再呼叫下一层。
网络层收到这个指令之后,加上网络层的报头,传给链路层。
链路层的协议中包括传送目标。通过局域网传送给了对方主机的链路层。
以上过程称为——封装。
mac地址可以标识全世界上唯一一台主机,出厂时就自带的,
ip地址可以标识世界上唯一一台联网的主机