面试:网络知识汇总

面试题经常问到:

1.首先根据URL访问DNS服务器找到需要方位的IP,  因为IP才是真正第对应一台真正的机器;

2.get 到IP的时候,这个时就会三次握手, 正常的走一次TCP/IP请求;

  注意:

源IP:本地机器IP 

源端口号:随机的一个端口号,一般是大于1000,

目标IP: 刚刚获得的IP

端口号: 80 

3.组织HTTP请求参数{应用层}  ,TCP组装参数[传输层]--->要做的事情就是封装HTTP参数,然后将端口号 封装进去;

4 网络层 IP层将 源IP 目标IP封装进去,并封装TCP参数;

5 链路层封装MAC信息, 物理层发送消息出去,电信号转光信号传输了;

6 服务端接收到数据之后,一层层解析,根据端口号找到相应的服务, 然后把请求路径,请求参数解析出来,

7 程序根据请求处理这些逻辑, 组织返回参数,和之前逻辑一样,封装参数 发送出去,

8 浏览器拿到结果,进行解析渲染到页面上,完成了一次请求,

9 这个时候,还需要四次挥手释放掉这个连接. 真正的一次请求完成了.

 

面试点2: HTTP请求与HTTPS之间的区别

答案: HTTP请求传输是明文传输, 请求数据和返回数据是可以被解析看到的.

HTTPS是HTTP+ SSL[SSL=socket secrurity layer 安全套接字层],是密文传输的,保证了消息的安全性

一次HTTPS请求的过程;

首先 HTTPS请求从服务端获得加密的公钥;

第二步: 客户端会随机生层一个对称的密钥, 通过公钥加密,然后发送服务端,

第三步: 服务端就会用私钥对穿过去的加密随机数,进行解密; 这样随机数就能解出来了,

第四步:客户端用对称秘钥进行加密,传输,这样服务端就可以用对称秘钥进行解密;

整体流程发送了三次请求:

-->获取公钥, 

-->第二步发送随机数[作为对称加密秘钥]

-->发送对称加密数据;

 

面试题3: TCP粘包现象的处理方案

什么是粘包? --->TCP在发送数据的时候,小数据就会合并几个一起发送. 通过nagle 算法合并小包一起发送;

但是接收方的时候, 接收方接收到数据不会立马消费,而是将将数据放入缓存区,[这就是问题出现的七点]

应用程序在读取时间的时候,是不知道要读取多大的数据的,举个例子: 读 1024*1024数据的时候, 可能一个数据包被切成了两半;

造成数据不能正常消费.

针对这种现象的解决方案是:

1.发送定长的数据,这样每段数据都会被正常消费;

2.在数据包之间添加特殊的分割字符,这样能读取数据的时候,按照分隔符读取.

3. 禁用nagle算法.

 

面试题4: 四次挥手状态转移;

1.客户端: FIN_WAIT1 --->FIN_WAIT2 --->TIME_WAIT---CLOSE

2 服务端:close_wait--->last-ack;

  为什么要四次挥手, 为什么是2MSL [max segment live] 最大块存活时间

  答案: 四次挥手是两次半双工的关闭. 

  2MSL的时间? 第一:保证消息能正常关闭,即使消息没有正常到达服务端,也能保证下次接受到关闭消息,

    2 保证消息能在网络中安全的消失.

 

面试题5:TCP是怎么保证安全传输的?

答案: 1 面向连接. 2.超时重传,3 传输包校验, 4 流量控制,5 拥塞控制.

以上就能保证数据能够正常送达.

 

面试题6: 流量控制过程是怎样的?

答:流量控制是通过滑动窗口机制实现的,  发送方的窗口大小是根据接收方的接收能力来控制的.

发送方维护了一个三个指针 P1  窗口后沿  P2:尚未发送的第一个字节. P3:是指窗口的前沿,表示可用窗口的大小.

  <--发送并已经确认数据--->P1<---已发送但未确认的数据----->P2<[待发送的起始数据]--------可用窗口大小------>P3<---未发送的数据,--->

 

面试7: 拥塞控制的整个流程?

拥塞控制有两个算法  慢启动算法和拥塞避免算法,

其中一个阈值 大于阈值用拥塞避免算法,小于阈值用慢启动算法.

划重点了:   

慢启动是指数形式增长的,

拥塞避免算法是 +1形式增长的.

注意:当出现网络拥塞的时候,此时阈值就是当前窗口的一半, 然后重新走:---->慢启动--->新阈值<--拥塞避免算法;

----->快速重传和快速恢复[思路是这样的}

当发送端收到三个重复确认的请求时候, 就立即重新发送待确认的数据.

原因是这样的::接收端收到一个失序的数据包,中间丢包了,之后的就不在确认了,然后发送待确认的丢包序号,发送端就会重新发送.

举例说明: 发送端:  M1--M2--M3--M4--M5   接收端接收到: M1--M2-(--)-M4--M5 丢了M3 这个时候返回的确认信号就是M3M3M3

三次同样的信号之后,就会重新发送M3; 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章