本文对面试/笔试过程中经常会被问到的一些关于计算机网络的问题进行了梳理和总结。 不是很全,后面遇到后会慢慢补充。
1.网络协议的体系结构
1.OSI七层网络协议
物理层,数据链路层,网络层,运输层,会话层,表示层,应用层
2.TCP/ID四成网络协议
网络接口层, 网际/IP层, 运输/TCP/UDP层, 应用层
3.五层网络协议
物理层,数据链路层,网络层,运输层,应用层
2.TCP三次握手和四次挥手
1.三次握手
三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的
- 客户端–发送带有 SYN 标志的数据包–一次握手–服务端
- 服务端–发送带有 SYN/ACK 标志的数据包–二次握手–客户端
- 客户端–发送带有带有 ACK 标志的数据包–三次握手–服务端
2.四次挥手
任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。
- 主动方-发送一个FIN,用来关闭数据传送连接
- 被动方-收到这个FIN,它发回一个ACK
- 被动方-关闭与客户端的连接,发送一个FIN给主动方
- 主动方-发回ACK报文确认
3.TCP协议如何保证可靠传输
- 应用数据被分割成 TCP 认为最适合发送的数据块。
- TCP给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
- 校验和:TCP将保持它首部和数据的检验和。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。
- TCP的接收端会丢弃重复的数据。
- 流量控制:TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP使用的流量控制协议是可变大小的滑动窗口协议(TCP利用滑动窗口实现流量控制)
- 拥塞控制: 当网络拥塞时,减少数据的发送。
- 停止等待协议: 为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。
- 超时重传: 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
4.浏览器显示网页过程
- 浏览器查询域名IP地址-DNS
- 浏览器向web服务器发送http请求-cookies会发给服务器
- 服务器处理请求,返回一个HTML响应
- 浏览器显示HTML
通信细节: - UDP:浏览器使用UDP协议向DNS服务器获取服务器IP地址
- TCP:浏览器使用TCP协议和服务器建立连接
- IP:浏览器发送数据在网络层使用IP协议
- OPSF:路由器之间使用OPSF协议传递IP数据包
- ARP:路由器和服务通信时使用ARP将IP转换MAC地址
- HTTP:浏览器使用HTTP协议访问网页
5.HTTPS通讯过程
- 客户端发送请求,支持协议版本,支持加密方法,一个随机数A
- 服务器应答,确认协议版本,确认加密算法,服务https公钥,一个随机数B
- 客户端发送请求,一个随机树C(使用http公钥加密)
- 服务器应答,发送的所有内容的hash值,用来供客户端校验
- 客户端和服务端都有ABC三个随机数,客户端和服务端用商定的算法利用3个随机数生成一个对话秘钥
- 使用对话秘钥来通信, 下面就是http亲求过程
6.四层七层SLB区别
四层SLB: 通过报文中的IP地址和端口,再加上负载均衡设备所采用的负载均衡算法,最终确定选择后端哪台下游服务器。以TCP为例,客户端向负载均衡发送SYN请求建立第一次连接,通过配置的负载均衡算法选择一台后端服务器,并且将报文中的IP地址信息修改为后台服务器的IP地址信息,因此TCP三次握手连接是与后端服务器直接建立起来的。 性能好,后台服务器可以直接收到DDos攻击
七层SLB: 在应用层选择服务器,只能先与负载均衡设备进行TCP连接,然后负载均衡设备再与后端服务器建立另外一条TCP连接通道。因此,七层设备在网络性能损耗会更多一些。 性能较差,负载均衡可以隔离服务器,过滤恶意流量,较安全