OSI7层模型
1.物理层:硬件方面,定义物理设备标准,传入比特流
2.数据链路层:进行差错校验,保证安全(ARP)
3.网络层:路由选择(ICMP、IP)
4.传输层:监控数据传输服务质量,保证接受到完整的包(TCP、UDP)
5.会话层:自动寻址,建立和管理应用程序之间的通信(SSL安全套接字、TLS)
6.表示层:数据格式转换
7.应用层,向用户提供服务(http,https、DNS、DHCP等)
TCP/IP4层模型
1.网络接口层(数据链路层):包含了7层模型的物理层和数据链路层的功能
2.网络层:实现IP寻址等功能
3.传输层:TCP/UDP协议
4.应用层:提供服务,有会话层到应用层的功能
输入URL到展示发生了什么
DNS解析,TCP连接,发送HTTP报文
HTTP和HTTPs的区别(重要)
HTTP明文传输,有风险,HTTPs使用密钥
非对称加密:
加密使用的密钥和解密使用的密钥是不相同的,HTTPS在数字证书验证的时候,采用的RSA密码体制就是一种非对称加密
对称加密:
加密使用的密钥和解密使用的密钥是相同的,也就是说加密和解密都使用同一个密钥,加密算法是公开的,密钥是加密者和解密者绝对保密的
HTTPS的连接过程
- Client Hello
发送自己支持的算法 - Server Hello
选择支持的算法,发送给客户端 - 服务器端发送证书
证书包含了签名算法和签名值 - 客户端验证证书
从证书中获取证书颁发的机构,判断是不是信任机构;
从信任机构中获取公钥解密证书的签名值,获取一个Hash值Hash1,再对内容解密,得到Hash2,Hash1和Hash2相等则证书合法 - 客户端生成随机数,通过证书的公钥进行非对称加密,发送到服务器
客户生成一个随机数,通过已知的加密算法,使用公钥加密随机数 - 服务器使用私钥解密,获取随机数,将随机数设为密钥,使用对称加密发送数据
使用私钥解密随机数,将随机数设置为密钥,之后使用该随机数进行对称加密
三次握手和四次挥手
三次握手
缺一不可,缺了最后一个服务端无法确定客户端是否正常
四次挥手
双方都是发送了FIN报文后进入半关闭状态
第二个FIN不能缺,可能ACK和FIN之间还有数据传输
time_wait,客户端接收到FIN后进入time_wait状态,持续时间2MSL(报文最大生存时间)
原因:为保证最后一个ack能到达服务器,如果超时服务器会再发FIN,如果直接关闭则收不到,服务端不能进入close状态,浪费资源
2MSL保证本次连接的报文完全消失,避免本次连接的报文出现在下一次连接中
TCP的传输可靠性
1.建立连接:三次握手
2.序号:保证有序到达
3.合理分片:根据最大传输单元MTU进行分片
4.校验:使用校验和检验
5.超时重传
6.流量控制:滑动窗口
7.拥塞控制:慢启动(指数增长),拥塞避免(线性增长),快速重传和快恢复(发送方收到重复确认,表示有包丢失,立即重传已经丢失的包。发送方将发送窗口减小一般,并慢慢增加发送窗口大小)