标签:上传文件 三次握手 临时 发送请求 关闭 优化方案 实体 开始 log
1.在浏览器输入URL到页面加载发生了什么?
2.一次完整的HTTP请求经历的7个步骤
1. 建立TCP连接
在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行更高层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。
2. Web浏览器向Web服务器发送请求命令
一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。例如:GET/sample/hello.jsp HTTP/1.1。
3. Web浏览器发送请求头信息
浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。
4. Web服务器应答
客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK ,应答的第一部分是协议的版本号和应答状态码。
5. Web服务器发送应答头信息
正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。
6. Web服务器向浏览器发送数据
Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。
7. Web服务器关闭TCP连接
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
3.HTTP的缓存机制
浏览器的缓存机制有三种:HTML5离线储存和本地缓存、HTML Meta标签、HTTP协议缓存
1.appcache、sessionStorage、localStorage等等。
2.<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
3.HTTP缓存:它是通过 HTTP 头信息来控制缓存的,HTTP 头信息可以让你对浏览器和代理服务器如何处理你的副本进行更多的控制。他们在 HTML 代码中是看不见的,一般由 Web 服务器自动生成。但是,根据你使用的服务器,你可以在某种程度上进行控制。
http://www.alloyteam.com/2012/03/web-cache-2-browser-cache/
4.cookies机制和session机制
5.HTTP优化方案
6.不同版本的HTTP区别
7.HTTP1.1引入分块传输编码提供的好处
8.长连接与短链接的区别,以及应用场景
9.常见web攻击
10.站内跳转与外部重定向的区别
11.304缓存原理
12.HTTP2.0
13.HTTP报文
14.
超文本传输协议,客户端和服务端之间数据传输的格式规范
(1) 支持客户端/服务端模式
(2) 简单快速:客户向服务器请求服务时,只需传送请求方法和路径
(3) 灵活:HTTP允许传输任意类型的数据对象,正在传输的类型由Content-type加以标记
(4) 无连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接(节省传输时间)Keep-Alive
(5) 无状态:对事务处理没有记忆能力;(返回请求数据后,缺少状态意味着如果后续处理需要前面的信息,则它必须重传)cookie、session
(1) GET:请求访问已被URI识别的资源(可通过URL传参给服务器)
(2) POST:传输数据给服务器(与get方法类似)
(3) PUT:传输文件(报文主体中包含文件内容,保存到对应的URI位置)
(4) DELETE:删除文件(与put相反,删除对应URI位置文件)
(5) HEAD:获得报文首部(与get类似,只是不返回报文主体,一般用于验证URI是否有效)
(6) OPTIONS:查询相应URI支持的HTTP方法
(1) GET重点从服务器上获取资源;POST重点向服务器发送数据
(2) GET请求数据是通过URL请求,(?连接,多个请求数据间用&连接)POST将数据封存在请求实体中发送给服务器,这个过程用户不可见
(3) GET传输的数据量小,因为URL长度限制,但效率较高;POST可以传输大量数据,所以上传文件时只能用POST方式
(4) GET不是安全的,因为URL是可见的,可能泄漏私密信息;POST较GET安全性较高
(5) GET方式只支持ASCII字符,向服务器传输的中文字符可能会乱码;POST支持标准字符集,可以正确传递中文字符
HTTP1.0,当建立连接后,客户端发送一个请求,服务器返回一个信息后就关闭连接,浏览器下次请求时又要建立连接;HTTP1.1引入持续连接概念,客户端可以连续发送多个请求,不用等待每一个响应的到来
(1) 1XX:信息性状态码(接收的请求正在处理)
(2) 2XX:成功状态码(请求正常处理完毕)
(3) 3XX:重定向状态码(需要进行附加操作以完成请求)
(4) 4XX:客户端错误状态码(服务器无法处理请求)
(5) 5XX:服务器错误状态码(服务器处理请求出错)
---------------------------------------------------------------
200请求被正常处理
204请求被受理但没有资源可以返回
206客户端只请求资源的一部分,服务端成功的执行了这部分的GET请求;响应报文中包含由Content-Range指定范围的实体内容
301永久性重定向(请求的资源已被分配了新的URI,以后使用资源都使用新的URI,如指定的路径的最后忘记添加斜杠‘/’就会产生301状态码)
302临时重定向(请求的资源已经被分配了新的URI,希望用户本次使用新的URI访问)服务器返回的头部信息中包含一个Location字段,内容是重定向到的url
303与302功能相似,该状态码表示请求对应资源存在着另一个URI,应使用GET方法定向获取请求的资源
304发送附带条件的请求时,条件不满足返回,与重定向无关
307临时重定向,与302类似,不被强制使用GET
当301,302,303响应状态码返回时,几乎所有浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送
301、302标准是禁止将POST方法改成GET方法
400请求报文中存在语法错误
401请求需要认证
403请求资源禁止被访问(从未授权的发送源IP地址试图访问)
404服务器无法找到对应的资源
500服务器内部错误
503服务器正忙(处于超负荷或正在进行停机维修,现无法处理请求)
(1) 请求报文
① 请求行:请求方法、URI、HTTP版本信息
② 请求首部字段
③ 请求内容实体
(2) 响应报文
① 状态行:状态码、状态码的原因语句、HTTP版本
② 响应首部字段
③ 响应内容实体
a、通用首部字段(请求报文与响应报文都会使用的首部字段)
b、请求首部字段(请求报文会使用的首部字段)
c、响应首部字段(响应报文会使用的首部字段)
d、实体首部字段(请求报文与响应报文的的实体部分使用的首部字段)
标签:上传文件 三次握手 临时 发送请求 关闭 优化方案 实体 开始 log
原文地址:https://www.cnblogs.com/znLam/p/12953098.html