【计算机网络】常见面试题总结

目录

一:计算机网络有几种指标

二:计算机网络的分层结构

物理层的作用

数据链路层的作用

网络层的作用

运输层的作用

应用层的作用

三:TCP和UDP的区别

四:TCP 协议如何保证可靠传输?

五:在浏览器中输入URL 地址到显示主页的过程

六:GET与POST有哪些区别?

七:HTTP和HTTPS的区别

八:说说HTTP的优缺点(特点)?

九:HTTP是不保存状态的协议,如何保存⽤户状态?

十:Cookie的作⽤是什么?和Session有什么区别?

十一:HTTP 1.0 和 HTTP 1.1 和 HTTP 1.1 主要区别是什么?

十二:说一下TCP的三次握手、四次挥手?

十三:为什么握手只需要三次,挥手需要四次?

十四:为什么两次握手不安全?

十五:介绍一下HTTPS协议


一:计算机网络有几种指标

速率:连接在计算机网络上的主机在数字信道上每秒传输的数据位数(01的个数)

带宽:单位时间内从网络的某一个点到另外一个所通过的“最高数据率”,

吞吐量:单位时间内通过某个网络(信道,接口)的数据量

时延:数据从网络的一端到另一端所需的时间

二:计算机网络的分层结构

物理层的作用

传递电压信号,实现相邻计算机节点之间比特流的透明传送。

数据链路层的作用

将网络层的数据可靠的传输到相邻节点的网络层(封装成帧,透明传输,查错控制)

网络层的作用

网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送;因为在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。在 TCP/IP 体系结构中,由于网络层使用 IP 协议,因此也叫 IP 数据报。

运输层的作用

负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。

运输层主要使用以下两种协议:

  • 传输控制协议 TCP(Transmisson Control Protocol)–提供面向连接的,可靠的数据传输服务。
  • 用户数据协议 UDP(User Datagram Protocol)–提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)。

应用层的作用

通过应用进程间的交互来完成特定网络应用

在互联网中应用层协议很多,如域名系统DNS,支持万维网应用的 HTTP协议,支持电子邮件的 SMTP协议等等。我们把应用层交互的数据单元称为报文。

三:TCP和UDP的区别

  • UDP是无连接的, 在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后,不需要给出任何确认。
  • UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
  • UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。
  • TCP是面向连接的运输层协议。在传送数据之前必须先建立连接,数据传送结束后要释放连接,每一条TCP连接只能有两个端点,每一条TCP只能是点对点的。
  • TCP 提供可靠交付的服务,通过TCP连接传送的数据,无差错、不丢失、不重复,并且按时到达。
  • TCP提供全双工通信。TCP允许通信双方得到应用进程在任何时候都能发送数据。
  • TCP是面向字节流的。含义是:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。TCP中的“流”是指流入到进程或者从进程流出的字节序列。

四:TCP 协议如何保证可靠传输?

主要有校验和、序列号、超时重传、流量控制及拥塞避免等几种方法:

  1. 应用数据被分割成 TCP 认为最适合发送的数据块。TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
  2. 校验和:TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。
  3. TCP 的接收端会丢弃重复的数据。
  4. 流量控制: TCP 连接的每一方都有固定大小的缓冲空间,TCP 的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。
  5. 拥塞控制: 当网络拥塞时,减少数据的发送。
  6. ARQ 协议: 也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。
  7. 超时重传: 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

五:在浏览器中输入URL 地址到显示主页的过程

  1. DNS 解析:浏览器查询 DNS,获取域名对应的 IP 地址
  2. TCP 连接:浏览器获得域名对应的 IP 地址以后,浏览器向服务器请求建立链接,发起三次握手
  3. 发送 HTTP 请求:TCP 连接建立起来后,浏览器向服务器发送 HTTP 请求
  4. 服务器处理请求并返回 HTTP 报文:服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器
  5. 浏览器解析渲染页面
  6. 连接结束

追问:整个过程会使用哪些协议?

  • 首先浏览器查找域名的IP地址的过程会使用DNS协议
  • 与服务器建立TCP连接使用到了TCP协议
  • 建立TCP协议时,需要发送数据,发送数据在网络层使用IP协议
  • IP数据包在路由器之间,路由选择使用OSPF协议
  • 路由器在与服务器通信时,需要将ip地址转换为MAC地址,需要使用ARP协议
  • 在TCP建立完成后,使用HTTP协议访问网页

六:GET与POST有哪些区别?

  • GET是从服务器上获取数据,POST是向服务器发送数据
  • POST相对于GET安全(HTTP是明文协议,采用HTTPS才安全)
  • GET请求参数在URL中,POST请求参数在请求体
  • GET请求能被服务器缓存,POST不能被缓存
  • GET请求发送一个tcp包(请求头),POST请求发送两个tcp包(请求头和请求体)之所以会发两个数据包,则是出于以下考虑:如果服务器先收到“请求头”,则会对其进行校验,如果校验通过,则回复客户端“100 - Continue”,客户端再把”请求体“发给服务器。如果请求被拒了,服务器就回复个400之类的错误,这个交互就终止了。这样做的优点是可以避免浪费带宽传输请求体

七:HTTP和HTTPS的区别

有下面几个区别:

  • 开销:HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费
  • 资源消耗:HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议,需要消耗更多的CPU和内存资源
  • 端口不同:HTTP和 HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
  • 安全性:HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。而HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输

八:说说HTTP的优缺点(特点)?

优点:

  1. 简单:HTTP基本的报文格式就是header + body ,头部信息也是key-value简单文本的形式,易于理解,降低了学习和使用的门槛。
  2. 灵活和易于扩展:HTTP协议里的各类请求方法、URI/URL、状态码、头字段等每个组成要求都没有被固定死,都允许开发人员自定义和扩充。
  3. 应用广泛和跨平台:互联网发展至今,HTTP的应用范围非常的广泛,从台式机的浏览器到手机上的各种APP。

缺点:

  1. 通信使用明文(不加密),内容可能会被窃听
  2. 不验证通信方的身份,因此有可能遭遇伪装
  3. 无法证明报文的完整性,所以有可能已遭篡改

九:HTTP是不保存状态的协议,如何保存⽤户状态?

采用会话跟踪技术,Cookie和Session

十:Cookie的作⽤是什么?和Session有什么区别?

Cookie的作⽤

  • 完成一次会话内多次请求的数据共享

相同点

  • Cookie和Session都是完成一次会话内多次请求的数据共享
  • Cookie和Session都是由Servlet创建

不同点

  • Cookie存放在客户端,Session存放在服务器
  • Cookie不安全,Session安全
  • Cookie可以长期存储(关闭客户端默认失效),Session默认存储30Min
  • Cookie不占有服务器,Session占用服务器

十一:HTTP 1.0 和 HTTP 1.1 和 HTTP 1.1 主要区别是什么?

主要体现在下载资源的速度上(比如打开B站,需要200次HTTP请求才能加载页面成功,速度也就是完成200次HTTP请求的时间)

HTTP 1.0

  • HTTP是基于TCP/IP协议的,创建一个TCP连接是需要经过三次握手的,有一定的开销,如果每次通讯都要重新建立连接的话,对性能有影响。

HTTP 1.1

  • 默认开启长连接:HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
  • 节约带宽:HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器;如果返回401,客户端就可以不用发送请求body了节约了带宽。
  • 支持Host头处理: 随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机,并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都支持host域,且请求消息中如果没有host域会报告一个错误(400 Bad Request)。
  • 错误通知的增加:在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

HTTP 2

  • 采用二进制格式:传输更快
  • 多路复用: HTTP2.0使用了多路复用的技术,做到同一个TCP连接并发处理多个请求
  • 头部数据压缩:HTTP2.0使用HPACK算法对header的数据进行压缩,在网络上传输更快
  • 服务器推送:服务端推送是一种在客户端请求之前发送数据的机制,HTTP2.0引入了server push,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络,这种方式非常合适加载HTML等静态资源

十二:说一下TCP的三次握手、四次挥手?

三次握手

  1. 客户端发送连接请求SYN,之后进入等待服务器端响应状态
  2. 服务器端监听到连接请求后,放入半连接等待队列中,同时向客户端发送确认报文端ACK和连接请求SYN
  3. 客户端收到服务器端发送的确认报文端ACK和连接请求SYN,向服务器发送确认报文端ACK,进入连接状态
  4. 开始发送数据

四次挥手

  1.  客户端向服务器端发送结束报文端FIN,客户端进入FIN_WAIT1状态
  2. 服务器端接收到结束报文端FIN后,会向客户端返回确认报文端ACK,客户端收到确认报文端ACK会进入FIN_WAIT2状态,开始等待服务器发送结束报文端;此时服务器端还没发送完的数据客户端还是要接收
  3. 服务器端数据发送完成后,向客户端发送结束报文端FIN,之后服务器端进入LAST_ACK状态,等待最后一个确认报文端ACK
  4. 客户端接收到结束报文端FIN后,向服务器端发送确认报文端ACK,
  5. 服务器端断开连接,客户端断开连接

十三:为什么握手只需要三次,挥手需要四次?

TCP三次握手时,服务器端将连接请求SYN和确认报文端ACK打包放在一个TCP包发送,减少了一次包的发送

TCP四次挥手时,客户端发送结束报文端FIN后并不意味完全断开连接,只表示客户端不再发送数据,而服务器端可能还要发送数据,必须等接收方将数据发送完成之后才能向主动关闭方发送结束报文端FIN,既确认报文端ACK和结束报文端FIN不能打包同时发送

十四:为什么两次握手不安全?

TCP需要确认双方都具有数据收发的能力,即客户端和服务器端都得到确认报文端ACK响应才能认为对方具有数据接收发能力

补充:三次握手只有第三次握手能携带数据,利用TCP第一第二次握手可以攻击服务器,TCP攻击俗称SYN 洪水,是一种利用TCP三次握手协议来攻击计算机的,这种攻击方式是发送大量伪造IP的半连接去攻击对方系统,如果你的系统没有安装防火墙,很可能会造成系统瘫痪,无法打开,解决方法是安装防火墙,能有效阻止SYN FLOOD攻击。

十五:介绍一下HTTPS协议

  • 为了解决HTTP中明文传输,不安全,不验证通信方的身份等安全问题出现的
  • HTTPS协议:HTTP协议+SSL/TLS协议(网络层的安全协议)
  • HTTPS是一种非对称公钥加密机制(加密和解密使用不同的密钥,公钥和私钥是成对出现的)

  1. 客户端发起HTTPS请求
  2. 服务器端通过数字证书,产生公钥和私钥
  3. 返回数字证书(包含公钥)给客户端
  4. 利用数字证书在客户端验证,验证成功产生会话密钥
  5. 利用公钥加密会话密钥,发送给服务器端
  6. 服务器端利用私钥解密会话密钥
  7. 利用会话密钥进行通信
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值