某游戏大厂计算机网络面试问题深度解析(一)

计算机网络是每个技术岗位都不可避免的基础知识之一,尤其在一些大厂的技术面试中,网络相关的面试题经常出现在各种岗位的面试中,特别是对于涉及到系统架构、后端开发等岗位。本文将详细解析一些常见的计算机网络面试问题,帮助大家更好地准备面试。


HTTP还是HTTPS请求?有什么区别?​编辑

HTTP (超文本传输协议)和HTTPS(安全超文本传输协议)都是用于在客户端和服务器之间传输超文本的协议。两者的主要区别如下:

  1. 加密与安全

    • HTTP 是明文传输协议,不对传输的数据进行加密,因此数据在传输过程中可能被窃取或篡改。

    • HTTPS是在HTTP的基础上加入了SSL/TLS加密协议,保证数据传输的机密性和完整性,防止中间人攻击和数据篡改。

  2. 端口号

    • HTTP 默认使用 80端口

    • HTTPS 默认使用 443端口

  3. 性能

    • 因为HTTPS需要建立加密连接,存在一定的计算开销,相比HTTP略微慢一些。但随着硬件和算法的进步,这种差距越来越小。
  4. 认证

    • HTTPS 会进行服务器的身份认证,客户端可以验证服务器的合法性,避免连接到伪造的服务器上。

HTTP过程的四次挥手?​编辑

四次挥手是TCP协议断开连接时的过程。四次挥手(四次握手)是为了保证数据的完整传输,确保双方都知道连接关闭。过程如下:

  1. 第一次挥手 :客户端发送一个 FIN(finish)标志位的包,表示客户端没有数据发送给服务器了,请求断开连接。

  2. 第二次挥手 :服务器收到 FIN 包后,向客户端发送一个确认包(ACK)。此时服务器进入关闭等待状态,等待将数据发送完毕。

  3. 第三次挥手 :服务器发送完数据后,发送一个 FIN 包,表示它也没有数据要发送,准备关闭连接。

  4. 第四次挥手 :客户端收到 FIN 包后,回复确认包 ACK,进入 TIME_WAIT 状态,等待确认。

在这个过程的最后,连接被完全关闭。


TIME_WAIT的作用?​编辑

TIME_WAIT 是TCP连接断开时客户端进入的一种状态。它有两个主要作用:

  1. 确保数据完全传输 :当客户端发送完关闭连接的请求后,处于 TIME_WAIT 状态的客户端会等待一定时间(通常是2倍的最大段生存时间,MSL)。这是为了确保服务器能够接收到客户端最后一个确认包,防止数据丢失。

  2. 避免旧连接干扰新连接 :如果客户端直接关闭连接,新的连接请求可能会和旧连接的数据包冲突。通过在 TIME_WAIT 状态中等待,客户端确保旧的连接已完全消失,不会干扰新的连接。


Cookie的作用?

Cookie 是在客户端存储的小块数据,主要作用有:​编辑

  1. 会话管理:Cookie 可用于存储用户登录状态,保持用户会话(如用户登录、购物车状态等)。
  2. 个性化设置:网站可以使用 Cookie 存储用户的偏好设置或语言选择,提供定制化的用户体验。
  3. 跟踪和分析:Cookie 可以用于跟踪用户的行为,进行用户行为分析、广告定向等。

腾讯和百度两个网页能获取对方的cookie吗?

不能。在现代浏览器中,同源策略 (Same-Origin Policy)限制了不同源之间的交互。因此,腾讯和百度两个网页属于不同的域名,它们不能访问对方的 Cookie 数据。每个网页只能访问自己域下的 Cookie。


在百度里搜索abc的过程?​编辑

  1. DNS解析 :首先,浏览器会解析"www.baidu.com"域名,向DNS服务器发送请求,将域名解析为IP地址。

  2. 建立TCP连接:浏览器使用TCP协议建立与百度服务器的连接,通常通过三次握手完成。

  3. 发送HTTP请求:建立连接后,浏览器通过HTTP协议向百度服务器发送请求,带上搜索的关键词"abc"作为参数。

  4. 服务器响应:百度服务器接收到请求后,处理搜索请求,并返回相关的搜索结果页面(HTML数据)。

  5. 渲染页面:浏览器收到响应后,将HTML、CSS、JS等内容进行解析,渲染成页面显示给用户。

  6. 关闭连接:当数据传输完成,TCP连接关闭,完成数据交换。


搜索的时候,数据包是怎么交给网卡的?(7层 5层网络模型)层层封包都加的是什么内容?

在数据传输过程中,数据从应用层通过七层协议逐层封装,最终通过网卡发送出去。具体过程如下:

  1. 应用层(第7层) :HTTP协议生成请求,包含用户搜索关键词"abc"。

  2. 传输层(第4层):TCP协议将HTTP请求封装在TCP段中,加入源端口、目标端口、序列号等信息。

  3. 网络层(第3层):IP协议对TCP段进行封装,加入源IP地址、目标IP地址等路由信息。

  4. 数据链路层(第2层):数据包被封装为帧,加入MAC地址等物理传输信息,准备通过网卡发送。

  5. 物理层(第1层):数据转化为电信号或光信号,通过网络物理介质传输。


网卡怎么知道数据是发送给百度服务器的,怎么找到服务器的?

网卡根据数据包中的目标 IP地址 来确定数据的目的地。在发送数据包时,操作系统会选择合适的网络接口,并通过路由表找到到达目的地的最优路径。网卡根据路由表中的信息,判断目标地址并选择正确的路径,将数据包发送到正确的网络设备(例如交换机或路由器),最终到达百度服务器。


计算机网络分层,各层的协议

计算机网络分层通常采用OSI七层模型或TCP/IP四层模型。以下是TCP/IP模型的各层及常用协议:

  1. 应用层(HTTP, FTP, DNS, SMTP, POP3)
  2. 传输层(TCP, UDP)
  3. 网络层(IP, ICMP, ARP)
  4. 数据链路层(Ethernet, PPP, MAC)
  5. 物理层(光纤、铜缆、无线信号等)

HTTP流量控制,拥塞避免如何实现?

  1. 流量控制 :通过 窗口机制(Sliding Window)控制发送方的发送速率,避免接收方缓存溢出。TCP会根据接收方的接收能力动态调整发送窗口的大小。

  2. 拥塞避免 :TCP使用慢启动拥塞避免 算法,如 加法增大、乘法减小(AIMD)来避免网络发生拥塞。它通过逐渐增加窗口大小来避免快速增加负载造成的拥塞。


多少种请求方式,GET和POST区别?

常见的HTTP请求方法有:

  1. GET:用于请求资源,不会修改服务器上的资源,数据通过URL传递。
  2. POST:用于提交数据,可能修改服务器上的资源,数据通过请求体传递。
  3. PUTDELETEPATCHOPTIONS等。

GET与POST的区别

  • GET 用于获取资源,数据通过URL传递,长度有限;而 POST 用于提交数据,数据通过请求体传递,没有长度限制。
  • GET 是安全的(无副作用),而 POST 可能会改变服务器数据(如创建、更新)。
  • GET 会将数据暴露在URL中,适用于传输不敏感的数据;而 POST 将数据放在请求体中,适用于传输较大的数据或敏感信息。

HTTPS端口443以及实现流程

  1. 端口 :HTTPS协议使用443端口,而HTTP使用的是80端口。

  2. 实现流程

    • 客户端发起HTTPS请求时,首先通过 TCP三次握手 建立连接。

    • 然后,客户端与服务器进行 SSL/TLS握手 ,通过加密算法协商出会话密钥。

    • 服务器发送其数字证书 ,客户端验证证书合法性。

    • 完成握手后,客户端和服务器使用对称加密算法(会话密钥)加密数据,

相关推荐
考虑考虑5 小时前
cmd局部设置java变量
运维·后端·自动化运维
头茬韭菜5 小时前
第 1 篇:「Glass-Box 的骨架」——全景架构与六层数据流水线
架构·agent·semantica
怕浪猫6 小时前
长会话不崩盘:DeepSeek Harness 的上下文压缩与目标管理策略
面试·github·agent
ocean21036 小时前
2025-2026年Python面试高频知识点洞察
开发语言·python·面试·python八股文
奔跑的架构师7 小时前
[A-50]ARMv9/v8-DVFS系统架构
linux·arm开发·架构·系统架构·arm
闲云自留地7 小时前
动手玩 Nova:Hypervisor、主机聚合、可用分区、虚拟机生命周期实操
运维·架构·openstack
一航jason8 小时前
Android平台推理框架及试用场景模型对比
android·人工智能·ai·架构·ai编程·llama
陈随易8 小时前
在Finch用了62亿词元,我认为这是新一代Agent工具之神
前端·人工智能·后端
letisgo58 小时前
JAVA 高级进阶07篇《@Transactional失效的8个场景:代理机制到传播行为》
java·面试·transactional·spring事务·aop动态代理