计算机网络是每个技术岗位都不可避免的基础知识之一,尤其在一些大厂的技术面试中,网络相关的面试题经常出现在各种岗位的面试中,特别是对于涉及到系统架构、后端开发等岗位。本文将详细解析一些常见的计算机网络面试问题,帮助大家更好地准备面试。
HTTP还是HTTPS请求?有什么区别?
编辑
HTTP (超文本传输协议)和HTTPS(安全超文本传输协议)都是用于在客户端和服务器之间传输超文本的协议。两者的主要区别如下:
- 
加密与安全 :
- 
HTTP 是明文传输协议,不对传输的数据进行加密,因此数据在传输过程中可能被窃取或篡改。
 - 
HTTPS是在HTTP的基础上加入了SSL/TLS加密协议,保证数据传输的机密性和完整性,防止中间人攻击和数据篡改。
 
 - 
 - 
端口号 :
- 
HTTP 默认使用 80端口 。
 - 
HTTPS 默认使用 443端口。
 
 - 
 - 
性能 :
- 因为HTTPS需要建立加密连接,存在一定的计算开销,相比HTTP略微慢一些。但随着硬件和算法的进步,这种差距越来越小。
 
 - 
认证 :
- HTTPS 会进行服务器的身份认证,客户端可以验证服务器的合法性,避免连接到伪造的服务器上。
 
 
HTTP过程的四次挥手?
编辑
四次挥手是TCP协议断开连接时的过程。四次挥手(四次握手)是为了保证数据的完整传输,确保双方都知道连接关闭。过程如下:
- 
第一次挥手 :客户端发送一个
FIN(finish)标志位的包,表示客户端没有数据发送给服务器了,请求断开连接。 - 
第二次挥手 :服务器收到
FIN包后,向客户端发送一个确认包(ACK)。此时服务器进入关闭等待状态,等待将数据发送完毕。 - 
第三次挥手 :服务器发送完数据后,发送一个
FIN包,表示它也没有数据要发送,准备关闭连接。 - 
第四次挥手 :客户端收到
FIN包后,回复确认包ACK,进入 TIME_WAIT 状态,等待确认。 
在这个过程的最后,连接被完全关闭。
TIME_WAIT的作用?
编辑
TIME_WAIT 是TCP连接断开时客户端进入的一种状态。它有两个主要作用:
- 
确保数据完全传输 :当客户端发送完关闭连接的请求后,处于
TIME_WAIT状态的客户端会等待一定时间(通常是2倍的最大段生存时间,MSL)。这是为了确保服务器能够接收到客户端最后一个确认包,防止数据丢失。 - 
避免旧连接干扰新连接 :如果客户端直接关闭连接,新的连接请求可能会和旧连接的数据包冲突。通过在
TIME_WAIT状态中等待,客户端确保旧的连接已完全消失,不会干扰新的连接。 
Cookie的作用?
Cookie 是在客户端存储的小块数据,主要作用有:
编辑
- 会话管理:Cookie 可用于存储用户登录状态,保持用户会话(如用户登录、购物车状态等)。
 - 个性化设置:网站可以使用 Cookie 存储用户的偏好设置或语言选择,提供定制化的用户体验。
 - 跟踪和分析:Cookie 可以用于跟踪用户的行为,进行用户行为分析、广告定向等。
 
腾讯和百度两个网页能获取对方的cookie吗?
不能。在现代浏览器中,同源策略 (Same-Origin Policy)限制了不同源之间的交互。因此,腾讯和百度两个网页属于不同的域名,它们不能访问对方的 Cookie 数据。每个网页只能访问自己域下的 Cookie。
在百度里搜索abc的过程?
编辑
- 
DNS解析 :首先,浏览器会解析"www.baidu.com"域名,向DNS服务器发送请求,将域名解析为IP地址。
 - 
建立TCP连接:浏览器使用TCP协议建立与百度服务器的连接,通常通过三次握手完成。
 - 
发送HTTP请求:建立连接后,浏览器通过HTTP协议向百度服务器发送请求,带上搜索的关键词"abc"作为参数。
 - 
服务器响应:百度服务器接收到请求后,处理搜索请求,并返回相关的搜索结果页面(HTML数据)。
 - 
渲染页面:浏览器收到响应后,将HTML、CSS、JS等内容进行解析,渲染成页面显示给用户。
 - 
关闭连接:当数据传输完成,TCP连接关闭,完成数据交换。
 
搜索的时候,数据包是怎么交给网卡的?(7层 5层网络模型)层层封包都加的是什么内容?
在数据传输过程中,数据从应用层通过七层协议逐层封装,最终通过网卡发送出去。具体过程如下:
- 
应用层(第7层) :HTTP协议生成请求,包含用户搜索关键词"abc"。
 - 
传输层(第4层):TCP协议将HTTP请求封装在TCP段中,加入源端口、目标端口、序列号等信息。
 - 
网络层(第3层):IP协议对TCP段进行封装,加入源IP地址、目标IP地址等路由信息。
 - 
数据链路层(第2层):数据包被封装为帧,加入MAC地址等物理传输信息,准备通过网卡发送。
 - 
物理层(第1层):数据转化为电信号或光信号,通过网络物理介质传输。
 
网卡怎么知道数据是发送给百度服务器的,怎么找到服务器的?
网卡根据数据包中的目标 IP地址 来确定数据的目的地。在发送数据包时,操作系统会选择合适的网络接口,并通过路由表找到到达目的地的最优路径。网卡根据路由表中的信息,判断目标地址并选择正确的路径,将数据包发送到正确的网络设备(例如交换机或路由器),最终到达百度服务器。
计算机网络分层,各层的协议
计算机网络分层通常采用OSI七层模型或TCP/IP四层模型。以下是TCP/IP模型的各层及常用协议:
- 应用层(HTTP, FTP, DNS, SMTP, POP3)
 - 传输层(TCP, UDP)
 - 网络层(IP, ICMP, ARP)
 - 数据链路层(Ethernet, PPP, MAC)
 - 物理层(光纤、铜缆、无线信号等)
 
HTTP流量控制,拥塞避免如何实现?
- 
流量控制 :通过 窗口机制(Sliding Window)控制发送方的发送速率,避免接收方缓存溢出。TCP会根据接收方的接收能力动态调整发送窗口的大小。
 - 
拥塞避免 :TCP使用慢启动 、拥塞避免 算法,如 加法增大、乘法减小(AIMD)来避免网络发生拥塞。它通过逐渐增加窗口大小来避免快速增加负载造成的拥塞。
 
多少种请求方式,GET和POST区别?
常见的HTTP请求方法有:
- GET:用于请求资源,不会修改服务器上的资源,数据通过URL传递。
 - POST:用于提交数据,可能修改服务器上的资源,数据通过请求体传递。
 - PUT 、DELETE 、PATCH 、OPTIONS等。
 
GET与POST的区别:
- GET 用于获取资源,数据通过URL传递,长度有限;而 POST 用于提交数据,数据通过请求体传递,没有长度限制。
 - GET 是安全的(无副作用),而 POST 可能会改变服务器数据(如创建、更新)。
 - GET 会将数据暴露在URL中,适用于传输不敏感的数据;而 POST 将数据放在请求体中,适用于传输较大的数据或敏感信息。
 
HTTPS端口443以及实现流程
- 
端口 :HTTPS协议使用443端口,而HTTP使用的是80端口。
 - 
实现流程 :
- 
客户端发起HTTPS请求时,首先通过 TCP三次握手 建立连接。
 - 
然后,客户端与服务器进行 SSL/TLS握手 ,通过加密算法协商出会话密钥。
 - 
服务器发送其数字证书 ,客户端验证证书合法性。
 - 
完成握手后,客户端和服务器使用对称加密算法(会话密钥)加密数据,
 
 -