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

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


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握手 ,通过加密算法协商出会话密钥。

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

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

相关推荐
Data_Adventure6 小时前
从前端到 Java 后端:一份详细转型路线指南
前端·后端
在下雨5997 小时前
条件变量与互斥锁复习
c++·面试
shepherd1117 小时前
破局延时任务(下):Spring Boot + DelayQueue 优雅实现分布式延时队列(实战篇)
java·spring boot·后端
绝无仅有7 小时前
某游戏大厂分布式系统经典实战面试题解析
后端·面试·程序员
Baihai_IDP7 小时前
探讨超长上下文推理的潜力
人工智能·面试·llm
spmcor7 小时前
Vue命名冲突:当data和computed相爱相杀...
前端·面试
拉不动的猪7 小时前
单点登录中权限同步的解决方案及验证策略
前端·javascript·面试
9ilk7 小时前
【基于one-loop-per-thread的高并发服务器】--- 项目介绍&&模块划分
运维·服务器·c++·后端·中间件
SimonKing7 小时前
Spring Boot还能这样玩?同时监听多个端口的黑科技
java·后端·程序员