HTTP协议基本格式
- TCP/IP的分层管理
- HTTP的基本格式
TCP/IP的分层管理
TCP/IP协议族里重要的一点就是分层。TCP/IP协议族按层次分别分为5层:
应用层、传输层、网络层、数据链路层、物理层。
TCP/IP层次化的好处。 如果互联网只由一个协议统筹,某个地方需要变更时,就必须把所有部分整体替换掉。而分层的好处就是只需要把要变更的层替换掉即可。把各层之间的接口部分规划好之后,每个层次内部的设计就能自由改动了。
应用层: 应用层决定了向用户提供应用服务时通信的活动。
传输层: 传输层对上层应用层,提供处于网络连接中的两台计算机之间数据传输。
在传输层有两个性质不同的协议:TCP和UDP协议。
网络层: 网络层用来处理在网络上流动的数据包。数据包是网络传输最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起到的作用是在众多的选项中选择一条传输路线。
数据链路层: 用来连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card 网络适配器、即网卡),及光纤等物理可见部分。
物理层: 这其实就是硬件方面的传输,即控制物理传输。
发动端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,在接收端在层与层传输数据时,每经过一层时会把对应的首部消去。
HTTP的基本格式
下面我们使用一个抓包工具Fildler进行抓包来理解HTTP的基本格式,下面是使用Fildler抓取搜狗的包。
HTTP请求:
- 首行:【请求方法】 + 【url】 + 【版本号】
- Header : 请求的属性,冒号分隔的键值对;每组属性之间使用\n分隔,遇到空行表示Header部分结束
- Body:空行后面的内容是Body。Body允许为空字符串,一般在Get请求常见,如果Body存在,则Header中就有一个Content-Length的属性来表示Body的长度。
HTTP响应:
由以上抓包结果我们可以知道HTTP有以下格式:
- 首行:【版本号】 + 【状态码】 + 【状态码解释】
- Header:请求的属性,冒号分隔的键值对;每组属性之间使用\n分隔,遇到空行表示Header部分结束
- Body:空行后面的内容都是Body。Body允许为空字符串。如果Body存在,则在Header中会有一个Content-Length来表示Body的长度;如果服务器返回一个html页面,那么html页面内容就是在Body中。