计算机网络常见面试题(第四弹)
1、说说TCP 流量控制?
流量控制是为了控制发送方发送速率,保证接收方来得及接收。
接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。
2、TCP三次握手和四次挥手的过程?
握手:Z挥手:> <
3、如何确定请求由谁处理?
1)根据协议和端口号选定Service和Engine2)根据域名和IP选定Host
3)根据URI选定Context/Web应用
4、连接与请求的关系?
连接是TCP层面的(传输层),对应socket;请求是HTTP层面的(应用层),必须依赖于TCP的连接实现;
一个TCP连接中可能传输多个HTTP请求。
5、TCP 的 Keep alive 和 HTTP 的 Keep-alive 有什么区别?
TCP的keep alive是检查当前TCP连接是否活着,HTTP的Keep-alive是要让一个TCP连接活久点。6、客户端如何判断服务端数据已发送完成?
如果是短连接,通过服务端返回的 EOF(-1) 来判断;
7、一个服务器最多能对外提供多少端口?
65535,这是由TCP决定的,2^16次方,两字节。8、分布式事务有哪几种解决方案?
• 两阶段提交(2PC)• 三阶段提交(3PC)
• 补偿事务(TCC):较为简单,但数据一致性较差。
• 本地消息表(异步确保)
• MQ事务消息
9、两阶段提交的缺陷有什么?
- 同步阻塞。所有事务参与者在等待其它参与者响应的时候都处于同步阻塞状态,无法进行其它操作。
- 单点问题。协调者在 2PC 中起到非常大的作用,发生故障将会造成很大影响。特别是在阶段二发生故障,所有参与者会一直等待状态,无法完成其它操作。
- 数据不一致。在阶段二,如果协调者只发送了部分 Commit 消息,此时网络发生异常,那么只有部分参与者接收到 Commit 消息,也就是说只有部分参与者提交了事务,使得系统数据不一致。
- 太过保守。任意一个节点失败就会导致整个事务失败,没有完善的容错机制。
10、IP协议是如何工作的?
由于网络分同网段和不同网段两种情况,工作方式如下:同网段
如果源地址主机和目标地址主机在同一网段,目标 IP 地址被 ARP 协议解析为 MAC 地址,然后根据 MAC 地址,源主机直接把数据包发给目标主机。
如果源地址主机和目标地址主机在不同网段,数据包发送过程如下:
1. 网关(一般为路由器)的 IP 地址被 ARP 协议解析为 MAC 地址。根据该 MAC 地址,源主机将数据包发送到网关。
2. 网关根据数据包中的网段 ID 寻找目标网络。如果找到,将数据包发送到目标网段;如果没找到,重复步骤(1)将数据包发送到上一级网关。
3. 数据包经过网关被发送到正确的网段中。目标IP地址被ARP协议解析为 MAC 地址。根据该 MAC 地址,数据包被发送给目标地址的主机。