首页 > Web开发 > 详细

图解HTTP-笔记

时间:2018-09-21 21:34:28      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:已过期   服务器端   session管理   重复   basic   求和   man   不能   图片   

HyperText Transfer Protocol 超文本传输协议
TCP/IP 是互联网相关的各类协议族的总称。 IP,ICMP,IEEE 802.3,PPPoE,DNS,TCP,FDDI,UDP,FTP,SNMP,HTTP

应用层:决定向用户提供应用服务时通信的活动。 FTP,DNS,HTTP

传输层:对上层 应用层,提供处于网络连接中的两台计算机之间的数据传输。

TCP,传输控制协议。UDP 用户数据报协议。

网络层(IP,选择传输路线),数据链路层(ARP,RARP:IP -> MAC 硬件部分)。

通信传输流

客户端
应用层:发HTTP请求
传输层 TCP:分割HTTP报文,在报文打上标记序号和端口号
网络层 IP: 增加目的地的MAC地址后转发到链路层

发送端层与层之间传输数据时,每经过一层打上该层所属的首部信息,反之,接收端每经过一层将对应首部消去。

TCP协议为了更容易传输大数据才将数据分割,而且TCP协议能够确认数据最终是否送达到对方。

TCP

三次握手:

发送端:SYN
接收端:SYN/ACK
发送端:ACK

四次挥手:

主动断开方:FIN
被动断开方:ACK
被动断开方:FIN
主动断开方:ACK

DNS

查找顺序:浏览器缓存区 --> 操作系统 --> hosts --> DNS服务器

URI,统一资源标识符
URL,统一资源定位符
URL是URI的子集。

绝对URL:协议+登录信息(可选)+服务器地址+端口+资源路径

请求报文

请求报文 = 请求方法 + 请求URI + 协议版本 + 请求头 + 内容实体
响应报文 = 协议版本 + 状态码 + 状态码原因短语(ok,not found) + 响应头 + 内容实体

HTTP协议自身不具备保存之前发送过的请求或响应的功能:即无状态协议

if-modified-since

假设请求 www.hacker.jp/index.html
响应头为:If-Modified-Since:Thu,12 Jul 2012 07:30:00 GMT

表示:仅返回指定时间(2012,07,12)以后更新过的index.html页面,如果未更新,则以状态码304 Not Modified返回

请求方法

1. PUT: 传输文件(不带验证机制,任何人都可以上传,一般不采用该方法)

客户端:put /example.html
服务端:204 No Content, 该example.html已存在服务器上

2. HEAD:获取报文首部

类似Get方法,只是不返回报文头部,用于确认URI的有效性和资源更新的日期时间

3.DELETE方法:删除文件

同PUT一样不带验证机制,一般不使用

4.OPTIONS 询问服务端支持的请求方法

响应:Allow:GET,POST,HEAD,OPTIONS

5.TRACE:追踪路径

发送请求时,在Max-Forwards填入数值 ( TTL?),每经过一次服务器(包括代理服务器)数字减一,减到0时停止传输,最后接受请求的服务器(可能是代理服务器)响应200 OK,并在响应主体中返回该 最终服务器 收到的原始请求报文。

对于客户端来说,就能知道从它这里发出去的报文,在该报文最终停止传输时,变成了什么样的报文。

6.CONNECT:要求用隧道协议连接代理服务器。SSL+TLS

持久连接

HTTP/1.1默认持久连接,HTTP/1.0未标准化,持久化需要客户端和服务器端同时支持。

http keep-alive
只要任意一端没有明确提出断开连接,则保持TCP连接状态。减轻了TCP连接中重复建立和断开所造成的额外开销,同时请求响应更快结束,WEB页面显示速度也能提高。

管线化

不用等待上一个请求响应可直接发送下一个请求

服务器端,设置响应头字段 Set-Cookie,通知客户端保存cookie。下次客户端向服务端发送请求时,客户端自动在请求报头中加入cookie。

HTTP报文结构

编码提升传输速率。

实体 = 实体首部 + 实体主体。通常报文主体等于实体主体,只有当传输中进行编码操作时,实体主体的内容发生变化,才导致和报文主体产生