好文档 - 专业文书写作范文服务资料分享网站

计算机网络面试题 - 图文

天下 分享 时间: 加入收藏 我要投稿 点赞

源主机收到这个 ARP 响应数据包后,将得到的目的主机的 IP 地址和 MAC 地址添加到自己的ARP 列表中,并利用此信息开始数据的传输。

如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。

注意,在 OSI 模型中 ARP 协议属于链路层;而在 TCP/IP 模型中,ARP 协议属于网络层。

如何划分子网、超网?

?? 如何划分子网?:可选了解。

划分子网(变长子网掩码 VLSM):划分子网的方法是从网络的主机号借用若干位作为子网号 subnet-id ,与此同时主机号也减少相应位数(总位数 32 位不变)。

由此两级 IP 地址可变为三级 IP 地址:IP地址 ::= {<网络号>,<子网号>,<主机号>} ,划分子网只是把 IP 地址的主机号这部分进行再划分,并不改变 IP 地址原来的网络号。?? 如何划分超网?:可选了解。

构造超网(无分类编址 CIDR):CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,把 32 位的 IP地址划分为两个部分。

例如:128.14.35.7/20 是某个 CIDR 地址块中的一个地址,其前 20 位是网络前缀(用下划线表示的部分),后面的 12 位为主机号?? 子网掩码的作用?

子网掩码只有一个作用,就是将某个 IP 地址划分成网络地址和主机地址两部分。用于子网掩码的位数,决定于可能的子网数目和每个子网的主机数目。

什么是单播、组播(多播)、广播、任播?

:这个问题,一般面试应该不问,主要是为了大家扩充下知识面吧。

单播(unicast): 是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用单播传输,例如一切基于TCP的协议。

组播(multicast): 也叫多播, 多点广播或群播。 指把信息同时传递给一组目的地址。它使用策略是最高效的,因为消息在每条网络链路上只需传递一次,而且只有在链路分叉的时候,消息才会被复制。

广播(broadcast):是指封包在计算机网络中传输时,目的地址为网络中所有设备的一种传输方式。实际上,这里所说的“所有设备”也是限定在一个范围之中,称为“广播域”。

任播(anycast):是一种网络寻址和路由的策略,使得资料可以根据路由拓朴来决定送到“最近”或“最好”的目的地。

感兴趣的胖友,可以详细看 《单播,组播(多播),广播以及任播》 文章。

区别 IPv4 和 IPv6 ?

我们大多数人使用的是第二代互联网 IPv4 技术,它的最大问题是网络地址资源有限,从理论上讲能编址1600 万个网络、链接 40 亿台主机。而根据相关数据,全球 IPv4 的 IP 地址已经即将用完。

而 IPv6 是作为 IETF 设计的用于替代现行版本 IP 协议(IPv4)的下一代 IP 协议,其 IPV6 地址长度为 12 8位,地址空间增大了 2^98 次方倍,几乎可以说是用之不竭的。所以随着 IPv4 不足,支持 IPv6 的网络势必会增长。

ICMP

:这个小节,可以快速看。因为,面试不一定问的很多。

ICMP 协议的主要功能?

用于在 IP 主机、路由器之间传递控制消息。如下图所示:

简述一下 ping 的原理?

一般在网络不通的时候,大家会用 ping 测一下网络是否通畅。

ping 是基于 ICMP 协议工作的。ICMP 全称 Internet Control Message Protocol ,就是互联网控制报文协议。这里的关键词是“控制”,那具体是怎么控制的呢? 网络包在异常负责的网络环境中传输时,会遇到各种问题,当遇到问题时,要传出消息,报告情况,这样才能调整传输策略。

ICMP 报文是封装在 IP 包里面的。因为传输指令的时候,肯定需要源地址和目标地址。如下图:

什么是 Traceroute ?

Traceroute 是构建在 ICMP 协议之上的应用。

Traceroute ,是用来侦测主机到目的主机之间所经路由情况的重要工具,也是最便利的工具。

前面说到,尽管 ping 工具也可以进行侦测,但是,因为 IP 头的限制,ping 不能完全的记录下所经过的路由器。所以Traceroute 正好就填补了这个缺憾。Traceroute 的原理是非常非常的有意思。

它受到目的主机的 IP 后,首先给目的主机发送一个 TTL=1(还记得 TTL 是什么吗?)的 UDP(后面就知道 UDP是什么了)数据包,而经过的第一个路由器收到这个数据包以后,就自动把 TTL 减1,而 TTL 变为 0 以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的 ICMP 数据报给主机。主机收到这个数据报以后再发一个 TTL=2 的 UDP 数据报给目的主机,然后刺激第二个路由器给主机发ICMP 数据 报。如此往复直到到达目的主机。

这样,traceroute 就拿到了所有的路由器 IP 。从而避开了 IP 头只能记录有限路由 IP 的问题。有人要问,我怎么知道 UDP 到没到达目的主机呢?

这就涉及一个技巧的问题,TCP 和 UDP 协议有一个端口号定义,而普通的网络程序只监控少数的几个号码较小的端口,比如说 80、23 等等。而 traceroute 发送的是端口号 >30000(真变态) 的 UDP 包,所以到达目的主机的时候,目的主机只能发送一个端口不可达的 ICMP 数据报给主机。主机接到这个报告以后就知道,目标主机到了。

?? 很多情况下,在我们 ping 不通目标地址时,会尝试使用 traceroute 命令,看看是否在中间哪个 IP 无法访问。

TCP

TCP 是什么?

TCP(Transmission Control Protocol),传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。主要特点如下:

TCP 是面向连接的。

就好像打电话一样,通话前需要先拨号建立连接,通话结束后要挂机释放连接每一条 TCP 连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)。

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

TCP 提供全双工通信。TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双方通信的数据。面向字节流。

TCP 中的“流”(Stream),指的是流入进程或从进程流出的字节序列。

“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。

TCP 对应的应用层协议?

FTP :定义了文件传输协议,使用 21 端口。常说某某计算机开了 FTP 服务便是启动了文件传输服务。下载文件,上传主页,都要用到 FTP 服务。

Telnet :它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于 DOS 模式下的通信服务。如以前的 BBS 是纯字符界面的,支持 BBS 的服务器将 23 端口打开,对外提供服务。邮箱

SMTP :定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置-中常看到有这么 SMTP 端口设置这个栏,服务器开放的是 25 号端口。

POP3 :它是和 SMTP 对应,POP3 用于接收邮件。通常情况下,POP3 协议所用的是 110 端口。也是说,只要你有相应的使用 POP3 协议的程序(例如 Foxmail 或 Outlook),就可以不以 Web 方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是 163 邮箱就没有必要先进入网易网站,再进入自己的邮箱来收信)。

HTTP :从 Web 服务器传输超文本到本地浏览器的传送协议。

TCP 头部是怎么样的?

《通俗大白话来理解 TCP 协议的三次握手和四次分手》 的 「TCP头部」 小节。《TCP 协议的学习 (二)TCP 头部信息》

【重要】什么是 TCP 三次握手?

三次握手,简单来说,就是:TCP 三次握手的漫画发送方:我要和你建立链接?接收方:你真的要和我建立链接么?发送方:我真的要和你建立链接,成功。详细来说,步骤如下:

第一次握手:Client 将标志位 SYN=1 ,随机产生一个值 seq=J ,并将该数据包发送给 Server 。此时,Client 进入SYN_SENT 状态,等待 Server 确认。

第二次握手:Server 收到数据包后由标志位 SYN=1 知道Client请求建立连接,Server 将标志位 SYN 和

ACK 都置为 1 ,ack=J+1,随机产生一个值 seq=K ,并将该数据包发送给 Client 以确认连接请求,

Server 进入 SYN_RCVD 状态。此时,Server 进入 SYC_RCVD 状态。

第三次握手:Client 收到确认后,检查ack是否为J+1,ACK是否为 1 。

如果正确,则将标志位 ACK 置为 1 ,ack=K+1 ,并将该数据包发送给 Server 。此时,Client 进入ESTABLISHED 状态。

Server 检查 ack 是否为 K+1 ,ACK 是否为 1 ,如果正确则连接建立成功。此时 Server 进入ESTABLISHED 状态,完成三次握手,随后 Client 与 Server 之间可以开始传输数据了。

仔细看来,Client 会发起两次数据包,分别是 SYNC 和 ACK ;Server 会发起一次数据包,包含 SYNC 和

ACK。也就是说,三次握手的过程中,Client 和 Server 互相做了一次 SYNC 和 ACK 。

?? 为什么 TCP 连接需要三次握手,两次不可以么,为什么?

为了防止已失效的连接请求报文突然又传送到了服务端,因而产生错误。

客户端发出的连接请求报文并未丢失,而是在某个网络节点长时间滞留了,以致延误到链接释放以后的某个时间才到达 Server 。

若不采用“三次握手”,那么只要 Server 发出确认数据包,新的连接就建立了。由于 Client 此时并未发出建立连接的请求,所以其不会理睬 Server 的确认,也不与 Server 通信;而这时 Server 一直在等待Client 的请求,这样 Server 就白白浪费了一定的资源。

若采用“三次握手”,在这种情况下,由于 Server 端没有收到来自客户端的确认,则就会知道 Client 并没有要求建立请求,就不会建立连接。

在 《通俗大白话来理解 TCP 协议的三次握手和四次挥手》 中,搜 “为什么要三次握手” 关键字,也有非常好的解答。

这就很明白了,防止了服务器端的一直等待而浪费资源。?? 客户端不断进行请求链接会怎样?

服务器端准备为每个请求创建一个链接,并向其发送确认报文,然后等待客户端进行确认后创建。如果此时客户端一直不确认,会造成 SYN 攻击,即:

SYN 攻击,英文为 SYN Flood ,是一种典型的 DoS/DDoS 攻击。1、客户端向服务端发送请求连接数据包。2、服务端向客户端发送确认数据包。

3、客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认。这是这一步!!!

?? 如何检测 SYN 攻击?检测 SYN 攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源 IP 地址是随机的,基本上可以断定这是一次 SYN 攻击。在 Linux/Unix 上可以使用系统自带的 netstat 命令来检测 SYN 攻击。

?? 怎么解决 SYN 攻击呢?答案是只能预防,没有彻底根治的办法,除非不使用 TCP 。方式如下:

1、限制同时打开 SYN 半链接的数目:是不是很像我们常用的“限流”。2、缩短 SYN 半链接的 Timeout 时间:是不是很像我们常用的“超时”。3、关闭不必要的服务。

:酱紫,这个服务就不会被 SYN 攻击连接。

计算机网络面试题 - 图文

源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。注意,在OSI模型中ARP协议属于链路层;而在TCP/IP模型中,ARP协议属于网络层。如何划分子网、超网???如
推荐度:
点击下载文档文档为doc格式
2nzhp37rho0daes3y3831emx02sb8q00vpq
领取福利

微信扫码领取福利

微信扫码分享