计算机网络面试常考知识点

1、网络层

1.1 ARP协议工作原理

1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。

2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址源主机MAC地址目的主机的IP 地址

3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。

4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
注意:广播发送ARP请求,单播发送ARP响应。

1.2 描述RARP协议

RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。

工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。

2、传输层

2.1 TCP如何保证可靠传输

1.数据被分割成TCP最适合发送的数据块。

2.TCP给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。

3.检验和:TCP将保持数据和首部的校验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。

4.TCP的接收端会丢弃重复的数据。

5.流量控制:TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方数据,能提示发送方降低发送速率,防止丢包。TCP使用流量控制协议是可变大小的滑动窗口协议。(TCP利用滑动窗口实现流量控制)

6.拥塞控制:当网络拥塞时,减少数据发送

7.停止等待协议:没发完一个分组就停止发送,等待对方确认,对方确认后再发下一个分小组。超时重传:当TCP发出一个段后,它启动一个定时器,等待接收端确认收到报文段。如果不能及时收到一个确认,将重发这个报文段。

2.2 TCP和UDP区别

TCP是传输控制协议和 UDP是用户数据报协议
在这里插入图片描述

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。

2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。

3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。

5、TCP对系统资源要求较多,UDP对系统资源要求较少。

6、TCP首部开销20字节;UDP的首部开销小,只有8个字节

7、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的

8、UDP 主要用于包总量较少的通信(DNS)、视频、音频等多媒体通信(即时通信)、高速传输和实时性要求高的广播通信(广播、多播);
TCP由于具有较高的安全可靠性,所以多用于文件和数据的传输。TCP速度较慢不适合做广播。

2.3 TCP和UDP分别对应的协议

TCP对应的协议:

(1) FTP:定义了文件传输协议,使用21端口。

(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。

(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。

(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。

(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

UDP对应的协议:

(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。

(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

(3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

2.4 TCP协议中的拥塞控制,流量控制,以及超时重传

这三种机制是TCP可靠传输的保证。

一、拥塞控制

拥塞控制有4步:慢启动,拥塞避免,快重传,快恢复

在这里插入图片描述
在这里插入图片描述

慢启动和拥塞避免

我们首先要知道一个概念,TCP传输数据的时候,一次能传输多少都是有发送窗口来控制的,要合理的选择发送窗口的大小,如果太大就会导致阻塞,如果太小就会倒找延迟。所有就出现了接收窗口和拥塞窗口,而发送窗口的大小取他们两者中较小值。为了进一步提高网络带宽利用率,此时就出现了慢启动算法,因为TCP在刚开始接收数据的时候根本不知道网络的实际情况,就要使用一种平滑的方式扩大拥塞窗口,让拥塞窗口慢慢变大,实际上慢启动方式是让拥塞窗口大小呈指数增长,如果不加以限制,很快就会造成网络拥塞。
这个时候就出现了避免拥塞,当拥塞窗口大小到达一个阈值时,就让他以线性的方式增长,当出现了拥塞现象,新的阈值边为拥塞窗口大小的一半,拥塞窗口置为1。

快重传和快恢复:

当发生拥塞的时候肯定会出现发送端连续收到多个确认报文的情况,这个时候说明数据已经无序了,TCP规定如果连续接收到3个确认报文就发送未收到数据报,就不必等重传计时器的时间的到来,这就是快重传。快恢复就是让阈值直接等于原来拥塞时的拥塞窗口大小的一半,不必再次计算。

二、流量控制

网络通信的双方往往忽略的网络拥塞状态直接发送数据,一旦某个时刻,双方同时发送数据就会网络堵塞导致丢包问题,这个时候就需要滑动窗口这种机制来进行流量控制,但是滑动窗口太小就会导致了传输效率降低,因为频繁的发送和接收确认报文。但是滑动窗口太大,就像没有窗口一样,同样会导致拥塞。

三、超时重传

网络通信的时候,难免会因为网络延迟导致丢包的问题。TCP为了解决这个问题,在每个报文都增加了定时器,在初次发送一个报文的适合计时器开始计时,如果存在超过时间且没有收到确认报文的时候,那么久会触发超时重传(一般为5次,第一次为0.2s ),计时器重值,计时器时间增加前一次的一倍。

2.5 为什么客户端发出第四次挥手的确认报文后要等2MSL的时间才能释放TCP连接?

1,确认最后一个确认报文可以到达,如果服务器没有收到客户端发送来的确认报文那么就会重新发送连接释放请求报文,客户端等待一段时间就是为了处理这种情况的发生。

2,等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。

2.6 第三次握手的原因

第三次握手是为了防止失效的连接请求到达服务器,让服务器错误的打开连接。

客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端返回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接,但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接,如果有第三次握手,客户端就会忽略服务器之后发送的对滞留连接请求的连接确认。

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

因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

2.8 如果已经建立了连接,但是客户端突然出现故障了怎么办?

TCP设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。

服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。

若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

2.9 TCP建立连接时的三次握手

在这里插入图片描述

整个流程为:

1、客户端主动打开,发送连接请求报文段,将SYN标识位置为1,Sequence Number置为x(TCP规定SYN=1时不能携带数据,x为随机产生的一个值),然后进入SYN_SEND状态

2、服务器收到SYN报文段进行确认,将SYN标识位置为1,ACK置为1,Sequence Number置为y,Acknowledgment Number置为x+1,然后进入SYN_RECV状态,这个状态被称为半连接状态

3、客户端再进行一次确认,将ACK置为1(此时不用SYN),Sequence Number置为x+1,Acknowledgment Number置为y+1发向服务器,最后客户端与服务器都进入ESTABLISHED状态

为什么在第3步中客户端还要再进行一次确认呢?

这主要是为了防止已经失效的连接请求报文段突然又传回到服务端而产生错误的场景:所谓"已失效的连接请求报文段"是这样产生的。正常来说,客户端发出连接请求,但因为连接请求报文丢失而未收到确认。于是客户端再次发出一次连接请求,后来收到了确认,建立了连接。数据传输完毕后,释放了连接,客户端一共发送了两个连接请求报文段,其中第一个丢失,第二个到达了服务端,没有"已失效的连接请求报文段"。

现在假定一种异常情况,即客户端发出的第一个连接请求报文段并没有丢失,只是在某些网络节点长时间滞留了,以至于延误到连接释放以后的某个时间点才到达服务端。本来这个连接请求已经失效了,但是服务端收到此失效的连接请求报文段后,就误认为这是客户端又发出了一次新的连接请求。于是服务端又向客户端发出请求报文段,同意建立连接。假定不采用三次握手,那么只要服务端发出确认,连接就建立了。

由于现在客户端并没有发出连接建立的请求,因此不会理会服务端的确认,也不会向服务端发送数据,但是服务端却以为新的传输连接已经建立了,并一直等待客户端发来数据,这样服务端的许多资源就这样白白浪费了。

采用三次握手的办法可以防止上述现象的发生。比如在上述的场景下,客户端不向服务端的发出确认请求,服务端由于收不到确认,就知道客户端并没有要求建立连接。

2.10 建立连接后的TCP传输

在这里插入图片描述

序: 代表序列号
确:代表确认应答号
源: 代表源端口
目: 代表目标端口

1、客户端XP传送一段长203字节的数据,序列号为第一个字节的序号:1。
2、服务端Web收到该报文后,确认号为收到的数据的总长度+1,(203+1=204)。
3、因为客户端回复的第一段报文没有数据,所以回复的第二段报文的序列号还是1。
4、客户端第二次回复的报文带有1460个数据,所以第三段报文的序列号为1460+1=1461。
5、由于客户端将数据流分为三段,所以确认号都保持一致,都为204,代表对客户端第一条报文的回答。
6、客户端收到服务端的报文后,总共收到2053个字节,所以下确认号为2054(2053+1),序列号为204(自己传输的203个字节+1)。

3、应用层

3.1 http和https的区别

1、https 协议需要到 ca申请证书,一般免费证书较少,因而需要一定费用。

2、http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 SSL加密传输协议。

3、http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

4、http 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全。

3.2 http常见状态码

200 :请求成功,成功返回网页
301:资源(网页等)被永久转移到其它URL
302 :资源(网页等)被临时转移到其它URL
304 :请求未修改、命中缓存
401 :未授权
403 :服务器拒绝请求
404 :请求的网页或资源不存在
500 :内部服务器错误,无法完成请求
502 :错误网关
503 :请求未完成,服务器临时过载或宕机
504 :网关超时

3.3 http请求和响应

HTTP请求信息由3部分组成:
1、 请求方法(GET/POST)、URI、协议/版本
2、请求头(Request Header):Content-Type、端口号Host、Cookie
3、请求正文:包含客户提交的查询字符串信息请求头和请求正文之间是一个空行

HTTP响应也由3个部分构成:
1、状态行:状态代码及描述 如404、500
2、响应头(Response Header):Content-Type 、Server、Date
3、响应正文:html代码

3.4 http请求方法有哪些

在这里插入图片描述

3.5 在浏览器中输入url地址到显示主页过程

访问目标地址有两种方式,首先是直接使用目标IP地址访问,还有一种是通过域名访问。

使用域名访问就要使用域名解析协议,通过DNS获得目标IP地址,获得目标IP地址以后,经历TCP三次握手保证双方可靠的连接,成功建立连接以后发送HTTP请求,服务器响应HTTP请求,浏览器得到想要的资源,解析网页,通过页面进行渲染展现给用户。

在这里插入图片描述
简单来说分为以下过程:
1.DNS解析
2.TCP连接
3.发送HTTP请求
4.服务器处理请求并返回HTTP报文
5.浏览器解析渲染页面
6.连接结束。

3.6 常见的应用层端口号

在这里插入图片描述

常用的应用层协议使用的端口(号):
http = TCP + 80
Https = TCP + 443
RDP = TCP + 3389
ftp = TCP + 21
共享文件夹 = TCP + 445
SMTP = TCP + 25
POP3 = TCP + 110
telnet = TCP + 23
SQL = TCP + 1433
DNS = UDP + 53

3.7 DNS域名系统,简单描述其工作原理

1、当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。
2、客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。
3、基于UDP服务,端口53.
4、该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。

4、其他

4.1 OSI,TCP/IP,五层协议的体系结构,以及各层协议

OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。
五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。

每一层的协议如下:

物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器)
数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS

每一层的作用如下

物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
数据链路层:将比特组装成帧和点到点的传递(帧Frame)
网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
会话层:建立、管理和终止会话(会话协议数据单元SPDU)
表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
应用层:允许访问OSI环境的手段(应用协议数据单元APDU)

4.2 了解交换机、路由器、网关的概念,并知道各自的用途

1、交换机

1、交换机工作于OSI参考模型的第二层,即数据链路层,相当于一个多端口的网桥,是交换式局域网的核心设备。
2、交换机一般以全双工方式工作,有的局域网交换机采用存储转发方式进行转发,有的交换机采用直通交换方式(即在收到帧的同时立即按帧的目的MAC地址决定帧的转发端口,而不必进行先缓存再进行处理)。
3、交换机连接同一个网段中的设备,不能跨网段。

2、路由器

1、路由器是连接两个不同网段的设备。

3、网关

1、网关(Gateway),网关顾名思义就是连接两个网络的设备

4、中继器

1、中继器工作在物理层,用来连接两个速率相同且数据链路层协议也相同的网段,连接起来的几个网段仍然是一个局域网。
2、中继器既不能隔离冲突域,也不能隔离广播域。

5、集线器

集线器也工作在物理层,相当于一个多接口的中继器,中继器既不能隔离冲突域,也不能隔离广播域

6、网桥

1、两个或多个以太网通过网桥连接起来后,就成为一个覆盖范围更大的以太网
2、网桥是交换机的前身
3、网桥工作在数据链路层的MAC子层,可以互联不同的物理层、不同的MAC子层以及不同速率的以太网,使以太网各网段成为隔离开的碰撞域。
4、网桥具有过滤帧以及存储转发帧的功能,可以隔离冲突域,但不能隔离广播域。

4.3

原创文章 62 获赞 133 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43142797/article/details/105577948