http

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

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

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:请求正常处理完毕

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

 

3xx:需要进行附加操作以完成请求

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

 

4xx:服务器无法处理请求

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协议的,是当今世界上应用最为广泛的网络安全技术。它采用的加密方式是公开密钥加密的加密处理方式。

http

上一篇:php处理分页数据并返回json


下一篇:安卓之线性布局LinearLayout