1、http和https区别
- http是超文本传输协议,https是基于ssl的安全超文本传输协议,两者都是基于http协议
- http的url开头是http://, https的url开头是https://
- http的默认端口是80,https的默认端口是443
- http无须认证证书,https需要到CA认证证书,且一般都不是免费的
- http是明文传输,https需要对数据进行加密
其实大部分的区别都是在讲https是安全的,http是不安全的,所以我们只要知道https的是如何提供安全服务的就可以在面试中滔滔不绝。在《计算机网络》(第六版)第七章第六节中有介绍,我简单归纳一下。当浏览器A访问服务器B,建立TCP连接之后,浏览器A向服务器B发送A的SSL版本和一些可选的加密算法,服务器B选择自己支持的加密算法并告诉A(协商加密算法)。服务器B向A发送一个包含其RSA公钥的数字证书,A使用该证书的认证机构CA的公开发布的公钥对该证书进行验证(服务器鉴别)。浏览器A产生一个随机秘密数,并用B的公钥进行加密后发送给B,B用公钥得到秘密数并根据第一步选定的算法对秘密数重新加密产生会话密钥(会话密钥计算)。双方用密钥加密解密传送的数据(安全数据传输)。
2、TCP和UDP的区别
《计算机网络》(第六版)第五章都在讲这两个协议
- UDP在传送前不需要建立连接,尽最大努力交付。TCP建立连接,提供可靠交付
- UDP是面向报文的,对应用层交下来的报文,既不合并,也不拆分,添加首部后就交由IP层。TCP是面向字节流的,根据对方给出的窗口值和当前网络的拥塞程度对应用层交下来的报文进行合并或拆分
- UDP支持一对一,一对多,多对一,多对多。TCP支持一对一通信,每一条TCP连接唯一地被通信两端的套接字(IP地址:端口号)确定
- UDP的首部8个字节,TCP的首部20个字节
- UDP没有拥塞控制,TCP有慢开始和拥塞避免,快重传和快恢复等拥塞控制算法
- TCP用滑动窗口进行流量控制,连接有三次握手,释放有四次挥手。
一定要知道三次握手和四次挥手的过程(《计算机网络》(第六版)第五章第九节),我来简单整理一下书上步骤。
三次握手:客户A访问服务器B,起初两端的TCP都是关闭状态,A主动打开连接,B被动打开连接。客户A向B发送一个同步请求SYN和初始序列号x后变为同步已发送状态。服务器B收到A的请求,如果B同意建立连接,那么B向A发送同步SYN、确认ACK、确认号x+1和自己的初始序列号y后变为同步收到状态。客户A收到B的确认,向B发送ACK和确认号y+1后进入建立连接状态。B收到A的确认后也变为建立连接状态。至此,TCP连接建立。
四次挥手:起初两端的TCP都是建立连接状态。A主动关闭连接,B被动关闭连接。A向B发送FIN和序列号u后状态变成终止等待1。B收到结束请求,向A发送ACK、确认号u+1和自己的序列号v后状态变为关闭等待。A收到B的确认后状态变为终止等待2。至此A到B方向的连接就释放了,如果B还要向A发送数据,A仍要接受。如果B已经没有要向A发送数据,就向A发送FIN、SYN、确认号u+1和自身序列号w,状态变成最后确认状态。A收到B的请求,向B发送ACK,确认号w+1和自身序列号u+1后变为时间等待状态。B收到A的确认后变成关闭状态。A在2MSL时间后变成关闭状态。
OSI五层模型及输入www.baidu.com后每一层的作用
- 应用层:通过域名解析系统对url进行解析获得百度服务器的ip地址
- 传输层:建立TCP连接
- 网络层:建立到达服务器的路由路径
- 数据链路层:将ip数据打包成帧,在链路层进行数据传输,保证链路传输成功到达
- 物理层:将信息转化为电信号在传输介质上进行传输