计算机网络面试考点归纳

2020年秋招期间自己归纳总结的牛客上相关的面试考点。通过秋招面试情况来看,大部分问题确实有被问到,对自己也有非常大的帮助。不建议直接看我写的回答,而是带着问题去总结自己的回答。相信坚持就会有好结果。

22个问题,共计七千余字。

1、 OSI七层协议知道吧,为什么要进行分层呢
物(物理层)联(链路层)网(网络层)输(传输层)会(会话层)示(表示层)用(应用层)
应用层:为应用程序提供服务,包括提供应用进程所需要的的信息交换和远程服务,还要作为应用进程的用户代理,完成进行信息交换所必要的功能。
表示层:通信的应用程序之间能够解释交换数据的含义,服务包括:数据格式转化数据加密与解密,数据压缩与解压与终端类型的转换;
会话层:建立维护和管理会话;
传输层:建立维护和管理端到端的连接,控制数据的传输方式;(TCP, UDP)
网络层:线路传输数据选择,IP地址和路由选择;
数据链路层:提供介质访问和链路管理,网卡,网桥,交换机
物理层:以比特流的形式在物理媒介上传输数据,集线器,中继器,调制解调器,网线,双绞线和同轴电缆等;
为什么要分层及作用:
利于实现:大问题分解成小问题;
灵活性好:各层之间相互独立,各层可以根据需要独立进行修改或扩充功能。一层协议发生变化,只要接口不变,不会影响其他层;
有利于标准化:适应于不同厂家的设备互联和网络搭建。

2、 什么是应用层,应用层有哪些协议
应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统DNS,支持万维网应用的 HTTP协议,支持电子邮件的 SMTP协议,支持远程登录管理SSH协议等等。我们把应用层交互的数据单元称为报文。

3、 说一下域名系统DNS,以及域名解析的基本过程
域名系统(Domain Name System缩写 DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。域名系统必须要保持唯一性。域名服务主要是基于UDP实现的,服务器的端口号为53。
1) 浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束;
2) 如果浏览器缓存没命中,浏览器会检查操作系统缓存中有没有对应的已解析过的结果;
3) 请求本地域名服务器(LDNS)来解析这个域名;
4) 如果LDNS仍然没有命中,就直接跳到Root Server域名服务器请求解析;随后逐级查询各级服务器得到IP地址返回给本地域名服务器;
5) 本地域名服务器缓存IP,并返回给用户,用户缓存和访问IP;
关于域名解析中的TTL参数
DNS解析的TTL参数,Time To Live。TTL这个参数告诉本地DNS服务器,域名缓存的最长时间。到达最长时间之后本地域名服务器会删除该域名,下次查询时会继续进行上述的复杂过程。
https://h9.nz/6b3nj

4、 HTTP协议及其工作原理
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。http协议是基于TCP/IP协议之上的应用层协议。其工作流程如下:
1) 客户端连接到Web服务器,一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接;
2) 发送HTTP请求,通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
3) 服务器接受请求并返回HTTP响应,Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
4) 释放连接TCP连接,若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
5) 客户端浏览器解析HTML内容,客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

5、 HTTP协议的特点
基于 请求-响应 的模式:肯定是先从客户端开始建立通信的,服务器端在没有 接收到请求之前不会发送响应;
无状态保存:HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议 自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个 级别,协议对于发送过的请求或响应都不做持久化处理。(产生的问题,对于购物网站打开不同的店铺都要继续保持登录状态,Cookie解决)
无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。(HTTP1.0和HTTP1.1区别)

6、 session与cookie的作用
Http协议是无状态的,也就导致服务器无法分辨是谁浏览了网页。为了维持用户在网站的状态,比如登陆、购物车等,出现了先后出现了四种技术,分别是隐藏表单域、URL重写、cookie、session。
cookie是浏览器保存在用户电脑上的一小段文本,用来保存用户在网站上的必要的信息。Web页面或服务器告诉浏览器按照一定的规范存储这些信息,并且在以后的所有请求中,这些信息就会自动加在http请求头中发送给服务器,服务器根据这些信息判断不同的用户。并且cookie本身是安全的。
session只存储在服务器端的,不会在网络中进行传输,所以较cookie来说,session相对安全一些。但是session是依赖cookie的,当用户访问某一站点时,服务器会为这个用户产生唯一的session_id,并把这个session_id以cookie的形式发送到客户端,以后的客户端的所有请求都会自动携带这个cookie.
区别: 1、Cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务器端。2、Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session是没有大小限制和服务器的内存大小有关。3、Cookie有安全隐患,通过拦截或本地文件找到cookie后可以进行攻击。4、Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。

7、 HTTP1.0和HTTP1.1区别
1)缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
2)带宽优化及网络连接的使用,HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。
3)错误通知的管理,在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
4)Host头处理,在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
长连接,HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

8、 HTTPS和HTTP区别?握手过程和加密过程?
HTTPS是建立在TLS/SSL上的HTTP协议
 HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
 HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 SSL握手需要的 9 个包,所以一共是 12 个包。
 http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
 HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。
https://www.cnblogs.com/hynblogs/p/12251279.html
https://www.cnblogs.com/hynblogs/p/12251317.html

9、 对称会话公匙?为什么不采用非对称的?
当然如果在确保客户端与服务端得到相同秘钥的过程是安全的,果断选择对称加密方式。因为计算量小,加密速度快,加密效率高。但就是因为在传输共同秘钥的过程中的安全性无法保证,因此衍生出来了非对称(公钥加密算法),但代价是处理速度慢,服务器消耗大。

10、 浏览器输入网址到解析的过程
1)DNS域名解析:在浏览器输入网址后,因为浏览器并不能直接通过域名找到对应的服务器,而是通过IP地址,所以这需要域名解析系统,转换得到对应的IP,才能访问服务器。
2)建立TCP连接:三次握手。
3)发送HTTP请求:请求数据报。
4)服务器得到并处理请求,返回HTTP报文:它会对TCP连接进行处理,对HTTP协议进行解析,并按照报文格式进一步封装成HTTP Request对象,供上层使用。HTTP报文也分成三份,状态码 ,响应报头和响应报文。
5)浏览器解析渲染;
6)断开连接(四次挥手)。

11、 比较下TCP和UDP,说说TCP为什么能实现可靠传递
UDP面向报文传输,是尽最大努力交付的一种为实现传输层协议的最基本功能的传输协议。不考虑传输顺序,丢包,网络阻塞等情况。适合数据量少和实时性高对信息要求不是那么严格的应用场景。比如视频会议等。
TCP面向连接传输,是一种可靠传输方式。可以实现丢包重发,顺序控制和流量控制,避免阻塞等功能。速度相对较慢,适用于传输大量数据和对信息正确性要求较高的场景。
校验和:检查数据在传送过程中是否有差错,如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段;
流量控制:对于通信双方而言的,设置固定大小的缓冲区,当接收方来不及处理发送方传来的数据,防止丢包,就会利用滑动窗口大小提醒发送方降低速率;
拥塞控制:对于整个网络而言,当网络拥塞时,减少发送数据量,防止拥塞恶化;
分组确认:发送一个数据,只有收到对方的确认信息之后,才会认为发送成功;
超时重传:发送一个数据,会开启定时器,在规定时间内接收不到返回确认就会重新发送。

12、 TCP三次握手的过程,为什么不是二次握手?
客户端向服务端发送连接请求报文段。该报文段的头部中同步信号位SYN=1,确认信号位ACK=0,客户端序号为系统随机分配一个x;
服务端收到连接请求报文段后,如果同意连接,则会发送一个应答:SYN=1,ACK=1,系统为服务端随机分配一个序号y,和确认号为客户端序号的下一位x+1;
客户端收到连接同意的应答后,还要向服务端发送一个确认报文段,表示:服务端发来的连接同意应答已经成功收到。ACK=1,序号为x+1,确认号为y+1。可以传输数据了。
关键在于客户端和服务器端什么时候进入确认建立的状态。三次握手,客户端返回确认服务器端信号的报文段才会确认连接,服务器端只有收到客户端的确认之后才会确认连接,保障的连接的唯一性与有效性。
而二次握手,客户端改变不大,也是需要接收到服务端的确认信号之后确认连接,而服务器端收到客户端的同步信号就进入确认建立状态可以接收和传递数据。会导致,因网络延迟或阻塞导致的客户端连接请求重发,当其中一个连接过程结束,服务器端再次收到延时的请求时,又会进入就绪状态,造成资源浪费。另一方面从网络安全方面,攻击者可以向服务器发送大量的连接请求,服务器资源肯定会过载。

13、 TCP四次挥手过程,为什么不是其他
客户端数据发送完毕,向服务器端发送连接断开请求,其中FIN=1,序号x
服务器端返回确认信号,ACK=1,序号为y,确认号为x+1,此时客户端只会接受服务器端的报文段,服务器端可以继续发送报文。
服务器数据发送完毕,2客户端向服务器端发送连接断开请求,其中FIN=1, ACK=1,确认号还是x+1;
客户端向服务器端返回确认信号,ACK=1,序号为x+1,并启动定时器。当服务器端没有再返回请求之后,客户端就会关闭,服务器端接收到第四次的确认信号之后也会进入关闭状态。
之所以客户端要进入等待状态,就是为了防止服务器端接收不到第四次的确认信号之后,重发请求,而此时客户端已经关闭,导致服务器端超时关闭。

14、 TCP的拥塞控制算法
慢启动,拥塞避免,快重传,快回复 cwnd
慢启动:即初始化拥塞窗口大小设置为1,每经过一个往返时间即将窗口大小乘2。拥塞窗口的大小即为能够连续发送数据段的大小,即为即使没有收到前一个报文段的确认序号,也能够发送其后面的报文段。当前的拥塞窗口大小,达到了慢启动的阈值之后,就会进入拥塞避免阶段;
拥塞避免:此时拥塞窗口的大小每隔一个往返时间加一。那怎样判断网络是否拥塞了,即当在该拥塞窗口下发送的报文段没有全部确认,并且重传计时器超时,则认为此时的网络开始拥塞。就将拥塞窗口的大小设置为1,进入慢重启动阶段;
快重传:有时可能会出现不是由网络延迟导致的丢包事件,因此当收到连续的三个确认ACK之后,系统判定出现个别的包丢失,立即启动快重传机制。而不必要等到重传计时器超时之后再进行重传,能够大大提高传输效率;
快恢复:同时在收到连续的3个确认ACK之后,不执行慢启动算法,而是执行快恢复算法。即将拥塞窗口及慢启动阈值,设置为当前窗口大小的一半,然后直接进入拥塞避免阶段。(新阈值可以设置为上述阈值加3,因为已经收到了连续的三个确认ACK,说明后三个报文段已经存在于接收端的缓存队列中)

15、 TCP流量控制
不同于TCP的拥塞控制是为了预防网络传输过程中的拥塞。流量控制是为了平衡接收端对数据的处理能力。防止产生因接收端缓冲区溢出导致的丢包现象,浪费网络资源。
发送窗口又称为滑动窗口其大小就为该时段,发送端能够连续发送报文的最大长度。当接收端缓存区还剩2时,通过确认报文返回给发送端剩余窗口大小为2,动态的调整发送窗口的大小为2。用于采用累积确认的方式,只有当该窗口中的最开始的报文段得到确认,发送窗口才会在数据段序列上向前移动。当窗口大小设置为0时,会停止发送并启动定时器,每到一个定时时间段就会主动询问接收端剩余窗口大小。

16、 网络层的一些基本概念
网络层主要有IP和ICMP两个协议组成;
网络层和数据链路层的主要区别在于,网络层是实现两个没有直接相连的网络之间的通信传输是一种“点对点”的方式。而数据链路层是实现具有直连两个设备之间的通信功能,是一种“端对端”的通信方式。
在网桥或者交换集线器等物理层或者数据链路层数据包的转发设备,不需要设置IP地址,通过MAC地址进行标识同一链路层中的不同设备。
由于不同的数据链路层有各自的最大传输单元(MTU),因此IP会有可能进行分片处理。
IP是面向无连接的方式。一是为了简化,其次是为了提速,将提升可靠性的任务交给了上一层(传输层)的TCP进行控制。

17、 IP地址相关的基本概念
IP地址由网络标识和主机标识两部分组成。同一个网段内的所有节点的网络标识相同,主机标识不同,就构成了网络IP地址的唯一性。
IP地址的分类:A类(开头:0,网络号前8位);B(开头:10, 网络号前16);C(开头:110,网络号前24);D(开头:1110,网络号前32)。D类地址没有主机号,常被用于多拨;
广播地址:用于向同一链路中相互连接的主机之间发送数据包。将IP地址的主机地址部分全部设置为1,就是广播地址。广播地址分为本地广播和直接广播两种,本地广播只能在同一个网段中进行传递,而直接广播可以传递到其他网络。
IP多播:多播解决了广播不能跨路由器和不能选择目的主机的缺陷,使用的是D类地址。
子网掩码:由于ABCD地址分类,同一个网段中不一定会存在这么多数量的主机,因此会造成大量的IP地址浪费。从而引入了子网掩码的概念,提高利用率。
默认路由:路由表中任意一个地址都能够与之匹配的记录。默认路由一般设置为:0.0.0.0/0或者default;
主机路由:IP地址/32;
环回地址:127.0.0.1,使用这个IP地址,数据包不会流向网络。

18、 数据分片中UDP报文和TCP报文的区别
UDP是在IP层进行报文的切分。此时IP层不区分数据与报文首部。因此分片的组中只会有一个UDP的首部,在目的主机的IP层进行重组,并向上传递给UDP;
TCP是在传输层进程分片的,因此每个片段都会有一个TCP的首部,直接交付给目的主机的TCP层进行重组。

19、 ARP(Address Resolution Protocal)地址解析协议
将IP地址转化为对应的MAC地址,其工作机理如下:
1) 向所在链路中的所有主机广播一个ARP请求包,包中包含了自己的IP地址MAC地址和目标的IP地址;
2) 收到ARP请求包的主机与自己的IP地址比较,如果不同则丢弃。相同则返回一个ARP响应包,其中被塞入了目标主机的MAC地址。
3) 而后就可以实现端对端的通信。为了减少ARP报文的数量和滥用,降低网络的不必要流量。通信双方会缓存对方的MAX地址。这种缓存是有一定时间限制的,超过这个时间就会被删除。
RARP是将ARP反过来,由MAC地址知道IP地址。

20、 IP地址和MAC地址为何缺一不可
最早的以太网只有交换机没有路由器,属于同一个链路。因此早期的网络只需要MAC地址就能实现数据的交换。随着互联网的快速发展,出现越来越多的大型局域网和数以万计的主机。如果还是只通过MAC地址唯一标识,那从中寻找到目标主机需要广播大量的报文,造成大量的流量浪费。因此就引入IP,定位到局域网,再在同一个链路层中进行MAC通信。
举例说明:简单的说一台电脑上的IP地址是会变化的,随着时间和不同的网络环境都会不一样,MAC电脑是物理地址在这台电脑上面的固定不会变化的。

21、 ICMP协议作用
ICMP协议主要用来检测网络通信故障和实现链路追踪,最典型的应用就是Ping和Traceroute。
Ping:通过发送回送请求报文和回送回答报文来检测源主机到目的主机的链路是否有问题,目的地是否可达,以及通信的延迟情况。
Traceroute:充分利用ICMP超时消息的应用。可以显示从本地主机到目的主机之间经过哪些路由器。

22、 什么是IP隧道,主要是为了解决什么问题
目前互联网中IPv4和IPv6两种IP协议共存,当连个IPv6网络之间通过IPv4网络进行消息传递时就会出现兼容性的问题。因此,通过在IPv6报文头部追加IPv4报文头的方法,通过IPv4网络后再去掉。这种方式就叫做IP隧道。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值