【计算机网络】计算机网络 面试高频考点总结

🎈一、概括

⛳ 网络分层有什么好处?

分层可以将每个层的工作都独立起来,即使某一层出现了问题也不会影响到整个系统。而且分层使得整个系统更加易于扩展,也更便於单独实现每个分层的协议

⛳ OSI分层模型以及每一层的功能?

OSI参考模型分为七层,从上到下分别是:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

分层名称 功能
应用层 应用程序之间的通信
表示层 把设备的固有数据格式转化成网络标准格式
会话层 通信管理,负责建立和断开连接
传输层 端到端之间的数据传输
网络层 地址管理与路由选择
数据链路层 互联设备之间传送识别数据帧
物理层 以‘0’‘1’代表电压高低

⛳ TCP/IP五层模型以及各层都有那些协议?

TCP/IP五层模型从上到下有:应用层、传输层、网络层、数据链路层、物理层。

分层 协议
应用层 HTTP,SMTP,POP3,TELNET,SSL/TLS,HTML,DNS
传输层 TCP、UDP
网络层 ARP,IPV4,IPV6,ICMP
数据链路层/物理层 以太网、无线LAN

⛳输入一个网址后发生了什么?

  1. 浏览器通过查询DNS,查找这个URL的IP地址
  2. 得到目标服务器的IP地址及端口号(http 80端口,https 443端口),会调用系统库函数socket,请求一个TCP流套接字。客户端向服务器发送HTTP请求报文
    应用层:客户端发送HTTP请求报文。
    传输层:(加入源端口、目的端口)建立连接。实际发送数据之前,三次握手客户端和服务器建立起一个TCP连接。
    网络层:(加入IP头)路由寻址。
    数据链路层:(加入frame头)传输数据。
    物理层:物理传输bit。
  3. 服务器端经过物理层→数据链路层→网络层→传输层→应用层,解析请求报文,发送HTTP响应报文。
  4. 关闭连接,TCP四次挥手。
  5. 客户端解析HTTP响应报文,浏览器开始显示HTML

⛳IP与MAC地址的区别是什么?

  • 最大的区别就是IP是网络层的协议,用于网络层寻址。而MAC是数据链路层的协议,用于链路层寻址
  • IP地址的长度是32位,MAC地址长度是48位
  • IP地址是可变的,MAC地址是不可变
  • IP的分配是基于网络的拓扑学,MAC的分配是基于制造商

🎈二、应用层

⛳说说HTTP的报文格式?

  • Http协议有两种报文,分别是请求报文和响应报文,每种报文有三个部分
  • 请求报文分为:请求行(请求方法、URL、版本号)、请求报头、实体
  • 响应报文分为:响应行(版本号、状态码、具体信息)、响应报头、实体

⛳HTTP请求头有哪些主要字段?

  • Host:接受请求的服务器地址,可以是IP或者是域名
  • User-Agent:发送请求的应用名称
  • Connection:指定与连接相关的属性,例如(Keep_Alive,长连接)
  • Accept-Charset:通知服务器端可以发送的编码格式
  • Accept-Encoding:通知服务器端可以发送的数据压缩格式
  • Accept-Language:通知服务器端可以发送的语言

⛳HTTP响应头有哪些主要字段?

  • Server:服务器应用软件的名称和版本
  • Content-Type:响应正文的类型
  • Content-Length:响应正文的长度
  • Content-Charset:响应正文所使用的编码
  • Content-Encoding:响应正文使用的数据压缩格式
  • Content-Language:响应正文使用的语言

⛳HTTP有哪些请求方法?

  • GET:获取资源,使用URL访问时就会使用GET方法
  • POST:传输实体,使用表单提交时会使用POST方法,实体中存放用户上传的信息
  • HEAD:获取报文首部,和GET方法相似但不会返回实体,用于URL的有效性以及资源更新的日期
  • PUT:提交上传给服务器对象
  • DELETE:删除服务器对象

⛳GET方法和POST方法有什么区别?

  • GET方法的参数是存放在URL中,POST方法的参数是存放在实体中
  • GET方法相比POST方法更加不安全,不适合传输敏感信息
  • GET方法在URL中传送的参数是有长度限制的,而POST没有
  • GET方法参数只接受ASCII字符,POST没有限制
  • GET方法回退是无害的,POST方法会再次提交请求
  • GET方法会被浏览器主动cache,而POST不会
  • GET方法不会改变服务器资源,POST可能会对服务器资源进行改变
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留

⛳了解哪些HTTP的状态码?

  • 1XX:服务器接到请求,目前正常
  • 2XX:操作成功
    200:操作成功
    204:请求成功,但响应报文中无实体部分
    206:表示客户端进行了范围请求
  • 3XX:重定向
    301:永久重定向
    302:临时重定向
    303:和302相同的功能,303明确客户端应该使用GET方法
    304:所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
  • 4XX:客户端错误
    400:报文中有语法错误
    401:请求需要认证用户信息
    403:服务器理解请求但拒绝
    404:找不到
  • 5XX:服务器错误
    500:服务器内部错误
    503:服务器超负荷或停机维护中,无法处理请求

⛳什么是Cookie?

由于HTTP协议是无状态的,所以当我们需要来保存状态信息时就会使用Cookie。Cookie时服务器发送到浏览器并保存在本地的一小块数据,在浏览器之后的每一次请求都会被携带,用于在服务器区别不同状态信息。

⛳什么是Session?

Session与Cookie的作用相同,也是为了保存用户的状态信息。Session保存在服务器中,当浏览器第一次访问服务器时,就会被创建一个Session_ID,在返回响应时就会使用响应报文中的Set-Cookie将Session_ID设置到浏览器的Cookie中。此后服务器收到请求后,就通过Cookie值找到相应的Session对应的状态信息。

⛳Cookie和Session的区别?

  • Cookie保存在浏览器,容易被窥视和修改。而Session保存在服务器,较为安全
  • Cookie只能存储ASCCII码字符串。而Session可以存储任何类型的数据
  • 对于大型网站,Session占用开销很大,会过多消费服务器资源,而Cookie不会

⛳HTTP1.0和1.1有什么区别?

  • HTTP1.0使用短连接,每次发送数据都进行TCP建立连接,效率低。HTTP1.1改用长连接,只需要建立一次连接就可以进行多次传输数据。
  • HTTP1.0不支持断点传送,每次都会传送全部的页面和数据。HTTP1.1支持断点续传
  • HTTP1.0认为每一个计算机只能绑定一个IP,所以请求消息中的URL没有传递主机名。HTTP1.1在一台服务器上可以存在多个虚拟主机

⛳HTTP2.0有什么新特性?

  • HTTP2.0为了解决报文头过大的问题进行了头部压缩
  • HTTP2.0不使用ASCII码而使用了更加靠近TCP/IP的二进制格式
  • HTTP2.0强化了安全,HTTP2.0一般跑在HTTPS上
  • HTTP2.0每一个请求都是用做连接共享,一个连接上可以有多个请求

⛳为什么需要HTTPS?

  • HTTP存在很大的安全问题。首先消息是明文传输,内容可能被窃听;其次无法验证通信对方的身份,身份可能被伪装;而且还无法证明报文的完整性,报文就是可窜改的。综上,需要一个安全的通信方式,就是HTTPS。
  • HTTPS不是一个应用层新的协议,只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替,再让SSL/TLS与传输层通信。

⛳对称加密和非对称加密分别是什么?

  • 对称加密就是加密和解密使用相同密钥,它的优点是运算速度快,缺点是无法安全的将密钥传输给对方
  • 非对称加密又称公开密钥加密算法,通信双方各自持有一个公钥一个私钥,公钥可以公开给所有人,私钥只能自己持有。通常是使用通信对方的公钥加密,对端使用自己的私钥进行解密。非对称加密算法还用来进行签名,可以进行验证身份。它的优点就是安全,缺点也就是运算速度慢

⛳HTTPS怎么进行加密的?

HTTPS结合了对称加密和非对称加密的优缺点,采用混合加密机制。先使用非对称加密算法在建立连接后将之后要使用的密钥安全的传输到对端。接着双方使用刚刚的密钥进行对称加密通信保证效率。

⛳HTTP和HTTPS的区别?

  • HTTP信息是明文传输,HTTPS则是具有安全性的ssl加密传输协议。
  • HTTPS需要申请CA证书,一般免费的较少,因此需要收费
  • HTTP使用端口为80,HTTPS使用端口为443

⛳了解DNS协议吗?

  • DNS就是域名解析系统,它提供了根据网络主机名或者别名来解析到对应的IP地址的服务。DNS内部实现是一个分布式数据库,每个站点只保存自己的那部分数据,它采用了一种查询回复的方式。
  • 域名系统的层次结构从上到下依次是:根域名服务器(.)、顶级域名服务器(edu,gov,com,net)、权威域名服务器,另外,大多主机还有自己的本地域名服务器
  • DNS的端口使用53,使用TCP和UDP协议进行传输,大多使用UDP。使用TCP的情况有以下两种:
    (1)返回的响应超过512字节
    (2)进行区域传送时(主域名服务器向辅域名服务器传送改变的那部分数据)
  • DNS采用缓存机制,各级域名服务器查询到对应的IP地址后,就会缓存,每隔一段时间后会失效一次

⛳DNS的查找过程是怎样的?

  1. 浏览器从接收到的url中抽取出域名地址,将域名传给DNS应用的客户端
  2. 检查浏览器缓存、本地hosts文件是否有这个网址的映射,如果有,就调用这个IP地址映射
  3. 如果没有,则查找本地DNS解析器缓存是否有这个网址的映射,如果有,返回映射
  4. 如果没有,则向DNS服务器提出查询请求
  5. 服务器接收到查询时,查询本地配置区域资源,查到就返回结果
  6. 如果查不到,但服务器缓存了此网址映射关系,返回查找结果
  7. 如果没有缓存,就继续间请求转发至上一级DNS服务器进行查询。最终将解析结果依次返回本地DNS服务器,本地DNS服务器在返回给客户端,并把这个映射存到服务器的缓存中

⛳了解FTP协议吗?

  • FTP是一个远程传输文件的协议,是一个运行在TCP上的协议。
  • FTP使用了两个并行的TCP连接来传输文件,一个是控制连接(21端口),一个是数据连接(20端口)。如果要进行文件传输,首先打开21端口建立连接后,才可建立数据传输连接进行传输数据。
  • 根据数据连接是否是服务器端主动建立,FTP 有主动和被动两种模式:主动模式是服务器主动建立连接,端口号为20,客户端端口随机,这种方式会降低客户端的安全性。被动模式是客户端主动建立连接,端口号为20,服务端端口号随机,这种方式会降低服务端的安全性

⛳了解DHCP协议吗?

  • DHCP是一个动态主机配置协议,采用了即插即用的方式,用户不需要手动配置IP信息。DHCP不仅配置了IP地址,也会同时配置相应的子网掩码、默认网关。
  • 它的工作流程为:首先等待分配IP的客户端使用UDP将请求报文广播到同一个子网中,DHCP服务器收到报文后,就为其分配相应的IP地址,然后广播出去,此时可能同时有多个DHCP服务器进行相应发送了多个信息,客户端收到某个服务器提高的信息后,就发送 Request 报文给该 DHCP 服务器。最后DHCP 服务器发送 Ack 报文,表示客户端此时可以使用提供给它的信息。

⛳了解电子邮件相关协议吗?

电子邮件协议包含发送协议和接收协议,发送协议常有:SMTP,接受协议常有:POP3和IMAP
在这里插入图片描述
SMTP协议:是邮件应用的核心,采用了命令响应的格式,默认端口使用25。它不使用中间邮件服务器发送邮件,而是直接到达接收方的邮件服务器。SMTP协议只能发送ASCII码。
POP3协议:它的作用就是将接收方的邮件服务器的邮件传送到代理机上。POP3 的特点是只要用户从服务器上读取了邮件,就把该邮件删除。但最新版本的 POP3 可以不删除邮件。
IMAP协议:IMAP 协议中客户端和服务器上的邮件保持同步,如果不手动删除邮件,那么服务器上的邮件也不会被删除。IMAP 这种做法可以让用户随时随地去访问服务器上的邮件。

🎈三、传输层

⛳了解UDP协议吗?

UDP是一个无连接的,尽可能交付的传输层协议,它仅仅实现了多路复用分用和基础的校验和机制而没有实现拥塞控制和流量控制机制,同时支持一对一、一对多、多对多的通信。UDP协议的首部只有8个字节大,包含了源端口、目的端口、首部长度、校验和这四部分。

⛳有了TCP为什么还需要UDP?在什么场景下使用?

UDP独有的特点就是:

  • 无需建立连接,这样就免去了建立连接所花费的时间和资源,即时性强
  • 无连接的状态,无连接状态就无需保存连接中的状态,占用资源小能支持更多活跃用户
  • 首部开销小,TCP协议首部占用20个字节,而UDP只占用8个字节,更轻便
  • 应用层可以灵活的决定发送的数据,使用UDP也就增加了应用层的可操作性和灵活性

UDP的引用场景主要有:

  • DNS协议(使用UDP速度快)
  • RIP路由选择表的更新(路由表迭代快)
  • 流式多媒体(屏幕广播)
  • 英特网电话(语音、视频)
  • DHCP请求报文会分行封装到UDP 动态主机配置协议

⛳了解TCP协议吗?

TCP协议是一个面向连接双全工传输层协议,它实现了报文段的可靠传输,保证应用层收到的数据不重复不错位不丢失。除此之外,TCP协议还实现了流量控制和拥塞控制,并且在每次建立和断开连接时需要进行三次握手和四次挥手的操作。

⛳TCP协议的使用场景?

TCP协议用在需要确保正确可靠的情况下:

  • SMTP 电子邮件协议
  • Telnet 远程终端访问协议
  • Http Web协议
  • FTP 文件传输协议

⛳说说TCP协议怎么实现的可靠传输?

TCP通过实现:确认重传机制数据流编号流量控制拥塞控制机制来实现可靠传输。

  • 确认重传机制实现了建立连接、发送数据报时会回发确认包的机制,实现了丢包延时重传机制
  • 通过对数据流的编号来实现数据分包,保证数据都是按序传输 ,也实现了累计确认的机制
  • 流量控制实现了对接收端的接受能力的检验,以便更好的调整发送能力,使用了滑动窗口和计时器
  • 拥塞控制是对于整个网络情况的一个适应的机制,它通过慢启动、拥塞避免、快速恢复来实现

⛳说说TCP协议的三次握手?

  1. 首先客户端未开始发起连接时处于 CLOSE 状态,服务器处于LISTEN 状态。客户端发器链接时,首先发送一个不含有数据的特殊报文段,被称为SYN报文段。这个报文段中,首部标志位SYN置1表示请求建立连接,并且在首部的序列号中生成自己的传输数据的起始序列号:client_isn,一并发送到服务端。发送后,客户端状态变为 SYN_SENT
  2. 当服务器收到客户端的建立连接的请求时,就开始为此次连接创建缓存和变量。同时,服务端要向客户端发送请求连接以及确认应答的报文段,称之为SYNACK报文段。在这个报文段中,首部标志位SYN置1表示请求连接,并且服务端生成自己的发送数据起始序列号:sever_isn,同时要对客户端发来的SYN报文段进行确认,也就是将自己的ACK确认号设置为client_isn + 1,一并发回客户端。发送后,服务端状态变为SYN_RCVD
  3. 客户端收到SYNACK报文段后,也开始为此次连接创建缓存和变量。同时客户端要向服务端发送一个确认的ACK包。在这次的数据首部中,SYN就可以置0,ACK确认号就为sever_isn+1,序列号为client_isn + 1。同时第三次握手时可以携带数据。发送出后,客户端状态变为ESTABLISHED ,表示已经建立连接,服务端收到ACK包后,状态也变为ESTABLISHED 。至此,三次握手结束,两端正式建立连接。

⛳说说TCP协议的四次挥手?

  1. 客户端发起连接结束,发送一个FIN报文段,这个报文段首部的FIN标志位置1表示要断开连接。发送后,客户端状态变为FIN_WAIT1 状态
  2. 服务端接收到这个报文段后,得知客户端想断开连接,首先发送一个ACK报文段表示收到这个请求,发送后服务端状态变为CLOSE_WAIT状态,此时服务端不会立马断开连接,而是等待将所有未传输完的报文都传输给客户端后,再准备断开连接。客户端接收到这个ACK报文段后,状态变为FIN_WAIT2
  3. 当服务端准备好断开连接时,会主动发送一个FIN报文段给客户端,表示已经可以断开连接了。发送这个报文段后,服务端的状态就变为LAST_ACK
  4. 客户端收到这个FIN报文段后,就会回发一个ACK包给服务端,表示已经收到了,此时服务端收到后就关闭了连接,而客户端进入TIME_WAIT,这个阶段客户端会等待一段时间后才关闭连接,以确保服务端确实收到了ACK包,否则如果ACK丢失就会进行重传。至此四次挥手结束,客户端服务端正式断开连接。

⛳说说TCP协议的流量控制机制?

流量控制是为了控制发送方的速率,保证接收方来得及接收。在TCP的首部中有一个窗口大小的字段,这个字段用来表示接受发送方每次发送的数据包数量。每次接受方都会返回一个自己还可以接受的数据包的数量,发送方就会依据此值来决定发送数量。当接收方缓冲区已满时,将窗口设置为0,发送端不发生数据。之后发送方会定时发送一个检验报文,以便得到最新的接收端窗口大小。

⛳说说TCP协议的拥塞控制机制?

拥塞控制机制是为了适应网络拥堵的情况,当出现网络拥堵时,应控制发送方的发送数据速率。有三个阶段,分别是:慢启动、拥塞避免、快速恢复。

  • 首先发送方维护一个拥塞窗口(cwnd)的变量。起始时cwnd=1,发送方一次发送一个报文段,如果收到确认包,就将cwnd加倍,呈指数型增长。设置一个慢启动阈值为上次出现拥塞时的cwnd/2。接下来只要cwnd大于等于慢启动阈值就进入拥塞避免。如果出现丢包,cwnd置1重新进入慢启动
  • 在拥塞避免状态下,每次收到确认包只将自己的cwnd窗口加一,直到发生三次重复ACK或丢包现象
  • 如果出现三次相同ACK就进入快速恢复,立即发送丢失的报文段,当收到该报文段的确认ACK后修改慢启动阈值和cwnd为当前的cwnd的一半后进入拥塞避免状态

⛳TCP和UDP有什么区别呢?

  • TCP面向连接,UDP无连接
  • TCP可靠安全,UDP不可靠
  • TCP点对点,UDP可以一对一、一对多、多对多
  • TCP实现了流量控制和拥塞控制,UDP没有
  • TCP首部开销大(20字节) ,UDP小(8字节)
  • TCP有接收缓冲区和发送缓冲区,UDP只有接受缓冲区没有发送
  • TCP面向字节流,可拆分合并数据报,UDP面向数据报,不可拆分合并
  • UDP最大传输64k数据,TCP没有限制

🎈四、网络层

⛳IP的分类?

  • A类:1字节(8位)网络号,3字节(24位)主机号。表示范围是:0.0.0.0-127.255.255.255,默认网络掩码为:255.0.0.0,A类地址分配给规模特别大的网络使用
  • B类:2字节(16位)网络号,2字节(16位)主机号。128.0.0.0-191.255.255.255,默认网络掩码为:255.255.0.0,B类地址分配给一般的中型网络
  • C类:3字节(24位)网络号,1字节(8位)主机号。192.0.0.0-223.255.255.255,默认网络掩码是:255.255.255.0,C类地址分配给小型网络,如局域网
  • D类地址称为广播地址

⛳IPV4到IPV6的转换方式?

⛳了解ARP协议吗?

ARP协议是地址解析协议,在数据包传输过程中,IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。ARP协议就实现了通过IP地址得到对应的MAC地址。每一个主机中都有一个ARP的告诉缓存,里面有本局域网上的各主机和路由器的IP地址到MAC地址的映射,如果缓存中找不到,主机就通过广播的形式发送请求,相对应的主机收到报文就会将自己的MAC地址告知。

⛳了解ICMP协议吗?

  • ICMP是一个控制报文协议,它被主机和路由器用来沟通彼此网络层的信息,虽然封装在IP数据报中,但不属于高层协议。
  • ICMP报文分为差错报文和询问报文,常用的Ping就是一个ICMP的报文,它用来测试两台主机之间的连通性。还可以通过时间和成功相应的次数来预估出数据包往返的时间以及丢包率。

⛳了解路由选择协议吗?

路由选择协议就是合理的选择出数据包下次要发送到的路由器位置。可以把路由选择协议划分为两大类:

  • 自治系统内部的路由选择:RIP 和 OSPF
  • 自治系统间的路由选择:BGP

RIP:他是一个自治系统内部的路由选择协议。基于距离向量的算法进行选择,最多能经过的路由器数目为15,超过15就意味着不可达。RIP会按照固定时间间隔和相邻的路由器交换自己的路由表,经过若干次的交换后,所有路由器都会最终知道到达本自治系统中任何一个网络的最短距离和下一跳路由地址。RIP实现简单,开销小,但最大距离15限制了网络规模。

OSPF:是一个自治系统内部的路由选择协议。基于开放最短路径优先的算法实现的。只有当链路状态发生变化时,路由器才会发送信息。相比于RIP,它更加安全,且对单播和多播路由选择总和支持。

**BGP:**是一个边界网关协议,针对不同的网关进行路由选择,由于种种限制,它只能找到一条比较好的路径而不是最佳路径。

欢迎阅读我的其它文章:
传输层:认识TCP、UDP协议
应用层:HTTP协议总结归纳
Java基础 面试高频考点总结
并发篇 面试高频考点总结
有任何问题欢迎指正,也欢迎点赞收藏!如果想加一波关注那就再好不过了😁

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章