学习HTTP以前,很必要了解一下关于Web网络基础。html
一、应用层:应用层决定了向用户提供应用 服务时的通讯活动,好比FTP(文件传输协议)、DNS(域名系统)、HTTP(超文本传输协议)web
应用层就像目的地浏览器
二、传输层:传输层对上层应用层提供处理网络链接中的两台计算机之间的数据传输,有两个协议TCP(传输控制协议)、UDP(用户数据协议)安全
传输层就像是马路上的规则服务器
在TCP协议中要经过三次握手才能创建可靠链接。cookie
第一次握手:创建链接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时本身也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器 进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED状态,完成三次握手。网络
UDP和TCP的区别学习
最本质的区别就是TCP是面向链接的,而UDP是非面向链接的。编码
什么叫面向链接呢?事先为所发送的数据开辟出链接好的通道,而后再进行数据发送,像打电话,只能两人打,第三人打就显示占线加密
非面向链接:是指通讯双方不须要事先创建一条通讯线路,而是把每一个带有目的地址的包(报文分组)送到线路上,由系统自主选定路线进行传输,就像写信,无论对方有多忙,把信放到邮筒,就与本身无关系了。
TCP支持的服务有FTP、SMTP等,而UDP支持的服务有DNS、SNMP、QQ等
三、网络层:网络层用来处理在网络上流动的数据包。包括IP协议。
网络层就像马路上的车,规定了数据传输的路线
IP地址指明了节点被分配的地址,MAC地址是指网卡全部的固有地址,通俗的理解IP地址就像快递的终点地址,而MAC地址就像快递到终点地址之间的间歇地址。
四、链路层:一些硬件部分,包括驱动、网卡和光纤等
链路层就像是马路
各协议的职责
DNS是为了域名解析。
HTTP是为了生成针对目标Web服务器的HTTP请求报文(用HTTP交互的信息),并判断是哪一个报文
TCP是为了方便通讯,将HTTP请求报文割成报文段,把每一个报文段可靠传给对方,又按照顺序重组接收的报文段。
IP是为了搜索对方地址,一边中转一边传送。
GET:获取资源
POST:传输实体主题
PUT:传输文件
HEAD:得到报文首部
DELETE:删除文件
OPTIONS:询问支持的方法
TRACE:追踪路径
CONNECT:要求用隧道协议连接代理
详细例子可参考http://www.cnblogs.com/six-moon/p/5151562.html
持久链接节省通信量,持久链接就是只要任意一方没有提出断开链接,就一直链接。持久链接使得多数请求以管线化的方式发送可能,管线化就是从发送请求后须要等待并收到响应,才能发送下一个请求。
HTTP为无状态协议,须要Cookie进行状态管理,好比本身的登录状态,能够利用cookie控制本身的客户端状态
有时候咱们用百度云下载文件时,给的连接有时候是编码的有时候是未经编码的,编码可提高传输速率。
代理:接收由客户端发送的请求并转发给服务器
网关:保证通讯安全性
隧道:保证客户端和服务器安全通讯
HTTP缺点:通讯不加密内容会被窃听
不验证通讯方的身份,遭遇假装
没法证实报名完整性,可能回被篡改
因此引入HTTPS
HTTP+加密+认证+完整性保护=HTTPS
加密:经过SSL(安全套接层)或TLS(安全传输协议)组合使用,加密HTTP的通讯内容
HTTPS是采用混合加密机制,共享秘钥+公开秘钥的方式实现加密
认证:
什么是HTTP的瓶颈:更新的内容只能显示在客户端
解决方法:AJAX和SPYD
可是SPYD也没法真正消除瓶颈,由于计算机的一些硬件问题的存在,如网卡和CPU等
完全解决问题的方法是:WebSocket,即web浏览器和web服务器之间全双工通讯标准。
优势是,直接发送数据,不用等待客户端请求,一直保持链接状态,且首部信息量少,通讯量减小。
客户端把用户IE和密码等登陆信息放入报文的实体部分,以POST方式发送给服务器。
服务器进行身份认证,产生SessionID,加入到Set-Cookie内,返回给客户端。
客户端接收到SessionID后,将其加入Cookie,下次请求时,浏览器会自动发送Cookie。
具体内容你们能够看下《图解HTTP》这本书,讲的真心不错。