计算机网络常见面试题整理-保研/工作

计算机网络常见面试题整理

    • 1、OSI七层模型与TCP/IP四层模型
    • 2、三次握手
    • 3、四次挥手
    • 4、http与https的区别
    • 5、对称加密与非对称加密
    • 6、TCP vs. UDP
    • 7、输入网址到获取到网页的全过程
    • 8、常见状态码及原因
    • 9、GET vs. POST
    • 10、DNS寻址过程
    • 11、拥塞控制和流量控制
    • 12、其他

1、OSI七层模型与TCP/IP四层模型

计算机网络常见面试题整理-保研/工作_第1张图片

  • 应用层协议:
    TFTP:(UDP)简单文件传输协议,是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口69。
    HTTP:(TCP)超文本传输协议,是一个简单的请求-响应协议,端口80。
    SNMP:(UDP)简单网络管理协议,是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议。
    FTP:(TCP)文件传输协议,是用于在网络上进行文件传输的一套标准协议,端口20,21。
    SMTP:(TCP)简单邮件传输协议,是一种提供可靠且有效的电子邮件传输的协议,端口25。
    DNS:(区域传输时使用TCP,其他情况使用UDP)域名系统(服务)协议,是一种分布式网络目录服务,主要用于域名与 IP 地址的相互转换,以及控制因特网的电子邮件的发送,端口53。
    POP3:邮局协议,支持使用客户端远程管理在服务器上的电子邮件。
  • 传输层协议:
    TCP:传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。
    UDP:用户数据报协议,为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。
  • 网络层协议:
    IP:Internet Protocol,网际互连协议,设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据报传输服务。
    DHCP:动态主机配置协议,是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
    ICMP:控制报文协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
    ARP:地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。在TCP/IP概念层模型中属于网络层协议,在OSI七层模型中属于链路层协议。注意该协议只用于同一网段的路由。
    RIP:(属于IGP内部网关协议)路由信息协议,基于距离向量算法,使用UDP协议,周期性发送。
    OSPF:(属于IGP内部网关协议)开放最短路径优先协议,基于链路状态算法,使用迪杰斯特拉算法进行路由计算,使用IP协议。
    BGP:(属于EGP外部网关协议)边界网关协议,是运行于 TCP 上的一种自治系统的路由协议。

2、三次握手

三次握手的过程就是TCP建立连接的过程,需要客户端和服务端总共发送3个包以确认连接的建立。
计算机网络常见面试题整理-保研/工作_第2张图片

  • 第一次握手:客户端将SYN标志位置为1,随机产生一个值Seq=J,并将该数据包发送给服务器,客户端进入SYN_SENT状态,等待服务器的确认。
  • 第二次握手:服务器接收到数据报后,由包中的SYN标志位置1可知该客户端请求建立连接,则服务器包装一个标志位SYN和ACK都置为1,ack=J+1,并随机产生一个值seq=K的数据包,并将该数据包发送给客户端以确认连接请求,服务器进入了SYN_RCVD状态。
  • 第三次握手:客户端接收到确认后,检查ack是否为J+1,ACK是否为1,如果正确,则包装一个标志位ACK置1,ack=K+1的数据包发送给服务器,服务器再检查ACK和ack,如果正确配对,则连接成功。客户机和服务器就进入了RSTABLISHED状态,完成三次握手,可以开始传输数据。

3、四次挥手

四次挥手即终止TCP连接,需要客户端和服务器共发送4个数据包来确认连接的断开。
计算机网络常见面试题整理-保研/工作_第3张图片
由于TCP连接是全双工的,因此两个方向都要进行单独的关闭。

  • 第一次挥手:客户端发送一个FIN标志位为1的数据包,用来关闭客户端到服务器端的连接,发送后,客户端进入FIN_WAIT_1状态。
  • 第二次挥手:服务器收到FIN后,发送一个ACK给客户端,确认序号为接收的序号加一,服务器进入CLOSE_WAIT状态。
  • 第三次挥手:服务器发送一个FIN标志位为1 的数据包,用来关闭服务器端到客户端的连接,发送后服务器进入LAST_ACK状态。
  • 第四次挥手:客户端收到FIN后,进入TIME_WAIT状态,紧接着发送一个ACK给服务器端,确认序号为接收的序号加一,服务器收到后,进入CLOSED状态,完成四次挥手。

4、http与https的区别

  • http是超文本传输协议,信息是明文传输;https是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的两种连接方式,用的端口也不一样,前者是80,后者是443。
  • http协议无需费用;https协议需要申请证书,一般免费证书较少,需要一定费用。
  • http连接简单,无状态;https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,比http更安全也更复杂。

5、对称加密与非对称加密

对称加密就是加密和解密使用同一个秘钥的方式,这种方式的问题在于如何将秘钥安全地发送给对方;而非对称加密是使用一对非对称秘钥,即公钥和私钥。
发送方使用接收方的公钥进行加密处理,接收方接受到加密信息后,用自己的私钥进行解密。虽然安全性保证了,但是比较慢,所以常用对称加密来传送消息,用非对称加密来发送秘钥。

6、TCP vs. UDP

共同点:都属于传输层协议
不同点:

  • TCP是面向连接的,UDP是无连接的;
  • TCP是可靠的,UDP是不可靠的;
  • TCP是基于字符流的,UDP是面向报文的;
  • TCP仅支持点对点通信,UDP支持一对一、多对一、一对多、多对多的通信模式;
  • TCP有拥塞控制机制,UDP没有拥塞控制,适合流媒体通信;
  • TCP首部大小为20字节,UDP首部大小为8个字节。

7、输入网址到获取到网页的全过程

应用层:
(1)浏览器查询DNS,获取域名对应的IP地址,具体过程为:先在本地DNS服务器上查找,如果没有缓存信息,则采用迭代查询由本地域名服务器向根域名服务器、顶级域名服务器和权威域名服务器分别查询,找到域名对应的IP地址;
(2)获得IP地址后,浏览器向服务器请求建立连接,发起三次握手;TCP连接建立后,浏览器向服务器发送HTTP请求;
传输层:
服务器接收到这个请求,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端;
网络层:
主要是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,通过查找路由表决定通过那个路径到达服务器,其中用到路由选择协议。
链路层:
包通过链路层发送到路由器,由ARP协议查找给定IP地址的MAC地址,得到回应后即可进行IP数据包的传输。
最终:
浏览器解析并渲染视图,若遇到js文件、css文件和图片等静态资源的引用,就重复上述步骤,向服务器请求这些资源;渲染结束后,呈现完整界面。

8、常见状态码及原因

  • 1xx 【请求处理中】服务器收到请求,需要请求者继续执行操作
  • 2xx 【请求成功】请求已成功被服务器接收、理解、并接受。
  • 3xx 【重定向】客户端需要采取进一步的操作以完成请求
  • 4xx 【客户端请求错误】客户端错误,请求包含语法错误或无法完成请求
  • 5xx 【服务器错误】服务器在处理请求的过程中发生了错误

9、GET vs. POST

  • 从功能上讲,GET一般用来从服务器上获取资源,POST一般用来更新服务器上的资源;
  • 就安全性而言,POST的安全性要比GET的安全性高,因为GET请求提交的数据将明文出现在URL上,而且POST请求参数则被包装到请求体中,相对更安全。
  • 从请求的大小看,GET请求的长度受限于浏览器或服务器对URL长度的限制,允许发送的数据量比较小,而POST请求则是没有大小限制的。

10、DNS寻址过程

(1) 客户机发出查询请求,在本地计算机缓存查找,若没有找到,就会将请求发送给dns服务器。
(2) 先发送给本地dns服务器,本地的就会在自己的区域里面查找,若找到,根据此记录进行解析,若没有找到,就会在本地的缓存里面查找。
(3) 本地服务器没有找到客户机查询的信息,就会将此请求发送到根域名dns服务器。
(4) 根域名服务器解析客户机请求的根域部分,它把包含的下一级的dns服务器的地址返回到客户机的dns服务器地址。
(5) 客户机的dns服务器根据返回的信息接着访问下一级的dns服务器。
(6) 这样递归的方法一级一级接近查询的目标,最后在有目标域名的服务器上面得到相应的IP信息。
(7) 客户机的本地的dns服务器会将查询结果返回给我们的客户机。
(8) 客户机根据得到的ip信息访问目标主机,完成解析过程。

11、拥塞控制和流量控制

所谓的流量控制就是让发送方的发送速率不要太快,让接收方来得及接收。使用滑动窗口协议可以实现对发送方的流量控制,滑动窗口协议包括GO-BACK-N(出错全重传)和SELECTIVE-REPEAT(选择性重传)
而拥塞控制是指到达通信子网的一部分分组数量过多,是部分网络来不及处理,导致整个网络性能下降,会导致丢包和长时延等现象发生。手段有缓启动、拥塞避免(加法增、乘性减)、快重传、快恢复等。

12、其他

(1) 为什么TCP更可靠?
三次握手,超时重传,滑动窗口,拥塞控制。

(2) 那些场景使用TCP?
当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。

(3) ARP协议和ARP攻击
ARP协议基本没有对网络的安全性做任何思考。ARP应答中的IP地址和MAC地址中的信息是可以伪造的,并不一定是自己的真实IP地址和MAC地址,由此,ARP欺骗就产生了。

(4) ICMP协议
它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

参考:计算机网络面试问题

你可能感兴趣的:(学习笔记,网络,http,网络协议,tcpip)