计算机网络常见面试题(第四弹)

1、说说TCP 流量控制?

流量控制是为了控制发送方发送速率,保证接收方来得及接收。

接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。

实际上,为了避免此问题的产生,发送端主机会时不时的发送一个叫做窗口探测的数据段,此数据段仅包含一个字节来获取最新的窗口大小信息。

2、TCP三次握手和四次挥手的过程?

握手:Z
挥手:> <

3、如何确定请求由谁处理?

1)根据协议和端口号选定Service和Engine
2)根据域名和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) 来判断;

如果是长连接,通过消息头字段 Content-Length(静态数据) 或 Transfer-Encoding(动态数据)来判断。

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 地址,数据包被发送给目标地址的主机。



#面试题目#
全部评论

相关推荐

头像
03-13 15:53
Java
点赞 评论 收藏
转发
2 21 评论
分享
牛客网
牛客企业服务