【备战秋招系列-2】计算机网络面试重点知识点整理

网络协议分层

国际标准化组织 ISO 提出了 OSI 开放互连的七层计算机网络模型,从上到下分别是应用层、表示层、会话层、运输层、网络层、链路层和物理层。OSI 模型的概念清楚,理论也比较完善,但是既复杂又不实用。还有一种是 TCP/IP 体系结构,它分为四层,从上到下分别是应用层、运输层、网际层和网络接口层,不过从实质上将只有三层,因为最下面的网络接口层并没有什么具体内容。因特网的协议栈使用一种五层的模型结构,从上到下依次是应用层、运输层、网络层、链路层和物理层,其中下层是为上层提供服务的,每层执行某些动作或使用下层的服务来提高服务。

应用层

应用层是网络体系结构中的最高层,应用层的任务就是通过应用进程之间的交互来完成特定网络应用,这一层的数据单元叫做报文

应用层的协议定义了应用进程之间通信和交互的规则,主要包括了域名系统 DNS、支持万维网的 HTTP 协议、支持电子邮件的 SMTP 协议、文件传输协议 FTP 等。

域名解析系统 DNS

DNS 被设计为一个联机分布式数据库系统,并采用客户服务器方式。DNS 使大多数名字都在本地进行解析,仅少量解析需要在互联网上通信,因此 DNS 的效率很高。由于 DNS 是分布式系统,即使单个计算机出现了故障也不会妨碍到整个 DNS 系统的正常运行。

主机向本地域名服务器的查询一般都采用递归查询,递归查询指如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份向其他根域名服务器继续发出查询请求报文。递归查询的结果是要查询的 IP 地址,或者是报错,表示无法查询到所需的 IP 地址。

本地域名服务器向根域名服务器查询通常采用迭代查询,迭代查询指当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉它该向哪一个域名服务器进行查询。本地域名服务器也可以采用递归查询,这取决于最初的查询请求报文设置的查询方式。

文件传送协议 FTP

FTP 使用 TCP 可靠的运输服务,FTP 使用客户服务器方式,一个 FTP 服务器进程可以同时为多个客户进程提供服务,在进行文件传输时,FTP 的客户和服务器之间要建立两个并行的 TCP 连接:控制连接和数据连接,实际用于传输文件的是数据连接。

电子邮件系统协议 SMTP/POP3/IMAP

一个电子邮件系统有三个主要组成构件,即用户代理、邮件服务器、以及邮件协议。

从用户代理把邮件传送到邮件服务器,以及在邮件服务器之间的传送都要使用 SMTP,但用户代理从邮件服务器读取邮件时则要使用 POP3 或 IMAP 协议。

基于万维网的电子邮件使用户可以利用浏览器收发电子邮件,用户浏览器和邮件服务器之间使用 HTTP 协议,而邮件服务器之间的传送仍然使用 SMTP 协议。


运输层

运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务,应用进程利用该服务来传送应用层报文。由于一台主机同时可以运行多个进程,因此运输层具有复用和分用的功能,复用就是多个应用层进程可以同时使用下面运输层的服务,分用就是把运输层收到的信息分别交付给上面应用层中的对应进程。

运输层主要使用两种协议:① 用户数据报协议 UDP,这是一种提供无连接的、尽最大努力交付的数据传输服务,不保证数据传输的可靠性,数据传输单位是用户数据报。② 传输控制协议 TCP,这是一种面向连接的、可靠的数据传输服务,数据传输单元是报文。


网络层

网络层负责为分组交换网上的不同主机提供通信服务,在发生数据时,网络层把数据层产生的报文或用户数据报封装成分组进行传送,由于网络层使用 IP 协议,因此分组也叫 IP 数据报。网络层的另一个任务就是选择合适的路由,使源主机运输层所传下来的分组能够通过网络中的路由器找到目的主机。

网络层的协议包括了网际协议 IP、地址解析协议 ARP、网际控制报文协议 ICMP 以及路由选择协议 RIP/OSPF/BGP-4 等。

网际协议 IP

网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一,一般指的是 IPv4。与 IP 协议配套使用的协议还有 ARP、ICMP 和 IGMP,IP 使用 ARP,ICMP 和 IGMP 要使用 IP。由于网际协议 IP 是用来使互连起来的许多计算机网络能够进行通信的,因此 TCP/IP 体系中的网络层也称网际层或 IP 层。要解决 IP 地址耗尽的问题,根本方法是采用具有更大地址空间的新版本 IP 协议即 IPv6,向 IPv6 过渡可以使用双协议栈或使用隧道技术。

地址解析协议 ARP

由于 IP 协议使用了 ARP 协议,因此把 ARP 协议归到网络层,但 ARP 的作用是通过一个 ARP 高速缓存存储本地局域网的各主机和路由器的 IP 地址到硬件地址的映射表,以从网络层的 IP 地址解析出在数据链路层使用的硬件地址,因此也可以把 ARP 划归在数据链路层。与 ARP 对应的协议是 RARP,逆地址解析协议,作用是使只知道自己硬件地址的主机能够找出 IP 地址,但被 DHCP 协议取代。

路由选择协议 RIP/OSPF/BGP-4

路由选择协议有两大类:内部网关协议,如 RIP 和 OSPF;外部网关协议,如 BGP-4。

RIP 是分布式的基于距离向量的路由选择协议,只适用于小型互联网。RIP 按照固定的时间间隔与相邻路由器交换信息,交换的信息是当前路由表。OSPF 是分布式的链路状态协议,适用于大型互联网,只在链路状态发生变化时才向本自治系统中的所有路由器用洪泛法发送与本路由器相邻的所有路由器的链路状态信息。

BGP-4 是不同自治系统的路由器之间交换路由信息的协议,是一种路径向量路由选择协议。其目标是寻找一条能够到达目的网络且比较好的路由而不是最佳路由。

网际控制报文协议 ICMP

ICMP 报文作为 IP 数据报的数据,加上首部后组成 IP 数据报发送出去,使用 ICMP 并非为了实现可靠传输,ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。

ICMP 的一个重要应用就是分组间探测 PING,用来测试两台主机之间的连通性,PING 使用了 ICMP 回送请求与回送回答报文。

网际组管理协议 IGMP

IP 多播使用 IGMP 协议,IGMP 并非在互联网范围内对所有多播组成员进行管理,它不知道 IP 多播组包含的成员个数也不知道这些成员都分布在哪些网络上。

IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机上的某个进程参加或推出了某个多播组。


链路层

数据链路层的任务是将网络层交下来的 IP 数据报组装成帧,在两个相邻结点之间的链路上传输帧,每一帧包括数据和必要的控制信息(同步信息、地址信息、差错控制等)。在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始到哪个比特结束,这样链路层就可以从帧中提取出数据部分上交给网络层。控制信息还使接收端能够检测到所收到的帧有无差错,如果有差错就简单地丢弃这个帧以免继续传送而浪费网络资源。

数据链路层的协议包括了点对点协议 PPP 和 CSMA/CD 协议等。

点对点协议 PPP

在通信线路质量较差的年代,使用高级数据链路控制 HDLC 作为实现可靠传输的数据链路层协议,但现在 HDLC 已经很少使用了,对于点对点的链路,简单得多的点对点协议 PPP 是目前使用得最广泛的数据链路层协议。PPP 协议的特点是简单、只检测差错而不纠正差错、不使用序号也不进行流量控制、可同时支持多种网络层协议。

CSMA/CD 协议

以太网采用的是具有冲突检测的载波监听多点接入 CSMA/CD 协议,协议的要点是:发送前先监听、边发送边监听,一旦发现总线上出现了碰撞就立即停止发送。然后按照退避算法等待一段随机时间后再次发送,因此每一个站在自己发送数据之后的一小段时间内存在遭遇碰撞的可能性。以太网上各站点都平等地争用以太网信道。


物理层

物理层的任务是尽可能地屏蔽掉传输媒体和通信手段的差异,使物理层上面的数据链路层感觉不到这些差异,使其只需考虑本层的协议和服务。

物理层所传输的数据单位是比特,发送方发送 1 或 0,接收方也接收 1 或 0,因此物理层需要考虑用多大的电压代表 1 或 0,以及接收方如何识别出发送方所发送的比特。除此之外,物理层还要确定连接电缆的插头应当有多少根引以及各引脚如何连接等问题。


TCP

TCP 特点

TCP 是面向连接的运输层协议,一个应用进程在向另一个进程发送数据之前,两个进程必须先建立 TCP 连接,发送某些预备报文段,建立确保数据传输的参数。作为 TCP 连接建立的一部分,连接双方都将初始化与 TCP 连接相关的许多状态变量。这种连接不是电路交换网络中的端到端电路这种物理连接,而是一种逻辑连接,TCP 报文要先传送到 IP 层加上 IP 首部后,再传到数据链路层,加上链路层的首部和尾部后才离开主机发送到物理层。

TCP 连接提供全双工服务,允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都有各自的发送缓存和接收缓存,用来临时存放通信数据。在发送时,应用程序把数据传送给 TCP 缓存后就可以做自己的事,而 TCP 在合适的时候会把数据发送出去。在接收时,TCP 把收到的数据放入缓存,上层应用程序会在合适的时候读取缓存数据。

TCP 连接是点对点的,每一条 TCP 连接只能有两个端点,即只能是单个发送方和单个接收方之间的连接。

TCP 提供可靠的交付服务,通过 TCP 连接传送的数据无差错、不丢失、不重复,按序到达。

TCP 是面向字节流的,流是指流入到进程或从进程中流出的字节序列。面向字节流的含义是:虽然应用程序和 TCP 的交互是一次一个数据块,但是 TCP 把应用程序交下来的数据仅仅看成一连串无结构的字节流。TCP 不保证接收方应用程序收到的数据块和发送方应用程序发出的数据块具有对应大小的关系,但是接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。接收方应用程序必须有能力识别收到的字节流,并把它还原成有意义的应用层数据。


TCP 报文结构

TCP 传送的数据单元是报文段,一个 TCP 报文段分为首部和数据两部分。首部的前 20 个字节是固定的,后面有 4n 字节是根据需要而增加的选项,因此 TCP 首部的最小长度是 20 字节.TCP 首部的重要字段如下:

**源端口和目的端口:**各占 2 字节,分别写入源端口号和目的端口号,TCP 的分用功能是通过端口实现的,分用就是指运输层从 IP 层收到发送给各应用进程的数据后,把数据交付给正确的套接字的工作。

**序号:**占 4 字节。TCP 是面向字节流的,在一个 TCP 连接中传送的字节流中的每一个字节都按顺序编号,首部中的序号字段值指的是本报文段所发送的数据的第一个字节的序号。序号使用 mod232 计算,每增加到 231-1 后下一个序号就又回到 0。

**确认号:**占 4 字节,是期望收到对方下一个报文段的第一个数据字节的序号。如果确认号为 N,代表到序号 N-1 为止的所有数据已经正确收到。序号有 32 位长,一般情况下可以保证当序号重复使用时,旧序号的数据早已通过网络到达终点了。

**数据偏移:**占 4 字节,实际是TCP 报文段的首部长度,指出了 TCP 报文段的数据起始处到 TCP 报文段的起始处的距离。由于首部中有长度不确定的选项字段,因此数据偏移字段是必要的。

**标志字段:**占 6 位。URG 是紧急标志,URG=1 时告诉系统此报文段中有紧急数据,应尽快传送,而不按照原来的排队顺序传送,和紧急指针配合使用,紧急指针指出了本报文段中紧急数据的字节数和位置。ACK 是确认标志,ACK=1 时表示成功接收了报文段。SYN 是同步标志,在建立连接时用来同步序号,当 SYN=1 而 ACK=0 时,表示一个连接请求报文段,响应时 SYN 和 ACK 都为 1,因此 SYN=1 表示一个连接请求或连接响应报文。FIN 是终止标志,用来释放一个连接,当 FIN=1 时表示报文段发送方的数据已发送完毕,并要求释放连接。PSH 是推送标志,PSH=1 时接收方就不等待整个缓存填满了再向上交付而是尽快交付数据。RST 是复位标志,当 RST=1 时表示 TCP 连接出现了严重错误,必须释放连接再重新建立连接。

**接收窗口:**占 2 字节,指的是发送本报文段一方的接收窗口,告诉对方从本报文首部的确认号算起允许对方发送的数据量。窗口值是用来限制发送方的发送窗口的,因为接收方的数据缓存空间是有限的。

**检验和:**占 2 字节,检验范围包括首部和数据两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。


可靠传输协议 ARQ

自动重传请求 ARQ 包括了停止等待协议、回退 N 步协议和选择重传协议,后两种结合了窗口机制,属于连续 ARQ 协议。

停止等待协议

停止等待就是每发送完一个分组就停止发送,等待对方的确认,在收到确认之后再发送下一个分组。停止等待协议包括了三种情况:

1. 无差错情况

A 发送分组 M1,发送完后就暂停并等待 B 的确认。B 收到了 M1 之后就向 A 发送确认,当 A 收到确认之后就再发送下一个分组 M2

2. 出现差错的情况

当 B 收到 M1 时检测出了差错就丢弃了 M1,其他什么也不做,也可能是 M1 在传输过程中丢失了,B 什么都不知道。在这两种情况下 B 都不会发送任何确认信息,解决方法是:A 只要超过一段时间没有收到确认就认为刚才发送的分组丢失了,因而重传前面发过的分组,这就叫超时重传。要实现超时重传,就要在每发送完一个分组时设置一个超时计时器,如果在超时计时器到期之间收到了对方的确认就进行撤销。

有三点需要注意:① A 在发送完一个分组后必须暂时保留已发送分组的副本在超时重传时使用,只有在收到确认后才清除副本。② 分组和确认分组都必须进行编号,这样才能明确是哪一个发送出去的分组进行了确认。③ 超时计时器设置的时间应当比数据在分组传输的平均往返时间稍长一些,如果设置过短会产生不必要的重传,如果设置过长会降低通信效率。

3. 确认丢失和确认迟到

B 发送的对 M1 的确认丢失了,A 在设定的超时重传时间内没有收到确认,并不知道是自己发送的问题还是 B 的问题&

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值