了解web及网络基础
TCP/IP协议族各层:
应用层:FTP(文件传输协议);DNS(域名系统)…
传输层:TCP(传输控制协议);UDP(用户数据报协议)
端到端,数据单位:数据段
网络层:IP(网际协议)
主机到主机(可以跨不同链路),数据单位:数据包
寻址:IP地址—>MAC地址(用ARP协议)
路由:维护一张路由表,决定数据的传输路线
链路层:以太网,MAC地址,广播(需要在同一个子网络)
数据单位:帧
物理层:
数据单位:比特流
从页面输入url到页面呈现的过程:
1.浏览器通过DNS解析得到url的ip地址
2.浏览器得到服务器的ip地址后,与服务端建立TCP(三次握手)连接
3.建立TCP连接后,浏览器向服务端发送HTTP请求
4.服务器响应http请求,将请求的资源发送给浏览器
5.浏览器释放TCP连接
DNS解析:客户端提出域名解析请求,并将该请求发送给本地域名服务器;
浏览器首先查询本地缓存,若有该记录,直接返回查询结果;
查询顺序:1.浏览器缓存;2.系统缓存;3.路由器缓存
简单的HTTP协议
1.HTTP规定,肯定是从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送相应。
2.HTTP是无状态协议
(使用session+cookie解决需要记录状态的情景:通过在请求和相应报文中写入cookie信息)
3.HTTP的初始版本中,每进行一次通信就要断开一次连接,而每一次的连接都对应了tcp的三次握手与四次断开连接。
(1.0版本使用持久连接解决,好处:减少了tcp的重复建立和断开造成的额外开销。)
HTTP状态码
1XX:信息性状态码,接收的请求正在处理
2XX:成功状态码,请求正常处理完毕
3XX:重定向状态码,需要进行附加操作以完成请求
4XX:客户端错误状态码,服务器无法处理请求
400:请求报文错误
401:用户须认证
403:服务器拒绝资源的请求,如权限
404:服务器上没有请求的资源
5XX:服务器错误状态码,服务器处理请求出错
与HTTP协作的web服务器
web服务器,可以搭建独立域名的web网站,也可以作为中转服务器。
通信数据转发应用程序:
1.代理:接收客户端的请求,转发给其他服务器,不改变请求url
客户端 —GET /HTTP/1.1—> 代理服务器—GET /HTTP/1.1—>源服务器(持有资源实体的服务器)
作用:
a. 缓存
b. 针对特定网站的访问控制,如,客户端 —GET /HTTP/1.1—>代理服务器,返回请求无法通过
分类:
a. 缓存代理/非缓存代理,代理转发响应时,预先将资源保存在代理服务器上
b. 透明代理/非透明代理,对报文进行加工
2.网关:使通信线路上的服务器提供非HTTP协议服务
客户端—HTTP请求—>网关—非HTTP协议通信—>非HTTP服务器
利用网关可以提高通信安全性,因为可在客户端与网关的线路上加密。
如,网关可以连接数据库;可以和信用卡结算系统联动等…
3.隧道:建立一条与其他服务器的通信线路,使用SSL等加密手段通信,隧道本身不会去解析HTTP请求。
HTTP首部
通用首部(请求报文和响应报文都会使用):
connection:管理持久连接,close/keep-alive控制http的长连接
请求首部字段
accept:制定媒体类型
authorization:告知服务器用户代理认证信息(收到401后,客户端发给服务器)
host:相同ip下有多个域名的情况,host指定主机名和端口号
cookie:服务器接收到的cookie信息
响应首部字段
location:重定向(配合302)
proxy-authentication:代理服务器需要的认证信息(代理服务器发给客户端需要认证的信息)
www-authentication:服务器需要的认证信息(服务器发给客户端需要的认证信息)
set-cookie:开始状态管理所使用的cookie信息(字段值:name;expire;path;domain;secure;httponly)
实体首部字段
allow:指定客户端支持的方法,如get,post…
expires:缓存失效日期(源服务器发给缓存服务器,缓存服务器对资源做出相应时间的缓存)
确保web安全的HTTPS
HTTP的不足:
1.通信使用明文(不加密),内容可能被窃听
解决:加密处理防止被监听
可以通过SSL(安全套接层)或TLS(安全传输层协议)的组合使用,加密HTTP的整个通信线路。
2.不验证对方的身份,有可能遭遇伪装。
解决:SSL不仅提供加密,还使用了证书。
3.无法证明报文的完整性,有可能已遭篡改
解决:使用MD5或SHA-1等散列值校验的方法
HTTPS=HTTP+加密+认证+完整性保护(与SSL组合使用的HTTP被称为HTTPS)
通常HTTP直接和TCP通信,使用SSL时,先和SSL通信,再由SSL和TCP通信。
SSL:采用非对称加密(公开密钥加密)方式:
一把叫做私有密钥(解密使用)
另一把叫公开密钥(加密使用)(为了证明公开密钥是可信的,服务器可以向数字证书认证机构CA提出申请)
发送密文的一方,使用对方的公开密钥进行加密处理,对方收到被加密的信息,使用自己的私有密钥进行解密
另外一种对称加密(共享密钥加密)方式:
加密解密使用同一个密钥,所以需要把密钥也发给对方,可是发送密钥也是不安全的
确认访问用户身份的认证
BASIC基本认证
DIGEST摘要认证
SSL客户端认证
FormBase基于表单认证
HTTP的瓶颈
一条连接上只能发送一个请求
请求只能从客户端开始
解决:AJAX,websocket
HTTP请求报文格式:
请求行+请求头部+请求数据
HTTP/1.1特性:
keep-alive,建立长连接
pipelining 管道,浏览器的多个请求可以同时发到服务器,但是服务器的响应只能够一个接着一个的返回
HTTP2.0特性:
1.多路复用,在一条连接上,可以同时发起无数个请求,并且响应可以同时返回
2. 服务器将响应主动推动到客户端缓存中,如请求html,服务器主动返回js等信息
3. 对消息头进行压缩传输,能够节省消息头占用的网络的流量。( HTTP/1.x 每次请求,都会携带大量冗余头信息,浪费带宽资源)
4.采用二进制格式传输数据,而非 HTTP/1.x 的文本格式。