html/http/浏览器(一)
1. 说一下http和https
答:http是超文本传输协议,用于客户端与服务器之间传递传输文本,https协议可以说为http的加密版本,在应用层http协议和传输层之间新增加了ssl层,用于文本的加密以及客户端和服务端的身份验证,相对比与http协议更加安全,在网页中多用于账号密码登录和保密性质较高的网页。
主要区别:就是除了以讲诉的不同之外,https需要有ca证书用于身份验证以及加密密钥的生成,而且使用端口也不相同,http使用80端口,而https协议使用443端口
2. https协议的工作原理
web服务器接收到客户端发送的请求之后,会将网站的证书(证书包含了公钥),返回给客户端;客户端和web服务器协商SSL连接的安全等级,也就是加密等级,客户端通过双方协商一致的加密等级,建立会话密钥,然后用客户端传递过来的公钥机密会话密钥然后进行传输,web服务器用自己的私钥解密会话密钥。Web服务器会通过会话加密与客户之间的通信。
3.TCP三次握手
首先客户端发起会话请求,SYN=1,ACK=0,seq=J;
服务端收到请求后,确认建立会话,将SYN=1,ACK=1,ack=J+1,seq=K并将自己所能接受的最大字节传送给客户端;
客户端收到后,检查ACK标志位是否为1,以及ack是否正确,正确后设置自己的最大传输字节,然后向服务端发送数据确认,此时ACK=1,ack=K+1,服务端收到后检验seq以及ack的值,正确则成功建立会话,后面继续通信。
4. TCP的四次挥手
第一次:客户端发送连接释报文,报文中FIN=1,seq=u,并且停止发送数据此时客户端进入终止等待1阶段。
第二次:服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,seq=v,此时服务器进入关闭等待阶段。客户端收到服务器的确认请求后,进入终止等待2阶段,等待服务器发送连接释放报文。
第三次:服务器将最后的数据发送完毕后,向客户端发连接送释放报文,此时服务器进入最后确认状态,等待客户端确认。
第四次:客户端收到服务器连接释放报文后,发出确认,此时客户端进入了时间等待阶段,等待2MSL时间后关闭,服务器只要收到客户端发生的确认后就关闭。
4.1如果已经建立了连接,但是客户端突然出现故障了怎么办?
TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。
5. TCP与UDP的区别
TCP是面向连接的,而UDP是无连接的,即发送数据前不建立连接
TCP提供可靠的服务,通过TCP传输的数据无差错,不丢失,不重复;UDP尽最大努力交付,不保证可靠交付,可能出现丢包。
TCP是面向字节流,分组发送;UDP面向报文,并且网络拥塞不会使得发送速率降低
TCP只能是1对1的,UDP支持一对多