http和https

基本概念:
http:是一个客户端和服务端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的超文本传输协议。
https:是以安全为目标的HTTP下加入SLL层进行加密。其作用就是:建立一个信息安全通道,来确保数据的传输,确保网站的真实性。

http和https的区别和优缺点:
http是超文本输出协议,信息是明文输出,https协议要比http协议安全,https是具有安全性的ssl加密传输协议,可以防止数据在传输过程中被窃取、改变、确保数据的完整性(当然也不是绝对性的安全)
http协议的默认端口是80,https默认端口是443。
http的连接是很简单,是无状态的,https握手阶段比较费时,会使页面加载时间延长50%,增加了10~20%的耗电。
https缓存不如http的高效,功能越强大的证书费用越高。
sll证书需要绑定ip,不能在同一个ip上绑定多个域名,ipv4资源支持不了这种消耗。

https协议的工作原理
客户端在使用https方式与web服务器通讯时有以下几个步骤:
1.客户端使用https url访问服务器,则要求web服务器建立ssl链接。
2.web服务器接收到客户端请求之后,会将网站的证书(证书包含了公钥),传输给客户端。
3.客户端和web服务端开始协商ssl链接的安全等级,也就是加密等级。
4.客户端浏览器通过协议协商一致的安全等级,建立会话秘钥,然后通过网站的公钥来加密会话密钥,并传送给网站。
5.web服务器通过自己的私钥解密出会话密钥。
6.web服务端通过会话密钥加密与客户端之间的通信。

TCP三次握手
1.第一次握手:建立链接时,给客户端发送syn包,(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号。
2.第二次握手:服务器接收到syn包后并确认客户的SYN(ack=j+1),同时也发送一个自己的SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
3.第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进去ESTABLISHED(TCP链接成功)状态,完成三次握手。

TCP四次挥手
1)客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
2)服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
3)客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最 后的数据)。
4)服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
5)客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
6)服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

TCP/IP / 如何保证数据包传输的有序可靠?
对字节流分段并进行编号然后通过 ACK 回复和超时重发这两个机制来保证。
1)为了保证数据包的可靠传递,发送方必须把已发送的数据包保留在缓冲区;
2)并为每个已发送的数据包启动一个超时定时器;
3)如在定时器超时之前收到了对方发来的应答信息(可能是对本包的应答,也可以是对本包后续包的应答),则释放该数据包占用的缓冲区;
4)否则,重传该数据包,直到收到应答或重传次数超过规定的最大次数为止。
5)接收方收到数据包后,先进行CRC校验,如果正确则把数据交给上层协议,然后给发送方发送一个累计应答包,表明该数据已收到,如果接收方正好也有数据要发给发送方,应答包也可方在数据包中捎带过去。

TCP和UDP的区别
TCP是面向链接的,而UDP是面向无连接的。
TCP仅支持单播传输,UDP 提供了单播,多播,广播的功能。
TCP的三次握手保证了连接的可靠性; UDP是无连接的、不可靠的一种数据传输协议,首先不可靠性体现在无连接上,通信都不需要建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收。
UDP的头部开销比TCP的更小,数据传输速率更高,实时性更好。

HTTP缓存是指HTTP协议中的一种技术,通过在客户端和服务器之间存储已经获取过的资源副本,以便在将来的请求中重复使用这些资源。
HTTP缓存有两种:强制缓存和协商缓存。
强制缓存是通过HTTP响应头中设置特定字段,告知客户端在一定的有效期内直接从本地缓存中获取资源,而无需再次向服务端发送请求的一种缓存机制。
常见的控制字段包括Cache-Control和Expires。
协商缓存是HTTP缓存的一种机制,通过在请求和响应中使用一些特定的头部信息来协商客户端和服务器之间的缓存行为。
这种缓存机制允许客户端在重新获取资源时向服务器询问该资源的状态,并根据服务器返回的状态来决定是否缓存。

posted @ 2022-08-19 09:33  夏季的雨  阅读(486)  评论(0)    收藏  举报