3.1 计算机网络 Flashcards

1
Q

计算机网络体系结构有哪几层?

A
OSI有七层,TCP/IP有四层,折中的有五层,分别是
应用层
运输层
网络层
数据链路层
物理层
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

(面试常客)

TCP三次握手流程是什么?为什么需要三次握手?

A

流程:

  1. Sender –> SYN –> Recipient
  2. Sender ACK –> Recipient

三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主 要的目的就是双方确认自己与对方的发送与接收是正常的。

第一次握手:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常
第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送
正常,自己接收正常
第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发 送、接收正常,对方发送、接收正常

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

(面试常客)
四次握手流程是什么?
什么情况下需要用四次握手?
为什么要四次握手?

A

流程:

  1. Sender –> FIN –> Recipient
  2. Sender ACK –> Recipient

在断开一个TCP链接时需要四次握手。

任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没 有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。

举个例子:A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了”,B回答“我知道了”,但是 B 可 能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话,于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”,A 回答“知道了”,这样通话才算结束。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

3.1.2 TCP/UDP协议是哪一层的协议?

有什么区别?

A

两者是运输层的协议。

UDP 在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 确是一种最有效的工作方式(一般用于即时通信),比 如: QQ 语音、 QQ 视频 、直播等等

TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。 TCP 不提 供广播或多播服务。由于 TCP 要提供可靠的,面向连接的传输服务(TCP的可靠体现在TCP在传递数据 之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传 完后,还会断开连接用来节约系统资源),这一难以避免增加了许多开销,如确认,流量控制,计时器 以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。TCP 一般用于文 件传输、发送和接收邮件、远程登录等场景。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

3.1.3 TCP 协议如何保证可靠传输

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

什么是ARQ协议?

包含哪两种子协议?

A

自动重传请求(Automatic Repeat-reQuest,ARQ)是OSI模型中数据链路层和传输层的错误纠正协议之 一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发 送后一段时间之内没有收到确认帧,它通常会重新发送。

ARQ包括停止等待ARQ协议和连续ARQ协议。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

什么是 停止等待ARQ协议?原理是什么?

A

停止等待ARQ协议
停止等待协议是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方 确认(回复ACK)。如果过了一段时间(超时时间后),还是没有收到 ACK 确认,说明没有发送 成功,需要重新发送,直到收到确认后再发下一个分组; 在停止等待协议中,若接收方收到重复分组,就丢弃该分组,但同时还要发送确认;
优点: 简单
缺点: 信道利用率低,等待时间⻓

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

什么是 连续ARQ协议?原理是什么?

A

连续ARQ协议
连续 ARQ 协议可提高信道利用率。发送方维持一个发送窗口,凡位于发送窗口内的分组可以连续发送 出去,而不需要等待对方确认。接收方一般采用累计确认,对按序到达的最后一个分组发送确认,表明 到这个分组为止的所有分组都已经正确收到了。
优点: 信道利用率高,容易实现,即使确认丢失,也不必重传。
缺点: 不能向发送方反映出接收方已经正确收到的所有分组的信息。 比如:发送方发送了 5条 消 息,中间第三条丢失(3号),这时接收方只能对前两个发送确认。发送方无法知道后三个分组的下 落,而只好把后三个全部重传一次。这也叫 Go-Back-N(回退 N),表示需要退回来重传已经发送过的 N 个消息。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

TCP如何进行拥塞控制?

A

为了进行拥塞控制,TCP 发送方要维持一个 拥塞窗口(cwnd) 的状态变量。拥塞控制窗口的大小取决于 网络的拥塞程度,并且动态变化。发送方让自己的发送窗口取为拥塞窗口和接收方的接受窗口中􏰀小的 一个。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

TCP拥塞控制有哪几种算法?

A

慢开始: 慢开始算法的思路是当主机开始发送数据时,如果立即把大量数据字节注入到网络, 那么可能会引起网络阻塞,因为现在还不知道网络的符合情况。经验表明,􏰀好的方法是先探测 一下,即由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值。cwnd初始值为 1,每经过一个传播轮次,cwnd加倍。

拥塞避免: 拥塞避免算法的思路是让拥塞窗口cwnd缓慢增大,即每经过一个往返时间RTT就把发 送放的cwnd加1.
- 当cwnd大于设定阈值时,拥塞控制算法从 慢开始 改为 拥塞避免

快重传与快恢复: 在 TCP/IP 中,快速重传和恢复(fast retransmit and recovery,FRR)是 一种拥塞控制算法,它能快速恢复丢失的数据包。没有 FRR,如果数据包丢失了,TCP 将会使用 定时器来要求传输暂停。在暂停的这段时间内,没有新的或复制的数据包被发送。有了 FRR,如 果接收机接收到一个不按顺序的数据段,它会立即给发送机发送一个重复确认。如果发送机接收 到三个重复确认,它会假定确认件指出的数据段丢失了,并立即重传这些丢失的数据段。有了 FRR,就不会因为重传时要求的暂停被耽误。 当有单独的数据包丢失时,快速重传和恢复 (FRR)能最有效地工作。当有多个数据信息包在某一段很短的时间内丢失时,它则不能很有效 地工作。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

(面试常客)

3.1.7 在浏览器中输入url地址 -» 显示主⻚的过程

A

总体来说分为以下几个过程:

  1. DNS解析
  2. TCP连接
  3. 发送HTTP请求
  4. 服务器处理请求并返回HTTP报文 5. 浏览器解析渲染⻚面
  5. 连接结束

ref:https://segmentfault.com/a/1190000006879700

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

HTTP状态码有哪些?各自代表什么含义

A
1XX: informational (请求正在处理)
2XX: Success
3XX: Redirection
4XX: Client Error
5XX: Server Error
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

3.1.12 Cookie的作用是什么?和Session有什么区别?

A

Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。

Cookie 一般用来保存用户信息 比如1我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的 时候⻚面可以自动帮你登录的一些基本信息给填了;2一般的网站都会有保持登录也就是说下次你再访 问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);3登录一次网站后访问网站其他⻚面不需要重新登录。

Session 的主要作用就是通过服务端记 录用户的状态。 典型的场景是购物⻋,当你要添加商品到购物⻋的时候,系统不知道是哪个用户操作 的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户 并且跟踪这个用户了。

Cookie 存储在客户端中,而Session存储在服务器上,相对来说 Session 安全性更高。如果要在 Cookie 中存储一些敏感信息,不要直接写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的时候再去服务器端解密。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

3.1.13 HTTP 1.0和HTTP 1.1的主要区别是什么?

A
  1. ⻓连接 : 在HTTP/1.0中,默认使用的是短连接,也就是说每次请求都要重新建立一次连接。 HTTP 是基于TCP/IP协议的,每一次建立或者断开连接都需要三次握手四次挥手的开销,如果每次 请求都要这样的话,开销会比􏰀大。因此最好能维持一个⻓连接,可以用个⻓连接来发多个请 求。HTTP 1.1起,默认使用⻓连接 ,默认开启Connection: keep-alive。 HTTP/1.1的持续连接 有非流水线方式和流水线方式 。流水线方式是客户在收到HTTP的响应报文之前就能接着发送新 的请求报文。与之相对应的非流水线方式是客户在收到前一个响应后才能发送下一个请求。
  2. 错误状态响应码 :在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源 与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
  3. 缓存处理 :在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标 准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
  4. 带宽优化及网络连接的使用 :HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个 对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求 头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这 样就方便了开发者自由的选择以便于充分利用带宽和连接。
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

3.1.12 URI和URL的区别是什么?

A

URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。 URL(Uniform Resource Location) 是统一资源定位符,可以提供该资源的路径。它是一种具体 的 URI,即 URL 可以用来标识一个资源,而且还指明了如何 locate 这个资源。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

3.1.13 HTTP 和 HTTPS 的区别?

A
  1. 端口 :HTTP的URL由“http://”起始且默认使用端口80,而HTTPS的URL由“https://”起始且默认 使用端口443。
  2. 安全性和资源消耗: HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都 无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS 运行在TCP之上。所有 传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称 加密。所以说,HTTP 安全性没有 HTTPS高,但是 HTTPS 比HTTP耗费更多服务器资源。