1. 计算机网络分层
记住集线器工作在物理层,交换机工作在链路层,路由器工作在网络层,传输层,应用层知识是面试重点。
2.TCP和UDP的区别
UDP用户数据报协议是无连接,尽最大可能交付,没有拥塞控制,支持一对一,一对多,多对一和多对多通讯。
TCP传输控制协议是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流,每一条TCP连接只能是点对点连接。tcp的结构包括源目的地址,***,确认***,窗口大小,校验和,数据)
注意视频聊天和直播使用UDP协议。
3. TCP三次握手和四次挥手
第一次握手:主机A发送位码syn=1,随机产生seq number的数据包到服务器,主机B由syn=1知道, A要求建立联机。
第二次握手:主机B收到请求后确认连接信息,向A发送ack number = (A的seq+1), syn=1,ack=1 , 随机产生一个seq的包
第三次握手: 主机A收到后检查ack number是否正确,若正确,主机A再次发送ack number = (B的seq+1), ACK=1, 主机B收到完成握手
表面上来看,两次握手即可以建立起为什么要三次:
假如由于网络拥塞,已经失效的连接请求A又传到B,那么无需A确认就能又建立起连接。
为什么四次挥手
由于TCP是全双工通信,前两次挥手断开A到B的连接,后两次挥手,断开B到A的连接。
客户端发送了FIN连接释放报文之后,服务器收到了这个报文,就进入了CLOSE_WAIT状态,这个状态是为了让服务器端发送还未传送的数据,传送完毕之后,服务器会发送FIN连接释放报文。
TIME_WAIT
客户端接收到服务端的FIN报文进入此状态,此时并不是直接进入CLOSED状态,还需要等待一个时间计时器设置的时间2MSL,这么做有两个理由
确保最后一个确认报文能够到达,如果B没有收到A的最后一次报文,会重新发送断开连接请求,A等待一段时间就是为了处理这种情况的发送。
4. TCP协议-如何保证传输可靠性
校验和
确认应答和***
超时重传
连接管理
流量控制: TCP根据接受端对数据的处理能力,决定发送端的发送速度,这个机制就是流量控制。TCP协议的报头信息当中,有一个16位字段的窗口大小,发送方根据ACK报文里的窗口大小的值的改变进而改变自己的发送速度。(滑动窗口)
拥塞控制: 慢开始,拥塞避免,快重传,快恢复。
慢开始算法,不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小。
拥塞避免: 让拥塞窗口缓慢增长。
快重传和快恢复: 发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器周期时间到期。
5. DNS域名解析
6. http报文结构和状态码
(1)请求格式
请求行,请求头,空行,请求数据。
(2) 响应格式
状态行, 消息报头, 响应正文。
状态码:
200 OK 客户端请i去成功
301 永久性重定向
302 临时重定向
400 客户端请求错误
401 请求未授权
403 拒绝提供服务
404 未找到
500 服务器错误
501 服务器错误
503 服务器当前不能处理请求。
HTTP 1.1长连接
7. GET与POST比较
作用:GET用户获取数据,POST用于提交数据
参数:GET和POST都能使用参数,GET参数在URL中,POST参数在实体中。
幂等:GET是幂等
可缓存: GET响应可缓存
8. Cookie作用,完全性问题和Session比较
Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器之后向同一服务器再次发送请求时被携带,用于告知服务端两个请求是否来自同一个浏览器。
Session存储在服务端,比Cookie更加完全。
9. 流水线
流水线在同一条长连接上发出连续的请求,而不用等待响应返回。
10. http的安全性问题
使用明文通信,内容容易被窃听。
不严重通信方的身份
无法证明报文的完整性
通过使用SSL , HTTPS具有了加密(防窃听),认证(防伪装),完整性保护(防篡改)
HTTPS基于混合的加密过程。既有对称加密,又有非对称加密。
11. HTTPS加密的过程
(1) 客户使用https的URL访问Web服务器,要求与Web建立SSL连接
(2)Web服务器收到客户端请求后,会把服务器证书信息(证书中有公钥) 传送一份给客户端。
(3)客户端验制证书合理性,客户端与浏览器协商加密等级
(4)客户端建立会话**,用公钥加密,传给服务器。
(5)服务器用私钥解密,得到对称**。
(6)双方用对称**通信。
12. 输入网站发送的事
第一步:域名解析(浏览器缓存,系统缓存,路由器缓存,DNS 服务器,根域名服务器)
第二步:建立TCP连接,发送HTTP请求。
第三步:HTTP响应
第四步:解析渲染