了解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连接

                《图解HTTP》_第1张图片

    DNS解析:客户端提出域名解析请求,并将该请求发送给本地域名服务器;

    浏览器首先查询本地缓存,若有该记录,直接返回查询结果;

    查询顺序:1.浏览器缓存;2.系统缓存;3.路由器缓存


简单的HTTP协议

1.HTTP规定,肯定是从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送相应。

2.HTTP是无状态协议

(使用session+cookie解决需要记录状态的情景:通过在请求和相应报文中写入cookie信息)

                    《图解HTTP》_第2张图片

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》_第3张图片


HTTP/1.1特性

  1. keep-alive,建立长连接

  2. pipelining 管道,浏览器的多个请求可以同时发到服务器,但是服务器的响应只能够一个接着一个的返回

HTTP2.0特性

    1.多路复用,在一条连接上,可以同时发起无数个请求,并且响应可以同时返回

    2. 服务器将响应主动推动到客户端缓存中,如请求html,服务器主动返回js等信息

    3. 对消息头进行压缩传输,能够节省消息头占用的网络的流量。( HTTP/1.x 每次请求,都会携带大量冗余头信息,浪费带宽资源)

    4.采用二进制格式传输数据,而非 HTTP/1.x 的文本格式。