计算机网络常见面试题

  • OSI、TCP/IP和五层协议的体系结构

OSI分层:开放系统互联,共7层,物理层、数据链路层、网络层、运输层、会话层、表示层、应用层

TCP/IP分层:传输控制协议/因特网互联协议,共4层,网络接口层、网际层、运输层、应用层

五层协议:共5曾,物理层、数据链路层、网络层、运输层、应用层

  • 每一层的协议

物理层:RJ45、CLOCK、IEEE802.3(中继器、集线器、网卡)

数据链路层:PPP、FR、HDLC、VLAN、MAC(网桥、交换机)

网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP(路由器)

运输层:TCP、UDP、SPX

会话层:NFS、SQL、NETBIOS、RPC

表示层:JPEG、MPEG、ASII

应用层:FTP、DNS、telnet、SMTP、HTTP、WWW、NFS

  • 每一层的作用

物理层:通过传输媒体传输比特,确定机械和电器规范(比特bit)

数据链路层:将比特组装成帧和点到点的传递(帧frame)

网络层:负责子网间数据包的路由选择,实现拥塞控制、网际互联(包packet)

运输层:提供端到端的可靠的报文传递,差错控制和流量控制(段segment)

会话层:建立、管理和终止进程之间的会话(会话协议数据单元SPDU)

表示层:对上层数据进行转换保证一个主机的应用层信息可被另一个主机的应用程序理解,数据转换包括对数据进行翻译、加密和压缩(表示协议数据单元PPDU)

应用层:为操作系统或网络应用程序提供访问网络服务的接口(应用协议数据单元APDU)

  • IP地址的分类

A类地址:以0开头,第一个字节范围:0~127(1.0.0.0~127.255.255.255),默认网络掩码:255.0.0.0,通常分配给拥有大量主机的网络,如一些大公司和因特网主干网络

(注意:数字0和127不作为A类地址,数字0表示该地址是本地宿主机,数字127保留给内部回送函数)

B类地址:以10开头,第一个字节范围:128~191(128.0.0.0~191.255.255.255),默认网络掩码:255.255.0.0,通常分配给节点比较多的网络,如区域网

C类地址:以110开头,第一个字节范围:192~223(192.0.0.0~223.255.255.255),默认网络掩码:255.255.255.0,通常分配给节点比较少的网络,如校园网

D类地址:以1110开头,第一个字节范围:224~239(224.0.0.0~239.255.255.255),用于组播

E类地址:以11110开头,第一个字节范围:240~255(240.0.0.0~255.255.255.255),保留未用

  • ARP协议的工作原理

ARP是地址解析协议。广播发送ARP请求,单播发送ARP响应。

首先,每个主机都会在自己的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查询失败。

  • 路由设备与相关层

物理层:集线器、中继器

数据链路层:交换机

网络层:路由器

网络层以上:网关

  • 常见路由选择协议及其区别

RIP协议:底层是贝尔曼福特算法,它选择路由的度量标准是跳数,最大跳数是15跳,若大于15,会丢弃数据包;

OSPF协议:底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的度量标准是贷款。

  • TCP和UDP的区别

TCP是面向连接的,可靠的字节流服务,传输单位是TCP报文段,注重数据安全性;

UDP是面向无连接的,不可靠的数据流服务,传输单位是用户数据报,数据传输块,但安全性一般。

  • 如何TCP的可靠性?

通过顺序编号和确认(ACK)实现。

  • TCP三次握手和四次挥手的全过程

三次握手:

第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISH状态,完成三次握手。

握手过程中传送的包不包含数据,三次握手完,客户端与服务器才正式开始传送数据。理想状态下,TCP链接一旦建立,在通信双方中的任何一方主动关闭连接前,TCP链接都将被一直保持下去。

四次挥手:

第一次挥手:主动关闭方发送一个FIN,用以关闭主动方到被动方关闭方的数据传送,即主动关闭方告诉被动关闭方不再发送数据,但主动关闭方还可接收数据;

第二次挥手:被动关闭方收到FIN后,发送一个ACK给主动关闭方,确认序号为收到序号+1;

第三次挥手:被动关闭方发送一个FIN,用以关闭被动关闭方到主动关闭方的数据传送,即被动关闭方告诉主动关闭方不再发送数据;

第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,完成四次挥手。


  • 在浏览器中输入www.baidu.com后执行的全过程

首先,浏览器发起DNS查询请求,过程如下:依次查找浏览器缓存(浏览器缓存DNS记录)、系统缓存(若在浏览器中没有找到,浏览器做系统调用)、路由器缓存(之前的查询请求发向路由器,一般有自己的DNS缓存)、ISP DNS缓存(ISP缓存DNS服务器,一般都能找到相应的缓存记录)、根域名服务器;

其次,域名服务器向浏览器返回查询结果,完成域名到IP地址的转换;

再次,浏览器向web服务器发起TCP连接请求,通过TCP三次握手建立连接后,将HTTP请求数据发送至web服务器;

通常一个HTTP请求格式如下:

GET http://www.cricode.com/ HTTP/1.1
Host: www.cricode.com
Connection: keep-alive
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8

然后,web服务器通常通过监听80端口(默认端口号),获取客户端的HTTP请求,通过HTTP解码,把接收到的网络数据中解析出请求url信息以及其他诸如Accepot-Encoding、Accept-Language等信息;web服务器根据HTTP请求头的信息,得到响应数据并返回给浏览器。

HTTP/1.1 200 OK
Date: Fri, 24 Oct 2014 13:55:18 GMT
Server: Apache
X-Powered-By: PHP/5.4.32
Keep-Alive: timeout=5, max=10000
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
a0f6
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=10,IE=9,IE=8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
<title>快课网— 程序员的自我修养!</title>
<body class="home blog">
。。。。。。。
。。。。。。。
</body>
</html>

最后,浏览器解析网页内容,由于网页可能有重定向,或嵌入图片、AJAX、其他子网页等,以上几步可能反复执行才能将最终页面显示。

从另一个方面讲解数据包在各层的传输:

应用层:要发送的数据内容,形成应用层的报文数据;

运输层:报文数据加上传输头的包头,包括端口号、TCP或UDP的各种控制信息,形成segment;

网络层:加上网络层的包头,包括源及目的IP地址,形成packet;

数据链路层:加上MAC地址即数据链路层的控制信息,完成相邻节点间的数据传输,建立连接控制传输速度,形成frame;

物理层:将数据以bit为单位从主机传输到下一目的地。

  • ARP协议的工作原理

1 每个主机在自己的ARP高速缓存区建立一个ARP列表,以表示IP地址和MAC地址的对应关系;

2 当源主机欲向目的主机发送数据包时,首先检查自己ARP中是否存在该目的IP地址对应的MAC地址;

若有,直接将数据包发送至该MAC地址;若无,向本地网段发起一个ARP请求的广播包,查询此目的主机的MAC地址;

(此ARP请求数据包包括源主机的IP地址、MAC地址及目的主机的IP地址)

3 该网络中所有主机收到该ARP请求,检查数据包中目的IP地址是否和自己的IP地址一致;

若不同,直接忽略该数据包;若相同,该主机将源主机的IP地址和MAC地址添加到自己ARP列表中,若ARP列表中已存在该IP的信息,则将其覆盖;

4 目的主机向源主机发送一个ARP响应数据包,告诉对方自己是它查找的MAC地址;

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

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

  • HTTP协议包括哪些请求?

GET: 请求读取由URL所标志的信息

POST: 给服务器添加信息(如注释)

PUT: 在给定的一个URL下存储一个文档

DELETE: 删除给定的URL所标志的资源

  • HTTP中,POST与GET的区别

GET是从服务器上获取数据,POST是向服务器传送数据;

GET是把参数数据队列加到提交表单的ACTION属性所指向的URL中,值和表单内各个字段一一对应,在URL中可看到;

GET传送数据小,不能大于2KB;POST传送的数据量较大,一般默认为不受限制;

根据HEEP规范,GET用于信息获取,并且是安全的、幂等的;(其中,安全指该操作用于获取信息而非修改信息;幂等指对同一个URL的多个请求应返回同样结果)

  • TCP/IP中,每一层对应的协议

网络层:IP协议、ICMP协议、ARP协议、RARP协议

运输层:UDP协议、TCP协议

应用层:FTP(文件传输协议)、TELNET(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议)、POP3(邮局协议)、HTTP协议

  • TCP和UDP分别对应协议

TCP对应的协议有:

FTP:文件传输协议,使用21熟知端口,用于下载文件、上传主页;

TELNET:远程登录协议;

SMTP:简单邮件传送协议,使用25熟知端口,用于发送邮件;

POP3:邮局协议,使用110熟知端口,用于接收邮件;

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

UDP对应的协议有:

DNS:域名解析协议,使用53熟知端口,用于将域名地址转换为IP地址;

SNMP:简单网络管理协议,使用161熟知端口,用来管理网络设备;

TFTP:简单文件传输协议,使用69熟知端口;

  • 特殊的IP地址

1 网络地址

IP地址由网络号(包括子网号)和主机号构成,网络地址的主机号为全0,网络地址代表整个网路;

2 广播地址

广播地址通常称为直接广播地址,是为区分首先广播地址;

广播地址与网络地址的主机号正好相反,广播地址中主机号全为1;当向某个网路的广播地址发送消息时,该网络内所有主机都能收到该广播消息;

3 组播地址

D类地址就是组播地址

注意:只有A, B, C类有网络号和主机号之分,D, E类地址没有划分网络号和主机号;

4 255.255.255.255

该IP地址指受限的广播地址;

受限广播地址与一般广播地址(直接广播地址)区别在于受限广播地址只能用于本地网络,路由器不会转发以受限广播地址为目的地址的分组;一般广播地址既可在本地广播,也可跨网段广播;

如主机192.168.1.1/30上的直接广播数据报后,另一个网段192.168.1.5/30也能收到该数据报;若发送受限广播数据报,则不能收到;

注意:一般广播地址(直接广播地址)能够通过某些路由器(不是所有),受限广播地址不能通过路由器;

5 0.0.0.0

常用于寻找自己的IP地址,如在我们RARP, BOOTP和DHCP协议中,若某个位置IP地址的无盘机想要知道自己的IP地址,它就以255.255.255.255为目的地址,向本地范围(具体而言是被各个路由器屏蔽的范围内)的服务器发送IP请求分组;

6 回环地址

127.0.0.0/8用于回环地址,回环地址表示本机地址,常用于对本机测试,用的最多的是127.0.0.1;

7 A, B, C类私有地址

私有地址也叫专用地址,不会在全球使用,只具有本地意义;

A类私有地址:10.0.0.0/8,范围:10.0.0.0~10.255.255.255

B类私有地址:172.16.0.0/12,范围:172.16.0.0~172.31.255.255

C类私有地址:192.168.0.0/16,范围:192.168.0.0~192.168.255.255

  • NAT协议、DHCP协议、DNS协议的作用

1 NAT协议

网络地址转换属接入广域网技术,是一种将私有(保留)地址转换为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中;

NAT解决IP地址不足问题,还有效避免来自网络外部的攻击,隐藏并保护网络内部的计算机;

2 DHCP协议

动态主机设置协议是一个局域网的网络协议,使用UDP协议,用于给内部网络或网络服务供应商自动分配IP地址,给用户或内部网络管理员作为对所有计算机作中央管理的手段;

3 DNS协议

域名系统是因特网意向核心服务,是将域名和IP地址相互映射的一个分布式数据库,更方便访问互联网,而不用记住能够被机器直接读取的IP数串;

  • 简单描述DNS工作原理

当DNS客户机需要在程序中使用名称时,它会自动查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息,指定的DNS域名、指定的查询类型、DNS域名的指定类别。

DNS基于UDP服务,熟知端口53,一般不直接为用户所用,而是为其他应用服务,如HTTP、SMTP等在其中需要完成主机名到IP地址的转换。

  • 网关的作用

通过网关访问外网。

  • ipconfig/ifconfig作用是什么?

显示当前TCP/IP配置信息。

  • 端口及对应的服务

FTP: 21

TELNET: 23

DOMAIN域名服务器:53

POP3: 110

POP2: 109

MySQL数据库服务: 3306

SNMP: 161

SSH: 22

SMTP: 25

HTTP: 80

NTP网络时间协议: 123

Shell/cmd: 514

SQL Server: 1433

  • 面向连接和非面向连接的服务的特点是什么?

面向连接的服务,通信双方在进行通信之前,要现在双方建立起一个完整的可彼此沟通的通道,在通信过程中,整个连接的情况一直可以被实时地监控和管理;

非面向连接的服务,不需要预先建立一个联络了两个通信节点的连接,需要通信时发送节点就可往网络上发送信息,让信息自主地在网络上去传,一般在传输的过程中不再加以监控;






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值