一.概念梳理
http(hyper-text-transmission-protocol)超文本传输协议,顾名思义就是传输超文本(html)的协议,具体地来说,我们不需要知道html怎么写,我们只需要梳理服务器的数据接收和响应.具体业务具体分析,你们可以自行丰富内容,这里只做最简单的功能演示.http协议是应用层的协议,我们这里只需要知道http规定的数据包格式,对其进行封装和解析就行了.
二.HTTP数据包分析
数据包分为请求报文和响应报文.请求报文是浏览器给服务器发送的报文,响应报文是服务器回给浏览器的报文.这很好理解.下面分别解析两种报文.
HTTP请求报文:
两种报文有相似之处,都是分行进行包装,每一行结尾都有回车+换行符,我们只需要理解当web浏览器发送过来的报文我们如何去解析,怎么去获取每一行的信息.
第一行: 请求方法---浏览器想要服务器做什么动作 列举几个常用的方法,不过本文只使用了GET
GET
向服务器请求指定的HTML,并返回实体主体。
POST:
向服务器发送数据,并让服务器对数据进行处理并返回.
DELETE:
请求服务器删除指定的页面。
URL:资源定位符,也就是你想要取得的html文件名
第一行主要就是分析这两个关键点
其次请求头部会有若干个 头部字段 这些不重要 , 浏览器自己根据自己的情况发送,只需要知道最后到请求正文时,有两个连续的回车换行符(因为请求头部的最后一行也有回车换行符),这代表着头部的结束.也是界定头部结束的标志.我们解析到这就行了
一般最重要的就是请求方法还有URL
HTTP请求报文:
HTTP响应报文:
对于响应报文,注意状态码!!!有些对应的头部域名称是必须的!对此我踩了巨大的坑,耗费了我几天时间卡在这......读者们一定注意 在此我总结了所有必要的状态码和头部域名称,一定对应着编写响应报文,不然出错都不知道该从哪找错误!!!
1. 200 OK
Content-Length: 必须包含,告知客户端响应主体的长度。
Content-Type: 必须包含,告知客户端响应主体的类型。
Last-Modified: 通常包含,表示资源的最后修改时间。
2. 301 Moved Permanently 和 302 Found
Location: 必须包含,告知客户端资源已移动的新地址。
3. 401 Unauthorized
WWW-Authenticate: 必须包含,告知客户端需要进行的身份验证信息。
4. 403 Forbidden
通常不需要特定的头部字段,但可以包含Retry-After,告知客户端在多久后可以重试(尽管这不常见)。
5. 404 Not Found
不需要特定的头部字段,但可以包含Conte