http

TCP/IP通讯的传输流流程
TCP/IP通讯的传输流的整个流程:
http(客户端)<->TCP<->IP<->网络<->网络<->IP<->TCP<->http(服务端)
这个流成大概是这样的:首先做为发送端的客户端在应用层(http协议)发出一个想看xxx.xxx.com网站的http请求。接着,为了方便传输,在传输层(TCP协议)把从应用层收到的数据(http请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。而后在网络层(IP协议),增长做为通讯目的地的MAC地址后转发给链路层,到这里发往网络请求就准备好了。接受端的服务器在链路层接收到数据,按序往上发送,一直到应用层,这样才算服务端接收到客户端发送过来的http请求。css

从浏览器输入到看到页面的过程
首先用户输入URL,接着此URL会被DNS解析找到对应的IP地址,而后会与目标服务器创建TCP连接(TCP连接也叫着TCP三次握手,所谓的三次握手就是,客户端一开始给服务端发送一个带SYN标志的数据包;服务端
接收到后,会给客户端发送一个SYN/ACK标志到数据包;而后客服端接收到了再给服务端发送一个ACK的数据包;这样三次握手完成后就创建起了TCP连接);创建好连接后,TCP协议还会将http请求的报文分割成报文段,按序号分为多个报文段,发送给对应的服务端;而后服务端的TCP协议接收到报文段后,按序号以原来的顺序重组报文段,而后服务端找到对应的内容返回给浏览器。此时浏览器开始解析该返回文档,首页浏览器会先解析HTML,生成DOM树,再解析css,生成规则树,最后结合二者,生成渲染树,在生成渲染树的过程当中浏览器会调用GPU绘制,合成图层,显示在屏幕上。web

HTTP全部请求方法的做用
1.GET
做用:用来请求访问已被URI识别的资源。
2.POST
做用:用来传输实体的主体。
3.PUT
做用:用来传输文件。
4.HEAD
做用:获取报文首部。
5.DELETE
做用:用于删除文件,跟put恰好相反。
6.OPTIONS
做用:用来查询针对请求URI指定的资源支持的方法。浏览器

HTTP的持久连接
在请求头设置Connection:keep-alive(http1.1默认为持久连接)缓存

设置Cookie
响应头设置set-cookie
请求头设置cookie安全

http状态码
状态码有一下几种类型:
1xx:接收的请求正在处理服务器

100     //继续  请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其他部分。
101     //切换协议  请求者已要求服务器切换协议,服务器已确认并准备切换。

2xx:请求正常处理完毕cookie

200     //成功  服务器已经成功处理了请求。一般,这表示服务器提供了请求的网页。
201     //已建立  请求成功而且服务器建立了新的资源
202     //已接受  服务器已接受请求,但还没有处理
203     //非受权信息  服务器已经成功处理了请求,但返回的信息可能来自另外一来源
204     //无内容  服务器成功处理了请求,但没有返回任何内容
205     //重置内容  服务器成功处理了请求,但没有返回任何内容
206     //部份内容  服务器成功处理了部分GET请求

3xx:须要进行附加操做以完成请求网络

300     //多种选择  针对请求,服务器可执行多种操做。服务器可根据请求者(user agent)选择一项操做,或提供操做列表供请求者选择。
301     //永久移动  请求的网页已永久移动到新位置。服务器返回此响应(对GET或HEAD请求的响应)时,会自动将请求者转到新位置。
302     //临时移动  服务器目前从不一样位置的网页响应请求,但请求者应继续使用原有位置来进行之后的请求
303     //查看其它位置  请求者应当对不一样的位置使用单独的GET请求来检索响应时,服务器返回此代码
304     //未修改  自动上次请求后,请求的网页未修改过。服务器返回此响应,不会返回网页的内容
305     //使用代理  请求者只能使用代理访问请求的网页。若是服务器返回此响应,还表示请求者应使用代理
307     //临时性重定向  服务器目前从不一样位置的网页响应请求,但请求者应继续使用原有的位置来进行之后的请求

4xx:服务器没法处理请求svg

400     //错误请求  服务器不理解请求的语法
401     //未受权  请求要求身份验证。对于须要登陆的网页,服务器可能返回此响应
403     //禁止  服务器拒绝请求
404     //未找到  服务器找不到请求的网页
405     //方法禁用  禁用请求中指定的方法
406     //不接受  没法使用请求的内容特性响应请求的网页
407     //须要代理受权  此状态码与401(未受权)相似,但指定请求者应当受权使用代理
408     //请求超时  服务器等候请求时发生超时
409     //冲突  服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。
410     //已删除  若是请求的资源已永久删除,服务器就会返回此响应
411     //须要有效长度  服务器不接受不含有效内容长度标头字段的请求
412     //未知足前提条件  服务器未知足请求者在请求者设置的其中一个前提条件
413     //请求实体过大  服务器没法处理请求,由于请求实体过大,超出了服务器的处理能力
414     //请求的URI过长  请求的URI(一般为网址)过长,服务器没法处理
415     //不支持媒体类型  请求的格式不受请求页面的支持
416     //请求范围不符合要求  若是页面没法提供请求的范围,则服务器会返回此状态码
417     //未知足指望值  服务器未知足“指望”请求标头字段的要求

5xx:服务器处理请求出错网站

500     //服务器内部错误  服务器遇到错误,没法完成请求
501     //还没有实施  服务器不具有完成请求的功能。例如,服务器没法识别请求方法时可能会返回此代码
502     //错误网关  服务器做为网关或代理,从上游服务器没法收到无效响应
503     //服务器不可用  服务器目前没法使用(因为超载或者停机维护)。一般,这只是暂时状态
504     //网关超时  服务器做为网关代理,可是没有及时从上游服务器收到请求
505     //HTTP版本不受支持  服务器不支持请求中所用的HTTP协议版本

总结经常使用的状态码:
200:表示从客户端发到服务端的请求被正常处理成功
204:表示服务端接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分
206:表示客户端进行了范围请求,而服务端成功执行了这部分的GET请求
301:表示永久重定向
302:表示临时重定向
304:表示服务端资源未改变,可直接使用客户端未过时的缓存
400:表示请求报文中存在语法错误
401:表示发送的请求须要有HTTP认证(BASIC认证,DIGEST认证)的认证信息
403:表示服务端拒绝了客户端的请求访问
404:表示服务端未找到客户端请求的地址
500:表示服务端在执行请求时发生的错误
503:表示服务端暂时处于超负荷或正在进行停机维护

HTTP和HTTPS
什么是HTTP?
HTTP是以超文本传输的协议做为规范,完成从客户端到服务端等一系列运做流程。
(也能够说它是链接客户端->网关->服务端的一个流程)
优势:
快速简单,灵活,无连接,无状态
缺点:
通讯使用明文,内容可能被窃听;
不验证通讯方的身份,所以有可能遭遇假装;
没法证实报文的完整性,有可能已遭篡改

什么是https?
http加上加密处理和认证以及完整性保护(SSL)后即HTTPS
优势
HTTPS的优势就是HTTP的缺点的相反。
缺点:
慢,更耗CPU及内存资源,还有一个就是须要一笔够买证书的费用

什么是SSL: ssl是独立HTTP协议的,是当今世界上应用最为普遍的网络安全技术。它采用的加密方式是公开密钥加密的加密处理方式。