本文知识点:
1.TCP/IP的四层是什么。
2.TCP的三次握手。
3.http的协议方法有哪些以及区别。
4.cookie是什么,如何管理。
5.http的错误码。
6.https的原理
一、TCP/IP分为四层:应用层、传输层、网络层、链路层。
1.应用层
应用层决定了向用户提供应用服务时的通信活动。
FTP(文件传输协议)和DNS(域名系统)域名系统提供域名到ip地址的解析服务、http协议都是处于改层。
2.传输层
传输层对上层应用层、提供处于网络连接中的两台计算机之间的数据传输。
传输层有两个不同的协议:TCP(传输控制协议)和UDP(用户数据报协议)、UDP不能保证数据无误的传输,协议不可靠。
3、网络层(IP)
用来处理网络上的数据包,数据包是网络传输的最小数据单位,该层规定了通过怎么样的路径到达对方计算机,并把数据包传送给对方。
与对方计算机之间通过多台计算机或者网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。
4、链路层(数据链路层、网络接口层)
用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、网卡,及光纤等物理课件部分。硬件上的范畴均在链路层的作用范围之内。
二、TCP的三次握手
为了将数据准确无误的传递到目标处,TCP进行了三次握手,握手采用TCP的标志 -----SYN(synchronize)和ACK(acknowledgement)。
客户端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息,最后客户端再回传一个带ACK标志的数据包,代表握手结束。
三、URL和URI区别
URL是统一资源定位符,URI是统一资源标识符,URI用字符串标识某一互联网的资源,而URL标识资源的地点(互联网所处的位置)。
四、HTTP协议
1.HTTP协议请求报文
请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成。
2.HTTP协议响应报文
响应报文是由西一版本、状态码以及结识状态码的短语,可选响应首部字段和实体组成的。
3.HTTP协议方法
GET:获取资源
用来请求访问已被URI标识的资源。制定的资源经服务器解析后返回响应内容,也就是说请求的资源是文本,那就保持原样返回。
POST:传输实体主体
虽然GET方法也能传输实体主体,但是一般不用GET方法进行传输,而是用POST,POST请求参数在body中,用户不可见,而get传输内容拼接在URL中,用户可见,安全性较差。
PUT:传输文件
用来传输文件,就像FTP协议的文件上传一样,要求在请求报文中主体重包含文件内容,然后保存到URI指定的位置。
但是PUT不带验证机制,存在安全问题,web网站一般不使用。
HEAD:获取报文首部
HEAD和GET一样,只是不返回报文主体,用于确认URI的有效性及资源更新的日期时间等。
DELETE:删除文件
与PUT相反的方法,用来按请求URI删除制定文件。
与PUT一样不带验证机制,存在安全问题,web网站一般不使用,使用必须配合程序验证机制一起使用。
OPTIONS:询问支持的方法
OPTIONS方法用来查询针对请求URI指定资源的支持方法。
TRACE:追踪路径
让web服务器端将之前的请求通信环会给客户端的方法。
CONNECT:要求用隧道协议连接代理
要求和代理服务器通信时建立隧道,实现隧道协议进行TCP通信,主要使用SSL(安全套接字)和TSL(传输层安全)协议把通信内容加密后经网络隧道传输。
HTTP1.0和HTTP1.1支持方法:
4、Cookie的状态管理
HTTP是无状态协议,他不对之前发审过的请求和响应的状态进行管理,也就是说,无法根据之前的状态进行本次的请求,比如登录态,为了解决这个问题,引入Coookie技术,Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。
Cookie会根据从服务端发送的响应报文内的一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie,当下次客户端再往服务器发送请求时,客户端会自动在请求报文中假如Cookie值发送出去。
服务端发现客户端的Cookie后,会根据服务器记录,检查哪一个客户端发来的请求,最后得到之前的状态信息。
客户端和服务端Cookie交互流程:
5.HTTP状态码
状态码是当客户端向服务端发送请求时,描述返回请求结果,借助状态吗,用户可以知道服务端是否出错。
2XX 成功
1)200 OK
2)204 No Content 请求处理成功,但是没资源返回
3)206 Partial Content 请求部分资源返回成功。
3XX 重定向
3XX结果表明浏览器需要执行某些特殊处理以正确请求
1)301 Moved PerManently 永久性重定向,表示资源被分配新的URI,要用新的URI访问。
2)302 found 临时性重定向,表示资源被分配新的URI,希望用户本次用新的URI访问,只是临时性的,已移动的资源对应的URL,捡来还有可能改变。
3)303 See Other 改状态码表示,请求的URI存在着另一个URI,应使用GET方法定向获取请求资源。
4)304 Not Modified 表示客户端发送附带条件的请求时,服务端允许请求访问资源,但是未满足条件的情况
4XX 客户端错误
1)400 Bad Request 表示报文中有语法错误。
2)401 Unauthorized 表示需要认证(BASIC认证或者DIGEST认证)
3)403 ForBidden 服务器资源禁止访问。
4)404 Not Found 服务器找不到资源。
5XX 服务器错误
1)500 Internal Server Error 表示服务器端在执行请求时发生了错误。
2)503 Service Unavailable 服务器超负载或者停机维护无法处理请求。
6.HTTP缺点
1)通信使用明文,没有加密,可能被窃听。(通过加密解决)
2)不验通信方的身份,因此可能遭遇伪装。(通过证书解决)
3)无法证明报文完整性,可能已经遭篡改。(通信时会发送内容和内容的hash值用来验证完整性)
7.HTTPS诞生
因为HTTP协议存在上面的三个问题,存在安全隐患,所以通过SSL(安全套接字)和HTTP协议组合使用,加密HTTP的通信内容,这被称为HTTPS(HTTP sercure 超文本传输安全协议)。
HTTP+加密+认证+完整性保护 = HTTPS
HTTP和TCP通信,变成HTTP和SSL通信,SSL和TCP通信。
1)HTTPS混合加密机制
非对称加密:一个公钥和一个私钥,不需要传输私钥,安全性较高看,但是处理速度慢。(RSA、Elgamal)
对称加密:一个私钥,双方持有,需要传输私钥,容易被窃取,安全性低,处理速度快。(DES算法,3DES算法)
混合加密利用两者优点:采用非对称加密算法的公钥,加密对称加密的私钥,传输数据使用对称加密的私钥加密数据,既保证数据传输安全,也能保证秘钥安全。
2)证明公开密钥正确性的证书
为了证明公钥的真实性,引入数字证书机构的认证机构的公开密钥证书。
服务端向证书机构申请证书-》机构验证身份并利用公钥做数字签名,将公开密钥和证书绑定一起-》服务端将证书发送给客户端-》客户端利用证书的公开密钥(注意不是服务端的公开密钥),对证书进行验证,为了保证证书公钥安全传给客户端,一般浏览器会内置常用机构的公开密钥,这样就保证了公开密钥的真实性。
3)HTTPS的安全通信机制
通信机制的主要过程:
1.客户端通过发送Client Hello报文开始SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件列表(算法及密钥长度)
2.服务器发送Certificate报文。报文中包含公开密钥证书。
3.客户端利用服务端下发的证书,加密随机数,也就是私钥,发给服务端。
4.服务端收到私钥,用证书私钥解密,获取客户端发送私钥。
5.两端利用客户端私钥进行通信。
引用:
https://item.jd.com/11449491.html 图解HTTP书籍
http://www.wxtlife.com/2016/03/27/详解https是如何确保安全的?/