计算机网络面试题整理

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 计算机网络面试题整理

计算机网络面试题整理

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

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

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

今天咱们来看点面试题

计算机网络面试题

网络字节序:

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

本地字节序:

小端模式,低地址存低字节

三次握手

  • 主动发起连接端,发送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

朋友们,写作不易

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

好了,本次就到这里

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

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
8天前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
2月前
|
缓存 算法 网络协议
一文详细理解计算机网络 - 数据链路层(考试和面试必备)
这篇文章详细介绍了计算机网络中数据链路层的概念、基本问题、点对点信道和广播信道的数据链路协议(如PPP和CSMA/CD),以及局域网和以太网的相关知识。
193 0
一文详细理解计算机网络 - 数据链路层(考试和面试必备)
|
2月前
|
存储 网络协议 网络性能优化
一文详细理解计算机网络体系结构(考试和面试必备)
这篇文章提供了C++基础知识的快速概述,包括C++的特点、面向对象设计、组成部分、标准、学习建议、应用领域、源文件、编译器、类与对象、编译执行步骤、分号与块、标识符、基本数据类型、typedef、枚举类型、变量定义与声明等。
59 0
一文详细理解计算机网络体系结构(考试和面试必备)
|
3月前
|
网络协议 网络架构
OSPF邻居关系建立失败?揭秘网络工程师面试中最常见的难题,这些关键步骤你掌握了吗?网络配置的陷阱就在这里!
【8月更文挑战第19天】OSPF是网络工程中确保数据高效传输的关键协议。但常遇难题:路由器间无法建立OSPF邻居关系,影响网络稳定并成为面试热点。解决此问题需检查网络连通性(如使用`ping`),确认OSPF区域配置一致(通过`show running-config`),校准Hello与Dead计时器(配置`hello`和`dead`命令),及核查IP地址和子网掩码正确无误(使用`ip address`)。系统排查上述因素可确保OSPF稳定运行。
68 2
|
5月前
|
缓存 JSON 网络协议
Android面试题:App性能优化之电量优化和网络优化
这篇文章讨论了Android应用的电量和网络优化。电量优化涉及Doze和Standby模式,其中应用可能需要通过用户白名单或电池广播来适应限制。Battery Historian和Android Studio的Energy Profile是电量分析工具。建议减少不必要的操作,延迟非关键任务,合并网络请求。网络优化包括HTTPDNS减少DNS解析延迟,Keep-Alive复用连接,HTTP/2实现多路复用,以及使用protobuf和gzip压缩数据。其他策略如使用WebP图像格式,按网络质量提供不同分辨率的图片,以及启用HTTP缓存也是有效手段。
87 9
|
5月前
|
缓存 网络协议 安全
Android网络面试题之Http基础和Http1.0的特点
**HTTP基础:GET和POST关键差异在于参数传递方式(GET在URL,POST在请求体),安全性(POST更安全),数据大小限制(POST无限制,GET有限制),速度(GET较快)及用途(GET用于获取,POST用于提交)。面试中常强调POST的安全性、数据量、数据类型支持及速度。HTTP 1.0引入了POST和HEAD方法,支持多种数据格式和缓存,但每个请求需新建TCP连接。**
51 5
|
5月前
|
安全 网络协议 算法
Android网络基础面试题之HTTPS的工作流程和原理
HTTPS简述 HTTPS基于TCP 443端口,通过CA证书确保服务器身份,使用DH算法协商对称密钥进行加密通信。流程包括TCP握手、证书验证(公钥解密,哈希对比)和数据加密传输(随机数加密,预主密钥,对称加密)。特点是安全但慢,易受特定攻击,且依赖可信的CA。每次请求可能复用Session ID以减少握手。
62 2
|
5月前
|
缓存 网络协议 Android开发
Android网络面试题之Http1.1和Http2.0
HTTP/1.1 引入持久连接和管道机制提升效率,支持分块传输编码和更多请求方式如PUT、PATCH。Host字段指定服务器域名,RANGE用于断点续传。HTTP/2变为二进制协议,实现多工处理,头信息压缩和服务器推送,减少延迟并优化资源加载。HTTP不断发展,从早期的简单传输到后来的高效交互。
69 0
Android网络面试题之Http1.1和Http2.0
|
5月前
|
缓存 网络协议 Java
Android面试题之Java网络通信基础知识
Socket是应用与TCP/IP通信的接口,封装了底层细节。网络通信涉及连接、读写数据。BIO是同步阻塞,NIO支持多路复用(如Selector),AIO在某些平台提供异步非阻塞服务。BIO示例中,服务端用固定线程池处理客户端请求,客户端发起连接并读写数据。NIO的关键是Selector监控多个通道的事件,减少线程消耗。书中推荐《Java网络编程》和《UNIX网络编程》。关注公众号AntDream了解更多。
41 2
下一篇
无影云桌面