计算机网络面试总结

1. 计算机网络体系结构

A.OSI七层协议:从上到下依次为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

在这里插入图片描述

B.每层对应的协议及作用如下
 协议:物理层:RJ45、CLOCK、IEEE802.3(中继器,集线器)
      数据链路层:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
      网络层:IP、ICMP、ARP、RARP、OSPF、IS-IS、IPX、BGP、RIP、IGRP、 (路由器) 
      传输层:TCP、UDP、SPX
      会话层:NFS、SQL、NETBIOS、RPC 
       表示层:JPEG、MPEG、ASII HTTP/HTML · FTP · Telnet ·
       应用层:FTP、DNS、Telnet、DHCP、SMTP、HTTP、POP3、WWW、NFS 
作用:物理层:通过媒介传输比特,确定机械及电气规范(比特Bit) 
     数据链路层:将比特组装成帧和点对点的传递(帧Frame)
     网络层:负责数据包从源到宿的传递和网际互连(包PackeT) 
     传输层:提供端到端的可靠报文传递和错误恢复(段Segment) 
     会话层:建立、管理和终止会话(会话协议数据单元SPDU) 
     表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU) 
     应用层:允许访问OSI环境的手段(应用协议数据单元APDU)
C.五层体系结构(物理层、数据链路层、网络层、传输层、应用层)
五层协议只是OSI和TCP/IP的综合,实际应用还是TCP/IP的四层结构。为了方便可以把下两层称为网络接口层。

在这里插入图片描述

D.TCP/IP四层协议(网络接口层、网络层、传输层、应用层。)

在这里插入图片描述

2. TCP和UDP的区别和自适用的场景

区别:(1)连接:TCP是面向连接的传输层协议,即传输数据之前必须先建立好连接;UDP是面向无连接。
(2)服务对象:TCP是点对点的两点间服务,即一条TCP连接只能有两个端点;UDP支持一对一,一对多,多对一,多对多的交互通信。
(3)可靠性:TCP是可靠交付:无差错,不丢失,不重复,按序到达;UDP是尽最大努力交付,不保证可靠交付。
(4)拥塞控制,流量控制:TCP拥有拥塞控制和流量控制保证数据传输的安全性;UDP没有拥塞控制,网络拥塞不影响源主机的发送效率。
(5)报文长度:TCP是动态报文长度,即TCP报文长度根据接收方窗口大小和当前网络拥塞情况而定;UDP面向报文,不合并,不拆分,保留上面传下来的报文边界。
(6)首部开销:TCP首部开销大,首部20个字节;UDP首部开销小,8字节(源端口,目的端口,数据长度,校验和)
适用场景:若通信数据完整性大于实时性,则应选择用TCP协议(文件传输、重要状态等),反之,则使用UDP协议(如视频传输、实时通信等)。

5. HTTP和HTTPS的区别、长连接和短连接?

https:全称Hyper Text Transfer Protocol Secure,相比http,多了一个secure,这一个secure是怎么来的呢?这是由TLS(SSL)提供的,可以简单理解为 HTTPS=HTTP+SSL。
①HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
②HTTP 是相对不安全的,而 HTTPS 是相对安全的
③HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
④在 OSI 网络模型中,HTTP 工作于应用层,而 HTTPS 工作在传输层
⑤HTTP 无需加密,而 HTTPS 对传输的数据进行加密
⑥HTTP 无需证书,而 HTTPS 需要认证证书
长连接和短连接
在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。
而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:
Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接

7. 三次握手的过程?

第一次握手:客户端要和服务端进行通信,首先要告知服务端一声,遂发出一个SYN=1的连接请求信号,”服务端哥哥,我想给你说说话”。
第二次握手:当服务端接收到客户端的连接请求,此时要给客户端一个确认信息,”我知道了(ACK),我这边已经准备好了,你现在能连吗(SYN)”。
第三次握手:当客户端收到了服务端的确认连接信息后,要礼貌的告知一下服务端,“好的,咱们开始联通吧(ACK)”。
到此整个建立连接的过程已经结束,接下来就是双方你一句我一句甚至同时交流传递信息的过程了。

9. 为什么要三次握手?

为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误,主要目的防止server端一直等待,浪费资源。

10. 四次挥手的过程?

与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。
第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。
断开一个TCP连接需要“四次挥手”:
(1)客户端-发送一个 FIN,用来关闭客户端到服务器的数据传送
(2)服务器-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 一样,一个 FIN 将占用一个序号
(3)服务器-关闭与客户端的连接,发送一个FIN给客户端
(4)客户端-发回 ACK 报文确认,并将确认序号设置为收到序号加1

12. 为什么要4次挥手?

TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,是一个全双工模式: 
1、第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。
2、第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
3、第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
4、第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手

14. TCP四次挥手的时候,先发起方为什么会有一个TIME_WAIT状态,它的作用是什么?

(1)保证最后一次握手报文能到接收方,如果接收方未收到会再次发送FIN+ACK,发起方可以进行超时重传。
(2)TIME_WAIT时间一般是2MSL。2MSL后这次连接的所有报文都会消失,不会影响下一次连接。

16. 为什么客户端在TIME_WAIT状态必须等待2MSL的时间?

1)为了保证客户端发送的最后一个ACK报文段能够达到服务器。 这个ACK报文段可能丢失,因而使处在LAST-ACK状态的服务器收不到确认。服务器会超时重传FIN+ACK报文段,客户端就能在2MSL时间内收到这个重传的FIN+ACK报文段,接着客户端重传一次确认,重启计时器。最好,客户端和服务器都正常进入到CLOSED状态。如果客户端在TIME-WAIT状态不等待一段时间,而是再发送完ACK报文后立即释放连接,那么就无法收到服务器重传的FIN+ACK报文段,因而也不会再发送一次确认报文。这样,服务器就无法按照正常步骤进入CLOSED状态 。
2)防止已失效的连接请求报文段出现在本连接中。客户端在发送完最后一个ACK确认报文段后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。

18. TCP协议如何保证可靠传输?

(1)应用数据被分割成 TCP 认为最适合发送的数据块。
(2)TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
(3)校验和: TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。
(4)TCP 的接收端会丢弃重复的数据。
(5)流量控制: TCP 连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。 (TCP 利用滑动窗口实现流量控制)
(6)拥塞控制: 当网络拥塞时,减少数据的发送。
(7)停止等待协议 也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。 超时重传: 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

19. HTTPS为什么要加密,加密的过程?

为什么加密:因为HTTP报文是包裹在TCP报文里面的,服务器端收到报文段后,会解包提取HTTP报文,而HTTP报文是明文,所以若传输过程中被截取,有可能泄露信息,所以需要在HTTP报文进入TCP报文之前,先使用SSL对HTTP报文进行加密。HTTPS协议的本质就是HTTP + SSL(or TLS)。
加密过程:HTTPS在传输数据之前需要客户端与服务器进行一个握手(TLS/SSL握手),在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL使用了非对称加密,对称加密以及hash等。HTTPS相比于HTTP,虽然提供了安全保证,但是势必会带来一些时间上的损耗,如握手和加密等过程,是否使用HTTPS需要根据具体情况在安全和性能方面做出权衡。

在这里插入图片描述

21. 浏览器输入url过程(输入一个网址,执行过程是怎么样的)

总的来说分为以下几个过程:
1.DNS解析
2.TCP连接
3.发送HTTP请求
4.服务器处理请求并返回HTTP报文
5.浏览器解析渲染页面
6.连接结束

在这里插入图片描述

  1. 常见的状态码?
    在这里插入图片描述
### 计算机网络考研面试的经验总结 #### 一、基础知识准备 在计算机网络的考研面试中,通常会考察学生对基础理论的理解程度以及实际应用能力。因此,在复习过程中应重点关注以下几个方面的知识点[^1]: - **OSI七层模型与TCP/IP协议栈**:掌握各层次的功能及其对应的主要协议。 - **IP地址分类及子网划分**:熟悉IPv4和IPv6的区别,理解如何进行有效的网络规划。 - **路由算法**:深入学习距离矢量法、链路状态法等基本概念,并能解释其优缺点。 - **传输控制机制**:包括流量控制、拥塞控制等内容。 ```python # 示例代码展示简单的Socket编程实现客户端和服务端通信过程 import socket def start_server(): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = 'localhost' port = 9999 server_socket.bind((host, port)) server_socket.listen(5) while True: client_socket, addr = server_socket.accept() message = client_socket.recv(1024).decode('utf-8') print(f"Received from {addr}: {message}") response = "Hello Client" client_socket.send(response.encode('utf-8')) client_socket.close() if __name__ == "__main__": start_server() ``` 以上是一个非常基础的服务端程序例子,用于演示基于Python语言下的套接字(Socket)操作原理[^2]。 #### 二、常见问题应对策略 针对可能被问到的一些典型题目提前做好充分准备是非常必要的。例如可能会涉及到以下几类问题: - 描述一次完整的HTTP请求流程? - ARP欺骗是如何发生的?怎样防范此类攻击行为的发生呢? - VLAN的作用是什么?它又是通过哪些方式来隔离广播域? 对于这些问题的回答不仅要做到条理清晰而且还要体现出自己对该领域最新动态有一定关注度[^3]。 #### 三、软实力提升建议 除了专业知识外,良好的表达能力和逻辑思维同样重要。可以通过模拟演练的形式提高临场发挥水平;另外保持自信积极的态度也是成功的关键因素之一。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值