计算机网络面经汇总

网络分层

OSI 七层模型

① 应用层(数据包)

应用层位于 OSI 参考模型的第七层,其作用是通过应用程序间的交互来完成特定的网络应用。该层协议定义了应用进程之间的交互规则,通过不同的应用层协议为不同的网络应用提供服务。例如域名系统 DNS,支持万维网应用的 HTTP 协议,电子邮件系统采用的 SMTP 协议等。在应用层交互的数据单元我们称之为报文。

② 表示层(数据包)

表示层的 作用是使通信的应用程序能够解释交换数据的含义,其位于 OSI 参考模型的第六层,向上为应用层提供服务,向下接收来自会话层的服务。该层提供的服务主要包括数据压缩,数据加密以及数据描述。这使得应用程序不必担心在各台计算机中表示和存储的内部格式差异。

③ 会话层(数据包)

会话层就是 负责建立、管理和终止表示层实体之间的通信会话。该层提供了数据交换的定界和同步功能,包括了建立检查点和恢复方案的方法。

④ 传输层(数据报文)

传输层的主要任务是 为两台主机进程之间的通信提供服务。应用程序利用该服务传送应用层报文。该服务并不针对某一特定的应用,多种应用可以使用同一个传输层服务。由于一台主机可同时运行多个线程,因此传输层有复用和分用的功能。所谓复用就是指多个应用层进程可同时使用下面传输层的服务,分用和复用相反,是传输层把收到的信息分别交付上面应用层中的相应进程。

⑤ 网络层(数据分组)

两台计算机之间传送数据时其通信链路往往不止一条,所传输的信息甚至可能经过很多通信子网。网络层的 主要任务就是选择合适的网间路由和交换节点,确保数据按时成功传送。在发送数据时,网络层把传输层产生的报文或用户数据报封装成分组和包向下传输到数据链路层。在网络层使用的协议是无连接的网际协议(Internet Protocol)和许多路由协议,因此我们通常把该层简单地称为 IP 层。

⑥ 数据链路层(帧)

数据链路层通常也叫做链路层,在物理层和网络层之间。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层协议。在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息。通过控制信息我们可以知道一个帧的起止比特位置,此外,也能使接收端检测出所收到的帧有无差错,如果发现差错,数据链路层能够简单的丢弃掉这个帧,以避免继续占用网络资源。

⑦ 物理层(比特流)

作为 OSI 参考模型中最低的一层,物理层的作用是 实现计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。该层的主要任务是确定与传输媒体的接口的一些特性(机械特性、电气特性、功能特性,过程特性)。

TCP/IP四层模型

① 应用层

TCP/IP 模型将 OSI 参考模型中的会话层、表示层和应用层的功能合并到一个应用层实现,通过不同的应用层协议为不同的应用提供服务。例如:FTP、Telnet、DNS、SMTP、HTTP 等。

② 传输层(TCP/IP)

该层对应于 OSI 参考模型的传输层,为上层实体提供源端到对端主机的通信功能。传输层定义了两个主要协议:传输控制协议(TCP)和用户数据报协议(UDP)。其中面向连接的 TCP 协议保证了数据的传输可靠性,面向无连接的 UDP 协议能够实现数据包简单、快速地传输。

③ 网络层(ICMP/IGMP/ARP/RARP/IP 网络协议 IP)

网际互联层对应 OSI 参考模型的网络层,主要负责相同或不同网络中计算机之间的通信。在网际互联层, IP 协议提供的是一个不可靠、无连接的数据报传递服务。该协议实现两个基本功能:寻址和分段。根据数据报报头中的目的地址将数据传送到目的地址,在这个过程中 IP 负责选择传送路线。除了 IP 协议外,该层另外两个主要协议是互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。

④ 网络接入层

网络接入层的功能对应于 OSI 参考模型中的物理层和数据链路层,它负责监视数据在主机和网络之间的交换。事实上,TCP/IP 并未真正描述这一层的实现,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与 TCP/IP 的网络接入层进行连接,因此具体的实现方法将随着网络类型的不同而有所差异。

注:每层使用下层的服务来提供服务,对等层间的数据单位是协议数据单元 PDU,上下层间的数据单位是服务数据单元 SDU

TCP/IP五层模型

  • 应用层(应用层、表示层、会话层)
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

OSI 和 TCP/IP 协议之间的对应关系

OSI七层模型 TCP/IP四层模型 对应的网络协议
应用层(Application) 应用层 HTTP, TFTP, FTP, NFS, WAIS, SMTP, Telnet, DNS, SNMP
表示层(Presentation) TIFF, GIF, JPEG, PICT
会话层(Session) RPC, SQL, NFS, NetBIOS, names, AppleTalk
传输层(Transport) 传输层 TCP, UDP
网络层(Network) 网络层 IP, ICMP, ARP, RARP, RIP, IPX
数据链路层(Data Link) 数据链路层 FDDI, Frame Relay, HDLC, SLIP, PPP
物理层(Physical) EIA/TIA-232, EIA/TIA-499, V.35, 802.3

应用层

TCP与UDP协议的区别⭐

计算机网络面经汇总_第1张图片

  1. TCP面向连接,即发送数据时需要先建立连接;UDP面向无连接,即发送数据时不需要建立连接;
  2. TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP不可靠交付;
  3. TCP连接只能是点到点交互通信的;UDP支持一对一,一对多,多对一和多对多的交互通信
  4. TCP的首部较大为20字节;而UDP只有8字节
  5. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向数据报文段
  6. TCP的逻辑通信信道是全双工的可靠信道;UDP则是不可靠信道

TCP是如何保证传输可靠的?

  • 数据分块:数据会被分割成TCP认为最适合发送的数据块。
  • 序列号和确认应答机制:TCP 给发送的每一个包进行编号,在传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。
  • 超时重传:当TCP发送一个报文后,它会启动一个定时器,等待接收端确认收到这个报文段。若超时还没有收到确认,将重发这个报文段。
  • 流量控制:TCP连接的双方都有一个固定大小的缓冲空间,发送方发送的数据量不能超过接收端缓冲区的大小。
  • 拥塞控制:当网络某个节点发生拥塞时,减少数据的发送。

输入URL到页面渲染的整个流程⭐

计算机网络面经汇总_第2张图片

总结:

  1. DNS解析:浏览器获取域名并将域名转换相应的IP地址。
  2. 建立TCP连接:通过DNS解析获取到IP地址后,向服务器发起TCP连接。
  3. 浏览器向服务器发送HTTP请求
  4. 服务器处理请求并返回HTTP报文
  5. 浏览器解析渲染页面
  6. 关闭TCP连接

三次握手⭐

计算机网络面经汇总_第3张图片

  • 客户端 — 发送带有SYN 标志的数据包— 一次握手 — 服务端
  • 服务端 — 发送带有 SYN/ACK 标志的数据包 — 二次握手 — 客户端
  • 客户端 — 发送带有 ACK 标志的数据包 — 三次握手 — 服务端

白话解析三次握手过程:我要和你建立连接—>你真的要跟我建立连接吗?—>我真的要跟你建立连接----->成功

初始Client和Server均处于closed状态,Server会创建传输进程控制块TCB并进入listernd状态,监听端口是否收到连接请求

第一次握手:Client向Server发送一个SYN标识,发送序号seq=J,发送后Client进入SYN_SENT同步已发送状态,等待Server确认。

第二次握手:当Server收到SYN后,会发送一个SYN标识、ACK标识和确认序号(确认序号为收到序号+1)给Client表示确认连接请求。Server进入 SYN-RCVD 同步已接收状态

第三次握手:当Client收到Server的确认后,检查ACK标识和确认序号数据是否正确,若正确就将ACK标识和确认序号发送给Server,当Server接收到数据后,也会检查ACK标识和确认序号数据是否正确,若正确则连接建立成功,Client和Server进入establish已建立状态,完成三次握手。

四次挥手⭐

计算机网络面经汇总_第4张图片

  • 客户端- 发送一个 FIN,用来关闭客户端到服务器的数据传送
  • 服务器- 收到这个 FIN,它发回一个 ACK,确认序号为收到的序号加1 。
  • 服务器- 关闭与客户端的连接,发送一个FIN给客户端
  • 客户端- 发回 ACK 报文确认,并将确认序号设置为收到序号加1

白话解析四次握手过程:我要和你断开连接—>好的,断吧—>我也要和你断开连接—>好的,断吧

第一次挥手:Client发送一个FIN标识给Server,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态

第二次挥手:Server接收到FIN标识后,会响应一个ACK标识、确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)给Client,,Server进入CLOSE_WAIT状态。此时TCP连接处于半关闭状态,即客户端已经没有要
发送的数据了,但服务端若发送数据,则客户端仍要接收

第三次挥手:Server发送一个FIN标识给Server,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号,Server进入CLOSED状态,完成四次挥手

CLOSE_WAIT与TIME_WAIT的意义⭐

CLOSE-WAIT状态是为了保证Server在关闭连接之前将待发送的数据发送完成。

TIME_WAIT状态发生在第四次挥手,当Client向Server发送ACK确认报文后进入该状态,若取消该状态,Client在收到Server的FIN标识后就会立即关闭连接,此时Server相应的端口并没有关闭,若Client在相同的端口立即建立新的连接,就有可能获取上一次连接吕残留的数据包,可能会导致不可预料的异常。

Keep-Alive 和非 Keep-Alive 区别,对服务器性能有影响吗

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p7aXXqaZ-1617833696764)(C:\Users\10034\AppData\Roaming\Typora\typora-user-images\image-20210321170135295.png)]

对于非 Keep=Alive 来说,必须为每一个请求的对象建立和维护一个全新的连接。

在 Keep-Alive 方式下,服务器在响应后保持该 TCP 连接打开,在同一个客户机与服务器之间的后续请求和响应报文可通过相同的连接进行传送。

Keep-Alive模式的缺点:长时间的保持 TCP 连接时容易导致系统资源被无效占用,若对 Keep-Alive 模式配置不当,将有可能比非 Keep-Alive 模式带来的损失更大。因此,我们需要正确地设置 keep-alive timeout 参数,当 TCP 连接在传送完最后一个 HTTP 响应,该连接会保持 keepalive_timeout 秒,之后就开始关闭这个链接。

Http1.0和Http1.1的区别

Http/1.0定义了三种请求方法:get,post,head

Http/1.1增加了六种请求方法:options,put,patch,delete,trace,connect

方法 描述
get 请求指定的页面信息,并返回具体内容。通常只用于读取数据
post 向指定资源提交数据进行处理请求。数据被包含在请求体中。
delete 请求服务器删除url标识的资源数据。
put 替换指定的资源,没有的话就新增。
connect 将服务器作为代理,让服务器代替。
options 向服务器发送该方法,会返回对指定资源所支持的HTTP请求方法。
head 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
trace 回显服务器收到的请求数据,即服务器返回自己收到的数据,主要用于测试和诊断。
patch 是对put方法的补充,用来对已知资源进行局部更新。

get和post的区别

  • get提交的数据会放在URL之后,并且请求参数会被完整的保留在浏览器记录中,由于参数直接暴露在URL中,可能会存在安全问题,一般用于获取资源信息
  • post参数放在请求体中,并且参数不会被保留,相比get请求安全性高,一般用于修改服务器上的资源。
  • get提交的数据大小有限制;post提交的数据默认没有限制;

HTTP与HTTPS的区别⭐

  • HTTP协议使用明文传输,数据都是未加密的,安全性差;HTTPS数据传输过程是加密的,安全性好;
  • HTTPS运行在SSL之上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP
  • 端口不同:HTTP使用的端口号80;HTTPS使用的端口号为443
  • 资源消耗不同:相比HTTP,HTTPS在通信时会由于加减密处理消耗更多的CPU和内存资源;
  • 开销:HTTPS通信需要认证书

对称加密与非对称加密

对称加密是加密和解密都使用同一个密钥方式;

非对称加密是指使用公钥进行加密,使用私钥进行解密;

TCP的有哪几种状态

  • SYN:表示建立连接
  • FIN:表示关闭连接
  • ACK:表示响应
  • PSH:表示有数据传输
  • RST:表示连接重置

你可能感兴趣的:(面经,计算机网络,网络,http,网络协议)