共计 4686 个字符,预计需要花费 12 分钟才能阅读完成。
开篇介绍
大家好,我是 Java 最全面试题库
的提裤姐,明天这篇是计算机网络,次要总结了计算机网络相干的面试题;在后续,会沿着第一篇开篇的常识线路始终总结上来,做到日更!如果我能做到百日百更,心愿你也能够跟着百日百刷,一百天养成一个好习惯。
说一下 TCP/IP 四层模型
TCP/IP 协定是美国国防部高级打算研究局为实现 ARPANET 互联网而开发的。
- 网络接口层(链路层):包含操作系统中的设施驱动程序、计算机中对应的网络接口卡
- 网络层(互连层、网际层):解决分组在网络中的流动,比方分组的选路。负责 IP 寻址,宰割和组装数据包,路由抉择等。
- 运输层:次要为两台主机上的利用提供端到端的通信
- 应用层:负责解决特定的应用程序细节。
说一下 OSI 七层模型
物理层
:次要定义物理设施规范,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的次要作用是传输比特流。单位:比特、数据位、流、比特流数据链路层
:次要将从物理层接管的数据进行 MAC 地址(网卡的地址)的封装与解封装。在这一层工作的设施是交换机,数据通过交换机来传输。单位:帧、数据帧- ` 网络层:次要将从上层接管到的数据进行 IP 地址(例 192.168.0.1)的封装与解封装。在这一层工作的设施是路由器。单位:数据报、数据包、分组、包
传输层
:定义了一些传输数据的协定和端口号(WWW 端口 80 等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协定,与 TCP 个性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如 QQ 聊天数据就是通过这种形式传输的)。次要是将从上层接管的数据进行分段进行传输,达到目标地址后在进行重组。单位:数据段、分段、报文段会话层
:通过传输层(端口号:传输端口与接管端口)建设数据传输的通路。次要在你的零碎之间发动会话或者承受会话申请(设施之间须要相互意识能够是 IP 也能够是 MAC 或者是主机名)表示层
:次要是进行对接管的数据进行解释、加密与解密、压缩与解压缩等(也就是把计算机可能辨认的货色转换成人可能能辨认的货色(如图片、声音等))应用层
:次要是一些终端的利用,比如说 FTP(各种文件下载),WEB(IE 浏览),QQ 等。单位:报文
OSI 参考模型与 TCP/IP 参考模型对应关系及区别?
共同点:
- 两个都是以
协定栈
的概念为根底,协定栈中的协定彼此相互独立; - 都采纳了
层次结构
的概念,各层性能大体类似。
不同点:
- OSI 有 7 层,TCP/IP 有 4 层。
- TCP/IP 网络层提供无连贯通信,传输层反对无连贯和面向连贯两种;
OSI 网络层反对面向连贯和无连贯,传输层只反对面向连贯的通信。
介绍一下 TCP 三次握手和四次挥手
三次握手:
为了准确无误地把数据送达指标处,TCP 协定采纳了三次握手策略。
用 TCP 协定把数据包送出去后,TCP 不会对传送后的状况束之高阁,它肯定会向对方确认是否胜利送达。握手过程中应用了 TCP 的标记:SYN 和 ACK
- 发送端首先发送一个带 SYN 标记的数据包给对方。
- 接收端收到后,回传一个带有 SYN/ACK 标记的数据包以示传播确认信息。
- 最初,发送端再回传一个带 ACK 标记的数据包,代表“握手”完结。
留神:若在握手过程中某个阶段莫名中断,TCP 协定会再次以雷同的程序发送雷同的数据包
四次挥手:
断开一个 TCP 连贯则须要四次挥手
- 第一次挥手:被动敞开方发送一个 FIN,用来敞开被动方到被动敞开方的数据传送,也就是被动敞开方通知被动敞开方:我曾经不 会再给你发数据了(当然,在 fin 包之前发送进来的数据,如果没有收到对应的 ack 确认报文,被动敞开方仍然会重发这些数据),然而,此时被动敞开方还可 以承受数据
- 第二次挥手:被动敞开方收到 FIN 包后,发送一个 ACK 给对方,确认序号为收到序号 +1(与 SYN 雷同,一个 FIN 占用一个序号)
- 第三次挥手:被动敞开方发送一个 FIN,用来敞开被动敞开方到被动敞开方的数据传送,也就是通知被动敞开方,我的数据也发送完了,不会再给你发数据了
- 第四次挥手:被动敞开方收到 FIN 后,发送一个 ACK 给被动敞开方,确认序号为收到序号 +1,至此,实现四次挥手
TCP 和 UDP 的区别?
- TCP(Transmission Control Protocol,传输控制协议)是基于连贯的协定,也就是说,在正式收发数据前,必须和对方建设牢靠的连贯。一个 TCP 连贯必须要通过三次“对话”能力建设起来
- UDP(User Data Protocol,用户数据报协定)是与 TCP 绝对应的协定。它是面向非连贯的协定,它不与对方建设连贯,而是间接就把数据包发送过来!UDP 实用于一次只传送大量数据、对可靠性要求不高的应用环境
TCP 如何进行流量管制?
TCP 协定利用窗口机制实现流量管制;
TCP 连贯建设时,单方都为之调配了固定大小的缓冲空间;TCP 的接收端只容许另一端发送其缓冲区所能接收的数据:
- 接收端在给发送端发送确认段时,通告接管窗口大小;
- 发送端在接下来发送数据段时,确保未确认段的应用层数据总量不超过接收端通告的接管窗口大小,从而确保接收端不会产生缓存溢出。
什么是拥塞管制?TCP 是如何进行拥塞管制的?
拥塞
拥塞是指太多主机以太快的速度向网络中发送太多的数据,超过了网络解决能力,导致大量数据分组“拥挤”在网络中间设备(如路由器)队列中期待转发,网络性能显著降落的景象。
拥塞的结果:
①数据分组通过网络的时延显著减少。
②因为队列满导致大量分组被抛弃。
拥塞管制
拥塞管制就是通过正当调度、标准、调整向网络中发送数据的主机数量、发送速率或数据量,以防止拥塞或尽快打消已产生的拥塞。
TCP 拥塞管制:
从端到端的角度,揣测网络是否产生拥塞,如果推断网络产生拥塞,则立刻将数据发送速率降下来,以便缓解网络拥塞。
①窗口机制:
通过调节窗口的大小实现对发送数据速率的调整。
②窗口调整的根本策略:AIMD(Additive Increase,Multiplicative Decrease)
加性减少,乘性缩小;
网络未产生拥塞时,逐步“加性”减少窗口大小,当网络拥塞时“乘性”疾速减小窗口大小。
③TCP 的拥塞控制算法:
包含了 慢启动
、 拥塞防止
、 疾速重传
和疾速复原
4 局部。
UDP 如何实现可靠性传输?
传输层无奈保证数据的牢靠传输,只能通过应用层来实现。
实现的形式能够参照 tcp 可靠性传输的形式,只是实现不在传输层,实现转移到了应用层。
实现确认机制、重传机制、窗口确认机制。
如果不利用 linux 协定栈以及下层 socket 机制,本人通过抓包和发包的形式去实现可靠性传输,那么必须实现如下性能:
- 发送:包的分片、包确认、包的重发
- 接管:包的调序、包的序号确认
注:
①给数据包编号,依照包的程序接管并存储;
②接收端接管到数据包后发送确认信息给发送端,发送端接管确认数据当前再持续发送下一个包,如果接收端收到的数据包的编号不是冀望的编号,则要求发送端从新发送。
目前利用 udp 实现了牢靠的数据传输别离为 RUDP、RTP、UDT。
面向连贯和非面向连贯的服务的特点是什么?
面向连贯的服务,通信单方在进行通信之前,要先在单方建设起一个残缺的能够彼此沟通的通道,在通信过程中,整个连贯的状况始终能够被实时地监控和治理。
非面向连贯的服务,不须要事后建设一个联系两个通信节点的连贯,须要通信的时候,发送节点就能够往网络上发送信息,让信息自主地在网络下来传,个别在传输的过程中不再加以监控。
Http 和 Https 的区别
Http 协定运行在 TCP 之上,明文传输,客户端与服务器端都无奈验证对方的身份;
Https 是身披 SSL(Secure Socket Layer)外壳的 Http,运行于 SSL 上,SSL 运行于 TCP 之上,是增加了加密和认证机制的 HTTP。
二者之间存在如下不同:
- 端口不同:Http 与 Http 应用不同的连贯形式,用的端口也不一样,前者是 80,后者是 443;
- 资源耗费:和 HTTP 通信相比,Https 通信会因为加减密解决耗费更多的 CPU 和内存资源;
- 开销:Https 通信须要证书,而证书个别须要向认证机构购买;
Https 的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。
HTTP 申请报文和响应报文的构造是怎么的?
申请报文:从客户向服务器发送申请报文
HTTP 典型的申请办法有:
- GET:申请读取由 URL 所标识的信息
- HEAD:申请读取由 URL 所标识的信息的首部,毋庸在响应报文中蕴含对象。
- POST:给服务器增加信息(例如:正文)
- OPTION:申请一些选项的信息
- PUT:在指明的 URL 下存储一个文档
响应报文:从服务器到客户的答复
HTTP 状态码:
- 1xx:信息提醒;通告信息,可能还须要进一步交互。
- 2xx:胜利;胜利实现客户申请的操作,并进行响应
- 3xx:重定向;示意资源已移走,须要向新的 URL 发送申请
- 4xx:客户端谬误;因为客户申请谬误,无奈胜利响应
- 5xx:服务端谬误;因为服务端谬误,无奈胜利响应
IP 地址有哪些分类?
A 类地址(1~126):网络号占前 8 位,以 0 结尾,主机号占后 24 位。
B 类地址(128~191):网络号占前 16 位,以 10 结尾,主机号占后 16 位。
C 类地址(192~223):网络号占前 24 位,以 110 结尾,主机号占后 8 位。
D 类地址(224~239):以 1110 结尾,保留位多播地址。
E 类地址(240~255):以 1111 结尾,保留位今后应用。
ARP 地址解析协定的工作过程?
通过 IP 地址取得物理地址,是设施通过本人晓得的 IP 地址来取得本人不晓得的物理地址的协定。
工作过程:
- 每个主机都会在本人的 ARP 缓冲区中建设一个 ARP 列表,以示意 IP 地址和 MAC 地址之间的对应关系
- 当源主机要发送数据时,首先查看 ARP 列表中是否有对应 IP 地址的目标主机的 MAC 地址,如果有,则间接发送数据,如果没有,就向 ” 本网段 ” 的所有主机发送 ARP 数据包,该数据包包含的内容有:
源主机 IP 地址,源主机 MAC 地址,目标主机的 IP 地址
。 - 当本网络的所有主机收到该 ARP 数据包时,首先查看数据包中的目标主机 IP 地址是否是本人的 IP 地址,如果不是,则疏忽该数据包,如果是,则首先从数据包中取出源主机的 IP 和 MAC 地址写入到 ARP 列表中,如果曾经存在,则笼罩,而后将本人的 MAC 地址写入 ARP 响应包中,通知源主机本人是它想要找的 MAC 地址。
- 源主机收到 ARP 响应包后。将目标主机的 IP 和 MAC 地址写入 ARP 列表,并利用此信息发送数据。如果源主机始终没有收到 ARP 响应数据包,示意 ARP 查问失败。播送发送 ARP 申请,单播发送 ARP 响应。
DNS(Domain Name System)域名零碎的工作原理?
当 DNS 客户机须要在程序中应用名称时,它会查问 DNS 服务器来解析该名称。客户机发送的每条查问信息包含三条信息:
- 指定的 DNS 域名
- 指定的查问类型
- DNS 域名的指定类别
基于 UDP 服务,端口 53,该利用个别不间接为用户应用,而是为其余应用服务,如 HTTP
,SMTP
等在其中须要实现主机名到 IP 地址的转换。
说说动态路由和动静路由有什么区别?
动态路由是由管理员手工配置的,适宜比较简单的网络或须要做路由非凡管制。
动静路由则是由动静路由协定主动保护的,不需人工干预,适宜比较复杂大型的网络。
路由器可能主动地建设本人的路由表,并且可能依据理论理论状况的变动适时地进行调整。动静路由机制的运作依赖路由器的两个基本功能:对路由表的保护;路由器之间实时的路由信息替换。