计算机网络面试题整理

2021年09月15日 阅读数:4
这篇文章主要向大家介绍计算机网络面试题整理,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

计算机网络面试题整理

我们来回顾一下上次分享到的mongodb的安装和使用linux

  • mongodb 的介绍
  • mongodb 如何安装
  • mongodb 如何简单使用
  • GO 如何操做 mongodb

要是对于mongodb还有点兴趣的话,能够查看文章 一文便知 GO 中mongodb 的安装与使用面试

今天我们来看点面试题mongodb

计算机网络面试题

网络字节序:

大端模式,低地址存高字节segmentfault

本地字节序:

小端模式,低地址存低字节浏览器

三次握手

  • 主动发起链接端,发送SYN标志为,请求创建链接。携带序号,数据字节大小(0),滑动窗口大小
  • 被动接受端,发送ACK应答,SYN标志。携带序号,数据字节大小(0),确认序号,滑动窗口大小
  • 主动发起链接端,发送ACK应答,携带确认序号

四次挥手

  • 主动关闭链接端,发送FIN,
  • 被动关闭端,发送ACK。 -- 半关闭
  • 被动关闭端,发送FIN
  • 主动关闭端,发送ACK应答 -- 链接所有关闭

TCP第三次握手失败会出现什么

若是此时ACK在网络中丢失,过了超时计时器后,那么Server端会从新发送SYN+ACK缓存

重传次数根据/proc/sys/net/ipv4/tcp_synack_retries来指定,默认是 5安全

若是重传指定次数到了后,仍然未收到ACK应答,那么一段时间后,Server自动关闭这个链接服务器

可是Client认为这个链接已经创建,若是Client端向Server写数据,Server端将以RST包响应,方能感知到Server的错误。网络

当失败时服务器并不会重传ack报文,而是直接发送RTS报文段,进入CLOSED状态并发

这样作的目的是为了防止SYN洪泛攻击

长链接和短链接区别和优缺点

长链接:链接->传输数据->保持链接 -> 传输数据-> ………..->直到一方关闭链接,可能是客户端关闭链接

长链接指创建SOCKET链接后不论是否使用都保持链接,但安全性较差。

  • 优势

长链接能够省去较多的tcp创建/关闭的操做,减小浪费,节省时间,对于频繁请求资源的客户,较适用于长链接;

  • 缺点

随着客户的愈来愈多,server迟早会有扛不住的一天,这时须要采起一些策略,如关闭一些长时间不读写操做的链接,这样能够避免一些恶意链接致使server端服务受损,若是条件再容许,就能够以客户端为颗粒度,限制每一个客户端的最大链接数

短链接

链接->传输数据->关闭链接

好比HTTP是无状态的的短连接,浏览器和服务器每进行一次HTTP操做,就创建一次链接,但任务结束就中断链接。

  • 优势:

短链接对于服务器来讲较为简单,存在的链接都是有用的链接,不须要额外的控制

  • 缺点:

客户端链接频繁,会在tcp的创建和关闭上浪费时间。

滑动窗口

发送给对端链接,本段的缓冲区实时大小,保证数据不会丢失。

网络通讯中 read 函数的返回值:

  • = 0

代表对端已经关闭链接

  • = -1

判断errno的状况

  • errno == EAGAIN|EWOULDBLOCK

设置了非阻塞的方式,读的时候,数据尚未到达

  • errno == EINTR

被信号中断

  • errno == 其余状况

异常

查看端口号

netstat -antp

端口复用设置

int opt = 1; 
setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,(void *)&opt,sizeof(opt));

半关闭(FIN_WAIT_2)

终止一个链接要通过 4次 握手

这由TCP的半关闭(half-close)形成的

CLOSE_WAIT 状态的问题状况

父进程打开了socket,而后用派生子进程来处理业务,父进程继续对网络请求进行监听,永远不会终止

客户端发FIN过来的时候,处理业务的子进程的read返回0,子进程发现对端已经关闭了,直接调用close()对本端进行关闭

实际上,仅仅使socket的引用计数减1,socket并没关闭。从而致使系统中又多了一个CLOSE_WAIT的socket。。。

如何避免上述状况?

子进程的关闭处理应该是这样的:

shutdown(sockfd, SHUT_RDWR);

close(sockfd);

这样处理,服务器的FIN会被发出,socket进入LAST_ACK状态,等待最后的ACK到来,就能进入初始状态CLOSED

shutdown()的函数说明

linux系统下使用 shutdown系统调用来控制socket的关闭方式

int shutdown(int sockfd,int how);

参数 how容许为shutdown操做选择如下几种方式:

  • SHUT_RD

关闭链接的读端。也就是该套接字再也不接受数据,任何当前在套接字接受缓冲区的数据将被丢弃。进程将不能对该套接字发出任何读操做。对TCP套接字该调用以后接受到的任何数据将被确认而后被丢弃。

  • SHUT_WR

关闭链接的写端。

  • SHUT_RDWR

至关于调用shutdown两次:首先是以SHUT_RD,而后以SHUT_WR

注意:

在多进程中若是一个进程中shutdown(sfd, SHUT_RDWR)后其它的进程将没法进行通讯,若是一个进程close(sfd)将不会影响到其它进程

2MSL时长 TIME_WAIT

必定出如今主动关闭的一端,保证最后一个ACK对端可以收到。

1.TTL是什么?

TTL是 Time To Live的缩写

该字段指定IP包被路由器丢弃以前容许经过的最大网段数量

TTL是IPv4包头的一个8 bit字段。

2. TTL的做用

TTL的做用是限制IP数据包在计算机网络中的存在的时间。

TTL的最大值是255,TTL的一个推荐值是64

3.TTL原理

虽然TTL从字面上翻译,是能够存活的时间,但实际上TTL是IP数据包在计算机网络中能够转发的最大跳数

TTL字段由IP数据包的发送者设置,在IP数据包从源到目的的整个转发路径上

每通过一个路由器,路由器都会修改这个TTL字段值,具体的作法是把该TTL的值减1,而后再将IP包转发出去。

若是在IP包到达目的IP以前,TTL减小为0,路由器将会丢弃收到的TTL=0的IP`包并向IP包的发送者发送ICMP` 发送超时报文。

c/s 模型和 b/s 模型的优缺点

c/s模型

优势:

C/S的最大优势是可以实现复杂的应用构造,安全性高,数据传输速度快。

  • 结构简单。
  • 支持分布式、并发环境。有效提升资源的利用率和共享程度。
  • 服务器集中管理资源,有利于权限控制和系统安全。
  • 可扩展性较好。客户和服务器都可单独地升级

缺点:

  • 不易部署(客户端逐一安装、挑平台)
  • 维护困难(客户端需注意更新)
  • 开发工做量大

工做过程

  • 打开一个通讯通道,告知服务器进程所在主机将在某一端口上接受客户请求
  • 等待客户的请求到达该端口
  • 服务器接收到服务请求,处理该请求并发送应答
  • 返回至第2步,等待并处理另外一个客户的请求
  • 关闭服务器

b/s 模型

优势:

B/S 最大的优势就是能够在任何地方进行操做而不用安装任何专门的软件,只要有一台能上网的电脑就能使用

客户端零安装、零维护。系统的扩展很是容易。

分布式、易扩展、共享性强

相比较传统的C/S的优点:

  • 1.易部署(各平台自带通用浏览器)
  • 2.容易维护(服务器端改变网页内容可实现全部用户同步更新)
  • 3.页面动态刷新,响应速度明显下降。
  • 开发工做量小

缺点:

  • 不能缓存大量数据

工做过程

  • 用户经过浏览器向Web服务器提出HTTP请求。
  • Web服务器根据浏览器请求调出相应文件,对相应文件不作处理或加以解释执行后,将纯客户端HTML代码结果返回给浏览器。
  • 浏览器接收到Web服务器发回的页面内容(纯HTML代码),显示给用户。

ping的过程和ICMP协议

过程例子

  • A电脑(192.168.2.135)发起ping请求,ping 192.168.2.179
  • A电脑广播发起 ARP 请求,查询 192.168.2.179的MAC地址。
  • B电脑应答ARP请求,向A电脑发起单向应答,告诉A电脑本身的MAC地址为90:A4:DE:C2:DF:FE
  • 知道了MAC地址后,开始进行真正的ping请求,因为B电脑能够根据A电脑发送的请求知道源MAC地址,全部就能够根据源MAC地址进行响应了。

ping命令是依托于ICMP协议的,ICMP协议的存在就是为了更高效的转发IP数据报和提升交付成功的机会。

ping命令除了依托于ICMP,在局域网下还要借助于ARP协议,ARP协议能根据IP地址查出计算机MAC地址。

ARP是有缓存的,为了保证ARP的准确性,计算机会更新ARP缓存。

ICMP

ICMP是(Internet Control Message Protocol)Internet控制报文协议。

ICMP协议是一种面向无链接的协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。ICMP是一个网络层协议。

主要功能主要有:

  • 确认IP包是否成功到达目标地址
  • 通知在发送过程当中IP包被丢弃的缘由

总结

  • 计算机网络的三次握手,四次挥手
  • TCP 第三次握手失败会出现什么
  • 长链接和短链接的优缺点
  • 滑动创后
  • 网络通讯中的read 函数
  • 什么是半关闭
  • C/S 模型 和 B/S 模型
  • ICMP

朋友们,写做不易

你的支持和鼓励,是我坚持分享,提升质量的动力

好了,本次就到这里

技术是开放的,咱们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是小魔童哪吒,欢迎点赞关注收藏,下次见~