文章目录
- 前言
- 计算机网络基础
- HTTP
-
- 一、从输入URL到页面显示发生了什么?
- 二、Http的状态码有哪些?
- [三、 HTTP与HTTPS有什么区别?](#三、 HTTP与HTTPS有什么区别?)
- [四、URI 和 URL 的区别是什么?](#四、URI 和 URL 的区别是什么?)
- 五、Cookie和Session有什么区别?
- 六、GET与POST
- WebSocket
-
- [一、什么是 WebSocket?](#一、什么是 WebSocket?)
- Ping
- DNS
- TCP与UDP
-
- 一、TCP与UDP的区别?
- [二、什么时候选择 TCP,什么时候选 UDP?](#二、什么时候选择 TCP,什么时候选 UDP?)
- [三、TCP 三次握手和四次挥手(非常重要)](#三、TCP 三次握手和四次挥手(非常重要))
- 四、全连接和半连接
- 五、为什么要三次握手?
- 六、TCP四次挥手?
- 七、TCP如何保证传输的可靠性?
- IP
-
- [一、IP 协议的作用是什么?](#一、IP 协议的作用是什么?)
- [二、什么是 IP 地址?IP 寻址如何工作?](#二、什么是 IP 地址?IP 寻址如何工作?)
- ARP(地址解析协议)
-
- [一、什么是 Mac 地址?](#一、什么是 Mac 地址?)
- [二、ARP 协议解决了什么问题?](#二、ARP 协议解决了什么问题?)
前言
主要强化计算机基础中的计算机网络,本篇主要深入理解计算机网络的重点面试题
计算机网络基础
一、网络分层模型
首先是osi七层模型,分别是物数网传会表应。OSI七层模型是一种理想模型,把网络通信过程分为七层。
- 物理层主要负责物理介质上的传输。
- 数据链路层负责同一网络之间的可靠数据传输,包括帧的封装、传输、确认和错误检测与纠正。
- 网络层负责数据包的路由与转发。
- 传输层负责提供端到端的传输服务,确保数据的完整性和可靠传输。
- 会话层负责管理控制应用程序之间的会话。
- 表示层负责数据格式化和转换,确保不同系统之间的数据能够被正确理解。
- 应用层负责提供直接面向用户的网络服务和应用程序的接口。
现在基本都用的是TCP/IP四层模型,该模型简化了OSI七层模型。由应用层、传输层、网络层、网络接口层组成。
HTTP
一、从输入URL到页面显示发生了什么?
- 在浏览器中输入指定网页的 URL。
- 浏览器通过 DNS 协议,获取域名对应的 IP 地址。
- 浏览器根据 IP 地址和端口号,向目标服务器发起一个 TCP 连接请求。
- 浏览器在 TCP 连接上,向服务器发送一个 HTTP 请求报文,请求获取网页的内容。
- 服务器收到 HTTP 请求报文后,处理请求,并返回 HTTP 响应报文给浏览器。
- 浏览器收到 HTTP 响应报文后,解析响应体中的 HTML 代码,渲染网页的结构和样式,同时根据 HTML 中的其他资源的 URL(如图片、CSS、JS 等),再次发起 HTTP 请求,获取这些资源的内容,直到网页完全加载显示。
- 浏览器在不需要和服务器通信时,可以主动关闭 TCP 连接,或者等待服务器的关闭请求。
二、Http的状态码有哪些?
200 成功
400 参数不合法
401 需要认证
403 请求不合法
404 资源未找到
三、 HTTP与HTTPS有什么区别?
端口号不同、前缀不同、安全性和资源消耗不同、SEO(搜索引擎优化)。
四、URI 和 URL 的区别是什么?
URI是统一资源标志符,可以唯一标识一个资源。
URL是统一资源定位符,可以提供该资源的路径。
URI 的作用像身份证号一样,URL 的作用更像家庭住址一样。URL 是一种具体的 URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。
五、Cookie和Session有什么区别?
Session的主要作用就是通过服务端记录用户的状态。因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。
Cookie的主要作用在客户端记录用户状态。Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。相对来说 Session 安全性更高。如果使用 Cookie 的一些敏感信息不要写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的时候再去服务器端解密。
六、GET与POST
GET 和 POST 是 HTTP 协议中两种常用的请求方法。
语义(主要区别):GET 通常用于获取或查询资源,而 POST 通常用于创建或修改资源。
格式:GET 请求的参数通常放在 URL 中,形成查询字符串(querystring),而 POST 请求的参数通常放在请求体(body)中。
安全性:GET 请求和 POST 请求如果使用 HTTP 协议的话,那都不安全,因为 HTTP 协议本身是明文传输的,必须使用 HTTPS 协议来加密传输数据。另外,GET 请求相比 POST 请求更容易泄露敏感数据,因为 GET 请求的参数通常放在 URL 中。
WebSocket
一、什么是 WebSocket?
WebSocket是一种网络通讯协议,它允许在单个TCP连接上进行全双工通讯。这意味着客户端和服务器可以同时发送和接收数据,而不需要等待对方的响应。WebSocket 常用于需要实时通信的应用场景,比如在线游戏、股票交易、聊天应用等。
Ping
一、PING命令的作用是什么?
PING 命令是一种常用的网络诊断工具,经常用来测试网络中主机之间的连通性和网络延迟。
DNS
一、DNS的作用是?
DNS(Domain Name System)域名管理系统,是当用户使用浏览器访问网址之后,使用的第一个重要协议。DNS 要解决的是域名和 IP 地址的映射问题。
TCP与UDP
一、TCP与UDP的区别?
- 是否面向连接:UDP 在传送数据之前不需要先建立连接。而 TCP 提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。
- 是否是可靠传输:远地主机在收到 UDP 报文后,不需要给出任何确认,并且不保证数据不丢失,不保证是否顺序到达。TCP 提供可靠的传输服务,TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制。通过 TCP 连接传输的数据,无差错、不丢失、不重复、并且按序到达。
- 是否有状态:这个和上面的"是否可靠传输"相对应。TCP 传输是有状态的,这个有状态说的是 TCP 会去记录自己发送消息的状态比如消息是否发送了、是否被接收了等等。为此 ,TCP 需要维持复杂的连接状态表。而 UDP 是无状态服务,简单来说就是不管发出去之后的事情了(这很渣男!)。
- 传输效率:由于使用 TCP 进行传输的时候多了连接、确认、重传等机制,所以 TCP 的传输效率要比 UDP 低很多。
- 传输形式:TCP 是面向字节流的,UDP 是面向报文的。
二、什么时候选择 TCP,什么时候选 UDP?
- UDP一般用于即时通讯,比如:语音、 视频、直播等等。这些场景对传输数据的准确性要求不是特别高,比如你看视频即使少个一两帧,实际给人的感觉区别也不大。
- TCP 用于对传输准确性要求特别高的场景,比如文件传输、发送和接收邮件、远程登录等等。
三、TCP 三次握手和四次挥手(非常重要)
建立一个 TCP 连接需要"三次握手",缺一不可:
- 一次握手:客户端发送带有 SYN(SEQ=x) 标志的数据包 -> 服务端,然后客户端进入 SYN_SEND 状态,等待服务端的确认;
- 二次握手:服务端发送带有 SYN+ACK(SEQ=y,ACK=x+1) 标志的数据包 --> 客户端,然后服务端进入 SYN_RECV 状态;
- 三次握手:客户端发送带有 ACK(ACK=y+1) 标志的数据包 --> 服务端,然后客户端和服务端都进入ESTABLISHED 状态,完成 TCP 三次握手。
四、全连接和半连接
- 半连接队列(也称 SYN Queue):当服务端收到客户端的 SYN 请求时,此时双方还没有完全建立连接,它会把半连接状态的连接放在半连接队列。
- 全连接队列(也称 Accept Queue):当服务端收到客户端对 ACK 响应时,意味着三次握手成功完成,服务端会将该连接从半连接队列移动到全连接队列。如果未收到客户端的 ACK 响应,会进行重传,重传的等待时间通常是指数增长的。如果重传次数超过系统规定的最大重传次数,系统将从半连接队列中删除该连接信息。
五、为什么要三次握手?
三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。
- 第一次握手:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常
- 第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常
- 第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常
六、TCP四次挥手?
TCP 是全双工通信,可以双向传输数据。任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了 TCP 连接。
举个例子:A 和 B 打电话,通话即将结束后。
- 第一次挥手:A 说"我没啥要说的了"
- 第二次挥手:B 回答"我知道了",但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话
- 第三次挥手:于是 B 可能又巴拉巴拉说了一通,最后 B 说"我说完了"
- 第四次挥手:A 回答"知道了",这样通话才算结束。
七、TCP如何保证传输的可靠性?
- 数据包编号:TCP给每个数据包分配一个序列号,这样接收方就可以按正确的顺序重新组装数据。
- 确认应答(ACK):接收方收到数据包后会发送一个确认应答给发送方,表明数据包已成功接收。
- 超时重传:如果发送方在一定时间内没有收到确认应答,它会重新发送数据包。
- 流量控制:TCP使用滑动窗口机制来控制发送速率,防止接收方被大量数据淹没。
- 拥塞控制:TCP通过检测网络拥塞并相应地调整数据传输速率来减少丢包。
- 数据校验:TCP使用校验和来检测数据在传输过程中是否出现错误。
IP
一、IP 协议的作用是什么?
IP(Internet Protocol,网际协议) 是 TCP/IP 协议中最重要的协议之一,属于网络层的协议,主要作用是定义数据包的格式、对数据包进行路由和寻址,以便它们可以跨网络传播并到达正确的目的地。目前 IP 协议主要分为两种,一种是过去的 IPv4,另一种是较新的 IPv6,目前这两种协议都在使用,但后者已经被提议来取代前者。
二、什么是 IP 地址?IP 寻址如何工作?
每个连入互联网的设备或域(如计算机、服务器、路由器等)都被分配一个 IP 地址(Internet Protocol address),作为唯一标识符。
当网络设备发送 IP 数据包时,数据包中包含了 源 IP 地址 和 目的 IP 地址 。源 IP 地址用于标识数据包的发送方设备或域,而目的 IP 地址则用于标识数据包的接收方设备或域。这类似于一封邮件中同时包含了目的地地址和回邮地址。
网络设备根据目的 IP 地址来判断数据包的目的地,并将数据包转发到正确的目的地网络或子网络,从而实现了设备间的通信。
这种基于 IP 地址的寻址方式是互联网通信的基础,它允许数据包在不同的网络之间传递,从而实现了全球范围内的网络互联互通。IP 地址的唯一性和全局性保证了网络中的每个设备都可以通过其独特的 IP 地址进行标识和寻址。
ARP(地址解析协议)
一、什么是 Mac 地址?
MAC 地址的全称是 媒体访问控制地址(Media Access Control Address)。如果说,互联网中每一个资源都由 IP 地址唯一标识(IP 协议内容),那么一切网络设备都由 MAC 地址唯一标识。
可以理解为,MAC 地址是一个网络设备真正的身份证号,IP 地址只是一种不重复的定位方式(比如说住在某省某市某街道的张三,这种逻辑定位是 IP 地址,他的身份证号才是他的 MAC 地址),也可以理解为 MAC 地址是身份证号,IP 地址是邮政地址。MAC 地址也有一些别称,如 LAN 地址、物理地址、以太网地址等。
二、ARP 协议解决了什么问题?
ARP 协议,全称 地址解析协议(Address Resolution Protocol),它解决的是网络层地址和链路层地址之间的转换问题。因为一个 IP 数据报在物理上传输的过程中,总是需要知道下一跳(物理上的下一个目的地)该去往何处,但 IP 地址属于逻辑地址,而 MAC 地址才是物理地址,ARP 协议解决了 IP 地址转 MAC 地址的一些问题。