09-HTTP响应报文协议分析

目标

  • 知道响应报文包含响应行、响应头、空行、响应体
  • 知道响应状态码 404 表示网址没有找到

也就是服务器向浏览器作出响应(反馈数据)时候的协议!

http响应也分成了四个部分:

  1. 响应行(状态行)
  2. 响应头
  3. 空行
  4. 响应主体(响应数据)

如何使用开发者工具查看请求报文, 以请求 Baidu.com 为例:

10

HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Wed, 14 Mar 2018 09:52:48 GMT
Server: BWS/1.1

1. 响应协议

1.1 响应行

第一行 HTTP/1.1 200 OK 叫做响应行, 共分成3部分:

协议版本号  状态码  状态描述

image-20180620115743732

比如:

HTTP/1.1 200 OK

注意:

状态码和状态描述是一一对应的!

image-20180620115838976

常见的状态码:

image-20180620115925901

302 redirect

我们通过 302 状态码可以指示浏览器跳转到某一个 URL. 11 12

404 NOT FOUND

当我们访问一个不存在的 URL 时, 一般会返回404状态码, 告诉浏览器, 你访问的 URL 是不存在的. 13

image-20180620120119997

500 Internal Server Error

服务器遇到了一个未曾预料的状况, 导致了它无法完成对请求的处理. 一般来说, 这个问题都会在服务器端的源代码出现错误时出现. image-20180620113436423 image-20180620113653294

1.2 响应头

也是一些协议的集合,也是

协议名:协议值

常见的有:

server :服务器主机信息

image-20180620120321419

date :响应时间

image-20180620120354682

last-modified :文件最后修改时间

content-length :响应主体的长度(字节)

image-20180620120455957

content-type :响应内容的数据类型:text/html,image/png等

image-20180620120527606

location :重定向,浏览器遇到这个选项,就立马跳转(不会解析后面的内容)

refresh :重定向(刷新),浏览器遇到这个选项就会准备跳转,刷新一般有时间限制,时间到了才跳转,浏览器会继续向下解析

content-encodeing :文件编码格式

cache-control :缓存控制,no-cached不要缓存

image-20180620120619852

1.3 空行

用来分割响应头与响应主体,也就是响应头到此结束!

1.4 响应主体

就是服务器反馈给浏览器的数据!

image-20180620120756601

响应报文格式总结

16

2. 模拟TCP服务器

通过网络调试助手模拟TCP服务器,响应请求

image-20180620205649912