计算机网络八股文(后续更新)

文章目录

一、计算机网络体系结构

1、计算机网络的各层协议及作用?

计算机网络体系可以大致分为一下三种,OSI七层模型、TCP/IP四层模型和五层模型。

(a)OSI七层协议

分层 功能 协议 设备 流量控制 差错控制 拥塞控制 传输单位
7 应用层 用户与网络接口 文件FTP、邮件SMTP、万维网HTTP、域名系统DNS、远程登录协议TELNET
6 表示层 定义数据结构和信息表示,数据压缩 、加密解密
5 会话层 不同主机各个进程之间会话,断点下载、服务器验证用户登录
4 传输层 不同主机两个进程端到端通信、复用分用 传输控制协议TCP(有连接、可靠)、用户数据报文协议UDP(无连接、不可靠) ✔️ ✔️ ✔️ 报文/数据段
3 网络层 为分组交换网上的不同主机提供通信(包括路由选择) 网际协议IP(无连接)、Internet控制报文协议ICMP、地址转换协议ARP、路由信息协议RIP 路由器、防火墙、多层交换机 ✔️ ✔️ ✔️ 数据报
2 数据链路层 两个主机点到点连接 自动重传协议ARQ、点对点协议PPP、STP、帧中继 交换机、网桥、网卡 ✔️ ✔️
1 物理层 通信结点间传输 中继器、集线器(Hub)、网线 比特

(b)TCP/IP 四层模型

应用层:对应于OSI参考模型的(应用层、表示层、会话层)。

传输层: 对应OSI的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。

网际层:对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。

网络接口层:与OSI参考模型的数据链路层、物理层对应。

(c )五层模型:应用层、传输层、网络层、数据链路层、物理层。

2、谈下你对五层网络协议体系结构的理解?

1 物理层 的作用是实现相邻计算机节点之间比特流 的传送,使其上面的数据链路层不必考虑网络的具体传输介质是什么。

2 数据链路层 的作用是两台主机 之间的数据传输,数据链路层将网络层交下来的 IP 数据报组装成,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如:地址信息,差错控制等)

在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提出数据部分,上交给网络层。控制信息还使接收端能够检测到所收到的帧中有无差错。如果发现差错,数据链路层就丢弃这个出了差错的帧,以避免继续在网络中传送下去白白浪费网络资源。

3 网络层 的作用是把传输层产生的报文段或用户数据报封装成分组(也叫数据报)和包,然后选择合适的路由结点传送。

4 传输层 的作用是负责向两台主机进程 之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。由于一台主机可同时运行多个线程,因此运输层有复用和分用的功能。

所谓复用就是指多个应用层进程可同时使用下面运输层的服务,分用和复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。

5 应用层 的作用是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。

二、物理层

1、编码与调制

数字信号 模拟信号
数字数据 数字发送器(编码方式:非归零、曼彻斯特编码、差分曼彻斯特) 调制器
模拟数据 PCM编码器(步骤:采样、量化、编码) 放大器调制器

这个表格的意思是,将数字数据编码为模拟信号用调制器调制,将模拟数据编码为数字信号用PCM编码,将模拟数据编码为模拟信号通过放大器调制器

2、数字数据编码为数字信号方式对比(非归零、曼彻斯特、差分曼彻斯特)

编码方式 特点 优缺点 适用
非归零编码 高1低0 优:编码效率高缺:无时钟 信号收发双方难以同步
曼彻斯特编码 前高后低为1,前低后高为0 优:有时钟 以太网
差分曼彻斯特编码 开始处(即两个码元连接处)无跳变为1,开始处有跳变为0,且无论0和1中间都跳变 优:有时钟且更强的抗干扰 宽带高速网

三、数据链路层

四、网络层

五、传输层

1、TCP和UDP的区别?

TCP UDP
连接方式 有连接 无连接,可随时发送数据
可靠性 可靠,有流量控制和拥塞控制 不可靠,无流量和拥塞控制
有序性 有序,消息在传输过程中可能会乱序,TCP 会重新排序 无序
速度
连接对象 一对一 一对一、一对多、多对一、多对多都行
传输方式 字节流 报文
首部开销 最小20字节,最大60字节 首部开销小 ,8字节
应用场景 需可靠传输如文件传输、HTTP/HTTPS 高速实时应用(视频会议、IP电话、直播、广播)

2、UDP 和 TCP 对应的应用场景是什么?

TCP 是面向连接,能保证数据的可靠性交付,因此经常用于:

FTP文件传输 HTTP / HTTPS

UDP 面向无连接,它可以随时发送数据,再加上UDP本身的处理既简单又高效,因此经常用于:

包总量较少的通信,如 DNS 、SNMP等 视频、音频等多媒体通信 广播通信

3、详细介绍一下 TCP 的三次握手机制

第一次握手:客户端请求建立连接,向服务端发送一个同步报文(SYN=1),同时选择一个随机数 seq = x 作为初始序列号,并进入SYN_SENT状态,等待服务器确认。

第二次握手::服务端收到连接请求报文后,如果同意建立连接,则向客户端发送同步确认报文(SYN=1,ACK=1),确认号为 ack = x + 1,同时选择一个随机数 seq = y 作为初始序列号,此时服务器进入SYN_RECV状态。

第三次握手:客户端收到服务端的确认后,向服务端发送一个确认报文(ACK=1),确认号为 ack = y + 1,序列号为 seq = x + 1,客户端和服务器进入ESTABLISHED状态,完成三次握手。

理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

4、为什么需要三次握手,而不是两次?

(1)防止已过期的连接请求报文突然又传送到服务器,因而产生错误和资源浪费。

在双方两次握手即可建立连接的情况下,假设客户端发送 A 报文段请求建立连接,由于网络原因造成 A暂时无法到达服务器,服务器接收不到请求报文段就不会返回确认报文段。 客户端在长时间得不到应答的情况下重新发送请求报文段 B,这次 B顺利到达服务器,服务器随即返回确认报文并进入 ESTABLISHED 状态,客户端在收到 确认报文后也进入 ESTABLISHED状态,双方建立连接并传输数据,之后正常断开连接。 此时姗姗来迟的 A 报文段才到达服务器,服务器随即返回确认报文并进入ESTABLISHED 状态,但是已经进入 CLOSED 状态的客户端无法再接受确认报文段,更无法进入 ESTABLISHED状态,这将导致服务器长时间单方面等待,造成资源浪费。

(2)三次握手才能让双方均确认自己和对方的发送和接收能力都正常。

第一次握手:客户端只是发送处请求报文段,什么都无法确认,而服务器可以确认自己的接收能力和对方的发送能力正常;第二次握手:客户端可以确认自己发送能力和接收能力正常,对方发送能力和接收能力正常;第三次握手:服务器可以确认自己发送能力和接收能力正常,对方发送能力和接收能力正常;可见三次握手才能让双方都确认自己和对方的发送和接收能力全部正常,这样就可以愉快地进行通信了。

(3)告知对方自己的初始序号值,并确认收到对方的初始序号值。

TCP 实现了可靠的数据传输,原因之一就是 TCP

报文段中维护了序号字段和确认序号字段,通过这两个字段双方都可以知道在自己发出的数据中,哪些是已经被对方确认接收的。这两个字段的值会在初始序号值得基础递增,如果是两次握手,只有发起方的初始序号可以得到确认,而另一方的初始序号则得不到确认。

5、为什么需要三次握手,而不是四次?

因为三次握手已经可以确认双方的发送接收能力正常,双方都知道彼此已经准备好,而且也可以完成对双方初始序号值得确认,也就无需再第四次握手了。

第一次握手:服务端确认"自己收、客户端发"报文功能正常。

第二次握手:客户端确认"自己发、自己收、服务端收、客户端发"报文功能正常,客户端认为连接已建立。

第三次握手:服务端确认"自己发、客户端收"报文功能正常,此时双方均建立连接,可以正常通信。

6、详细介绍TCP的四次挥手

第一次挥手:客户端向服务端发送连接释放报文(FIN=1,ACK=1),主动关闭连接,同时等待服务端的确认。

序列号 seq = u,即客户端上次发送的报文的最后一个字节的序号 + 1

确认号 ack = k, 即服务端上次发送的报文的最后一个字节的序号 + 1

第二次挥手:服务端收到连接释放报文后,立即发出确认报文(ACK=1),序列号 seq = k,确认号 ack = u + 1。

这时 TCP 连接处于半关闭状态,即客户端到服务端的连接已经释放了,但是服务端到客户端的连接还未释放。这表示客户端已经没有数据发送了,但是服务端可能还要给客户端发送数据。

第三次挥手:服务端向客户端发送连接释放报文(FIN=1,ACK=1),主动关闭连接,同时等待 A 的确认。

序列号 seq = w,即服务端上次发送的报文的最后一个字节的序号 + 1。

确认号 ack = u + 1,与第二次挥手相同,因为这段时间客户端没有发送数据

第四次挥手:客户端收到服务端的连接释放报文后,立即发出确认报文(ACK=1),序列号 seq = u + 1,确认号为 ack = w + 1。

此时,客户端就进入了 TIME-WAIT 状态。注意此时客户端到 TCP 连接还没有释放,必须经过 2*MSL(最长报文段寿命)的时间后,才进入 CLOSED 状态。而服务端只要收到客户端发出的确认,就立即进入 CLOSED 状态。可以看到,服务端结束 TCP 连接的时间要比客户端早一些。

7、为什么连接的时候是三次握手,关闭的时候却是四次握手?

服务器在收到客户端的 FIN 报文段后,可能还有一些数据要传输,所以不能马上关闭连接,但是会做出应答,返回 ACK 报文段。接下来可能会继续发送数据,在数据发送完后,服务器会向客户单发送 FIN 报文,表示数据已经发送完毕,请求关闭连接。服务器的ACK和FIN一般都会分开发送,从而导致多了一次,因此一共需要四次挥手。

六、应用层

参考:https://www.cnblogs.com/shiyitongxue/p/18051130

相关推荐
平头哥在等你4 小时前
《计算机网络名词解释》
服务器·网络·计算机网络
ALLinLLM4 小时前
使用反向代理软件frp在局域网内共享上网
计算机网络·veee
biemowomaomao11 小时前
计算机网络
计算机网络
爱吃涮毛肚的肥肥(暂时吃不了版)11 小时前
计算机网络34——Windows内存管理
网络·计算机网络·udp
Static_Xiao1 天前
计算机网络 8.*结构化布线
计算机网络
XF鸭1 天前
计算机网络各层有哪些协议?
网络·计算机网络
尸僵打怪兽1 天前
软考(中级-软件设计师)(0919)
java·c语言·数据库·计算机网络·软考·多媒体·软件设计师
FHKHH1 天前
计算机网络第二章:作业 1: Web 服务器
服务器·前端·计算机网络
小堃学编程2 天前
计算机网络(七) —— https协议与网络安全证书
计算机网络·web安全·https
秋夫人2 天前
DoS、DDoS、DRDoS 攻击
计算机网络·ddos