(面试学习通用)计算机网络常见笔试面试题目及答案汇总(软件测试、各种开发语言基础)

OSI参考模型与TCP/IP参考模型

OSI(Open System Interconnection)参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。

TCP/IP参考模型是计算机网络的祖父ARPANET和其后继的因特网使用的参考模型。

二者的对应关系、每层功能和协议族如下表所示:
(面试学习通用)计算机网络常见笔试面试题目及答案汇总(软件测试、各种开发语言基础)
说明:有时为了方便,也可以把TCP/IP模型中最下面两层成为网络接口层。

OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。

五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。

每一层的协议如下:

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

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

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

传输层:TCP、UDP

会话层:

表示层:

应用层:FTP、DNS、Telnet、SMTP、HTTP

每一层的作用如下:

物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)

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

网络层:负责数据包从源到宿的传递和网际互连(包PackeT)

传输层:提供端到端的可靠报文传递和错误恢复(段Segment)

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

表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)

应用层:允许访问OSI环境的手段(应用协议数据单元APDU)

TCP的三次握手与四次挥手过程

传输控制协议TCP简介:
面向连接的、可靠的、基于字节流的传输层通信协议
将应用层的数据流分割成报文段并发送给目标节点的TCP层
数据包有序号,对方收到则发送ACK确认,未收到则重传
使用校验和来检验数据在传输过程中是否有误

TCP报文头:
TCP Flags:

URG:紧急指针标志

ACK:确认序号标志

PSH:push标志

RST:重置连接标志

SYN:同步序号,用户建立连接过程

FIN:finish标志,用于释放连接

三次握手
“握手”是为了建立连接
第一次握手:建立连接时,客户端发送SYN包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;

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

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

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

TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?

答:建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。

(1)TCP的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。

(2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。

(3)采用两次握手不行,原因就是上面说的失效的连接请求的特殊情况。

四次挥手

与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可以接受数据。

第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。

第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。

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

第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传输,Client进入FIN_WAIT_1;

第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1,Server进入CLOSE_WAIT状态;

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

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

为什么会有TIME_WAIT状态?
确保有足够的时间让对方收到ACK包。如果服务端没有收到,到达等待时间会请求客户端重新发送,如果客户端在2MSL中没有收到消息,证明客户端已经收到了断开连接的确认信息,这时可以关闭客户端了。

为什么需要四次挥手才能断开连接?
因为全双工,发送方和接收方都需要FIN和ACK报文才会断开连接。

TCP和UDP的区别?

答:TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。

TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。

TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。

TCP对应的协议和UDP对应的协议

TCP对应的协议:

(1) FTP:定义了文件传输协议,使用21端口。

(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。

(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。

(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。

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

UDP对应的协议:

(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。

(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

(3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

DNS域名系统,简单描述其工作原理。

答:当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。

1) 客户机向其本地域名服务器发出DNS请求报文

2) 本地域名服务器收到请求后,查询本地缓存,假设没有该记录,则以DNS客户的身份向根域名服务器发出解析请求

3) 根域名服务器收到请求后,判断该域名所属域,将对应的*域名服务器的IP地址返回给本地域名服务器

4) 本地域名服务器向*域名服务器发出解析请求报文

5) *域名服务器收到请求后,将所对应的授权域名服务器的IP地址返回给本地域名服务器

6) 本地域名服务器向授权域名服务器发起解析请求报文

7) 授权域名服务器收到请求后,将查询结果返回给本地域名服务器

8) 本地域名服务器将查询结果保存到本地缓存,同时返回给客户机

了解交换机、路由器、网关的概念,并知道各自的用途

答:1)交换机

在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换机才广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部地址表 中。

交换机工作于OSI参考模型的第二层,即数据链路层。交换机内部的CPU会在每个端口成功连接时,通过ARP协议学习它的MAC地址,保存成一张 ARP表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此,交换机可用于划分数据链路层广播,即冲突域;但它不能划分网络层广播,即广播域。

2)路由器

路由器(Router)是一种计算机网络设备,提供了路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。路由工作在OSI模型的第三层——即网络层,例如网际协议。

路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。 路由器与交换器的差别,路由器是属于OSI第三层的产品,交换器是OSI第二层的产品(这里特指二层交换机)。

3)网关

网关(Gateway),网关是连接两个网络的设备,

在传统TCP/IP术语中,网络设备只分成两种,一种为网关(gateway),另一种为主机(host)。网关能在网络间转递数据包,但主机不能转送数据包。在主机中,数据包需经过TCP/IP四层协议处理,但是在网关只需要到达网际层,决定路径之后就可以转送。

在现代网络术语中,网关(gateway)与路由器(router)的定义不同。网关(gateway)能在不同协议间移动数据,而路由器(router)是在不同网络间移动数据.

对于以太网中的网关只能转发三层以上数据包,这一点和路由是一样的。而不同的是网关中并没有路由表,他只能按照预先设定的不同网段来进行转发。网关最重要的一点就是端口映射,子网内用户在外网看来只是外网的IP地址对应着不同的端口,这样看来就会保护子网内的用户。

HTTP详解

协议简介
HTTP(HyperText Transfer Protocol)超文本传输协议,是TCP/IP协议集中的一个应用层协议,用于定义浏览器和Web服务器之间交换数据的过程以及数据本身的格式。HTTP 1.0的会话方式:
(面试学习通用)计算机网络常见笔试面试题目及答案汇总(软件测试、各种开发语言基础)
这个过程是短暂的,始于浏览器发出请求,终于服务器返回结果,与浏览器窗口打开时间无关。

浏览器访问一个包含许多图像的网页的时候,需要多次请求和响应。HTTP 1.0的时候,每次请求和响应都会建立一个单独的连接,每次连接只传输一个文件,上一次和下一次请求完全分离,导致需要建立多次连接,建立连接是一个费时的过程,严重影响了客户机和服务器的性能。

HTTP 1.1支持持久连接,在一个TCP连接上可以传送多个请求和响应,减少建立连接和关闭连接的消耗和延时。类似于Redis的Pipeline功能,建立一次连接,执行多条命令。如下图所示:
(面试学习通用)计算机网络常见笔试面试题目及答案汇总(软件测试、各种开发语言基础)
HTTP 1.1增加请求头来实现实现持续连接,例如Host、Connection

Connection:keep-alive:客户端通知服务器返回本次请求结果后保持连接

Connection:close:客户端通知服务器返回本次请求结果后关闭连接

HTTP主要特点
(面试学习通用)计算机网络常见笔试面试题目及答案汇总(软件测试、各种开发语言基础)
HTTP请求方式
GET方式:当使用GET方式提交表单内容的时候,浏览器将各个表单自断元素及其数据按照URL参数的格式附加在请求行中的资源路径后面。使用GET方式传送的数据量是有限制的,一般限制在1KB一下。表单提交的时候默认是GET方式。

POST方式:当使用POST方式提交表单的时候,浏览器将各表单元素及其数据作为HTTP消息的实体内容发送给Web服务器,而不是作为URL地址的参数传递。因此,使用POST方式传送的数据量要比使用GET方式传送的数据量大得多。使用POST方式传递数据时,必须设置Content-Type消息头和Content-length消息头。

请求/响应的步骤
1、客户端连接web服务器
2、发送HTTP请求
3、服务器接受请求并返回HTTP响应
4、释放连接TCP连接
5、客户端浏览器解析HTML内容

在浏览器地址栏键入url,按下回车之后经历的流程

DNS解析浏览器缓存-系统缓存-路由器缓存IPS
TCP连接(三次握手)
发送HTTP请求
服务器处理请求返回HTTP报文
浏览器解析渲染页面
连接结束

在浏览器中输入www.baidu.com后执行的全部过程
(1) 浏览器获取输入的域名www.baidu.com
(2) 浏览器向DNS请求解析www.baidu.com的IP地址
(3) 域名系统DNS解析出百度服务器的IP地址
(4) 浏览器与该服务器建立TCP连接(默认端口号80)
(5) 浏览器发出HTTP请求,请求百度首页
(6) 服务器通过HTTP响应把首页文件发送给浏览器
(7) TCP连接释放
(8) 浏览器将首页文件进行解析,并将Web页显示给用户。

Cookie和Session的区别

Cookie是由服务器发送给客户端的特殊信息,以文本的形式存放在客户端;客户端再次请求的时候,会把Cookie回发;服务器收到后,会解析Cookie生成与客户端相对应的内容

Session是服务器端的机制,在服务器上保存信息;解析客户端请求并操作session id,按需保存状态信息;

Session的实现方式:使用Cookie来实现;使用url会写来实现

Cookie数据存放在客户的浏览器上,Session数据放在服务器上

Session相对于Cookie更安全

若考虑减轻服务器负担,应当使用Cookie

HTTP状态码分类和常用状态码
HTTP状态码分类:
(面试学习通用)计算机网络常见笔试面试题目及答案汇总(软件测试、各种开发语言基础)
常见HTTP响应状态码:

请求收到,继续处理:
            100      客户端必须继续发出请求
            101      客户端要求服务器根据请求转换HTTP协议版本
操作成功收到,分析,接受:
            200      交易成功
            201      提示知道新文件的URL
            202      接受和处理、但处理未完成
            203      返回信息不确定或不完整
            204      请求收到,但返回信息为空
            205      服务器完成了请求,用户代理必须复位当前已经浏览过的文件
            206      服务器已经完成了部分用户的GET请求
重定向:
            300      请求的资源可在多处得到
            301      永久重定向,在Location响应首部的值仍为当前URL(隐式重定向)
            302      临时重定向,在Location响应首部的值仍为新的URL(显示重定向)
            303      建议客户端访问其他URL或访问方式
            304      Not Modified 请求的资源没有改变 可以继续使用缓存
            305      请求的资源必须从服务器指定的地址得到
            306      前一版本HTTP中使用的代码,现行版本中不再使用
            307      声明请求的资源临时性删除
客户端错误:
            400      错误请求,如语法错误
            401      未授权
               HTTP 401.1    未授权,登录失败
               HTTP 401.2    未授权,服务器配置问题导致登录失败
               HTTP 401.3    ACL  禁止访问资源
               HTTP 401.4    未授权  授权被筛选器拒绝
               HTTP 401.5    未授权  ISAPI或CGI授权失败
            402      保留有效ChargeTo头响应
            403      禁止访问
               HTTP 403.1    禁止访问  禁止可执行访问
               HTTP 403.2    禁止访问  禁止读访问
               HTTP 403.3    禁止访问  禁止写访问
               HTTP 403.4    禁止访问  要求SSL
               HTTP 403.5    禁止访问  要求SSL 128
               HTTP 403.6    禁止访问  IP地址被拒绝
               HTTP 403.7    禁止访问  要求客户端证书
               HTTP 403.8    禁止访问  禁止站点访问
               HTTP 403.9    禁止访问  连接的用户过多
               HTTP 403.10   禁止访问  配置无效
               HTTP 403.11   禁止访问  密码更改
               HTTP 403.12   禁止访问  映射器拒绝访问
               HTTP 403.13   禁止访问  客户端证书已被吊销
               HTTP 403.15   禁止访问  客户端访问许可过多
               HTTP 403.16   禁止访问  客户端证书不可信或者无效
               HTTP 403.17   禁止访问  客户端证书已经到期或者尚未生效
            404       没有发现文件、查询或URL
            405       用户在Request-Line字段定义的方法不允许
            406       根据用户发送的Accept拖,请求资源不可访问
            407       类似401,用户必须首先在代理服务器上得到授权
            408       客户端没有在用户指定的饿时间内完成请求
            409       对当前资源状态,请求不能完成
            410       服务器上不再有此资源且无进一步的参考地址
            411       服务器拒绝用户定义的Content-Length属性请求   
            412       一个或多个请求头字段在当前请求中错误
            413       请求的资源大于服务器允许的大小
            414       请求的资源URL长于服务器允许的长度
            415       请求资源不支持请求项目格式
            416       请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,       请求也不包含If-Range请求头字段
            417       服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求长
服务器端错误:
            500 - 内部服务器错误
            HTTP 500.100 - 内部服务器错误
            HTTP 500-11 服务器关闭
            HTTP 500-12 应用程序重新启动
            HTTP 500-13 - 服务器太忙
            HTTP 500-14 - 应用程序无效
            HTTP 500-15 - 不允许请求
            501 - 未实现
            502 - 网关错误
            503 - 服务不可用
            504 - 网关超时

HTTP信息头
(面试学习通用)计算机网络常见笔试面试题目及答案汇总(软件测试、各种开发语言基础)

HTTP和HTTPS的区别

HTTPS简介
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
(面试学习通用)计算机网络常见笔试面试题目及答案汇总(软件测试、各种开发语言基础)
(面试学习通用)计算机网络常见笔试面试题目及答案汇总(软件测试、各种开发语言基础)
HTTPS数据传输流程
(面试学习通用)计算机网络常见笔试面试题目及答案汇总(软件测试、各种开发语言基础)
HTTP和HTTPS的区别
(面试学习通用)计算机网络常见笔试面试题目及答案汇总(软件测试、各种开发语言基础)

ARP是地址解析协议,简单语言解释一下工作原理。

答:
1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。

2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。

3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。

4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

广播发送ARP请求,单播发送ARP响应

各种协议的介绍

ICMP协议: 因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

FTP协议: 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

HTTP协议: 超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。

NAT协议:网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,

DHCP协议:动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段,使用UDP协议工作。具体用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作*管理的手段。

描述RARP协议

RARP是逆地址解析协议,作用是完成硬件地址MAC到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。
工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。
因为需要广播请求报文,因此RARP只能用于具有广播能力的网络

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

三次握手:

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

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

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

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

四次挥手

与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可以接受数据。

第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。

第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。

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

数据报服务和虚电路服务的区别

数据报服务和虚电路服务属于物理层的分组交换

第一,数据报服务在传输前不需要与目的地址建立连接,虚电路必须要

第二,数据报每个分组都有完整的目的地址,虚电路服务仅在建立连接阶段使用,之后使用虚电路号

第三,数据报的每个分组独立进行路由选择和转发,虚电路服务属于同一条虚电路的分组按同一路由转换

第四、数据报服务不保证有序到达,虚电路服务保证有序到达

如何实现可靠传输?

1) 检验和

2) 定时器

3) 序号

4) 确认

流量控制与拥塞控制

流量控制:A与B连接建立后,B根据自己接收缓存的大小确定窗口值大小,然后告知A,A发送的数据不大于该窗口值,往往是点对点之间的通信量控制

拥塞控制是防止过多的数据注入网络中,根据整个网络的负载进行调整。