重学计算机网络

一、应用层

1. http1.0 与 http2.0  的区别

有两点

1是持久化, 这个持久化并不是磁盘的持久化,而是tcp连接建立的持久化。

  • HTTP/1.0默认情况下使用短连接,即每个请求/响应都会关闭连接。这意味着每次请求都需要重新建立连接,增加了网络延迟。
  • HTTP/1.1引入了持久连接的概念,通过Connection: keep-alive头部,允许客户端和服务器在单个连接上发送多个请求和响应,减少了连接建立的开销,提高了性能。

2是通道化,原来只能一个在一个连接上发送一个请求。HTTP/1.0中,客户端必须等待服务器响应一个请求后才能发送下一个请求,导致了请求和响应之间的串行处理

其实通道化和持久化并不矛盾,原本是 一次连接就发送一次请求 然后关闭连接,肯定不会出现一个连接发送多个请求的情况。

2. 邮件协议

pop3和smtp检索邮件的区别:

pop3一旦被客户代理下载,就会被邮件服务器删除,而且换一个客户代理后,不会共享。

imap与之相反。

imap协议,会在 邮件服务器上 提供一个主副本,供 客户代理下载。

客户代理的一些操作会同步到邮件服务器。

3. DNS

三个问题:

同一平面容易重名,怎样区分名字?

怎样完成从域名到ip的转化?

当一些域名被删除或过期或新增时,怎样进行处理?

上层的区域知道下面的区域怎么走

缓存记录,本地直接能查,不用去权威服务器

删除记录,保持一致性,别人可能对他的域名进行维护。

突然回忆其,先根据邮件服务器的别名查找正规名,然后根据正规名进行查找。

每个区域都会有 权威服务器,这也避免了单点故障。

二、传输层

传输层,承上启下。向上要提供可靠的服务,但它的下层,网络层却提供的是不可靠的服务。

1. 复用和解复用

复用是指将多个信号或数据流合并到一个信号或通道中的过程。解复用则是从多路复用的信号中分离出原始信号的过程。

像 封包和解包

像 通过socket往下发,通过socket去接收

2. 可靠数据传输的原理

2.1  ack和Nack(类比于rabbitmq)早期

stop and wait 协议:停止等待协议    非流水线协议

流水线协议  回退n帧和选择性重发

回退n帧和选择性重发的区别在于 滑动窗口的大小。

重发机制也不同,回退n帧的发送者在超时后,会将滑动窗口的所有分组发送,这是合乎逻辑的一件事,因为发送者本来就是把滑动窗口里的所有分组发送过去,但是对于一些比较复杂,容易出错的场景,消耗非常大,性能差。 但对于选择性重发,只对出错的进行重发。

2.2

发送窗口是发送缓冲区的一个子集

当send_window=1   rev_window=1   为停止等待协议,发送方一次只能发送一个数据帧,并等待接收方的ACK。这种方式简单但效率低下,尤其是当链路延迟较高时。没有把链路利用起来,就像一条很长的高速公路

当send_window>1   rev_window=1   为回退n帧协议,发送方可以在一个窗口内发送多个数据帧,但如果任何一个数据帧丢失或损坏,发送方需要重传从丢失数据帧开始的所有后续数据帧,这可能会浪费资源

当send_window>1   rev_window>1  为选择重传协议

发送窗口 有前沿和后沿,

当发送消息为确认时,前沿向前移动,但不能超过滑动窗口的大小

当发送消息为已经确认后,后沿向前移动,但不能超过前沿的位置。

go back n是顺序的接收

3. 为什么回退n帧协议,计时器结束后,需要重发发送方所在窗口的所有分组?这跟选择性重发有什么区别吗?

对于回退n帧,异常时(延迟到达,丢失),发送方发送所在窗口的所有分组是正常的逻辑,因为发送的窗口是根据 接收方的ack去移动的。即使没有出错,发送方依然是按照这个逻辑去发送。

对于选择性重发,由于接收方可以接收多个,每个分组(packat)都会有对应的ack,因此当发生丢失的情况时, 它会超时重发

Go-back-n只有一个定时器

回退N帧协议(Go-Back-N,简称GBN)和选择性重传协议(Selective Repeat,简称SR)都是用于实现可靠数据传输的协议,但它们在处理丢包和重传方面的机制有所不同。下面我们分别解释这两种协议的特点和区别。

回退N帧协议(Go-Back-N)

主要特点
  1. 发送窗口:发送方可以发送多个数据分组,但接收方只能确认已按序接收到的最高序号的数据分组。
  2. 接收窗口:接收方只能接收按序到达的数据分组,对于乱序到达的数据分组,接收方会暂时保存,并发送一个重复的ACK,表示仍期望下一个按序的数据分组。
  3. 重传机制:如果发送方在超时时间内没有收到某个数据分组的ACK,它会重传该数据分组以及之后的所有数据分组。这是因为接收方发送的ACK只表示已接收到的最高序号的数据分组。
工作流程
  1. 发送数据:发送方在一个窗口内发送多个数据分组。
  2. 接收数据:接收方按序接收数据分组,并发送ACK确认已接收到的最高序号的数据分组。
  3. 重传数据:如果发送方在超时时间内没有收到某个数据分组的ACK,它会重传该数据分组以及之后的所有数据分组。
示例

假设发送窗口大小为4,发送方发送了序号为0、1、2、3的数据分组。接收方按序接收到序号为0的数据分组,并发送ACK=1。如果序号为1的数据分组丢失,发送方在超时时间内没有收到ACK=1,它会重传序号为1、2、3的数据分组。

选择性重传协议(Selective Repeat)

主要特点
  1. 发送窗口:发送方可以发送多个数据分组,接收方可以接收乱序到达的数据分组,并发送选择性的ACK,表示哪些数据分组已经接收到。
  2. 接收窗口:接收方可以接收乱序到达的数据分组,并暂时保存它们,直到丢失的数据分组到达后再按序递交。
  3. 重传机制:如果发送方在超时时间内没有收到某个数据分组的ACK,它只会重传丢失的那个数据分组,而不是之后的所有数据分组。
工作流程
  1. 发送数据:发送方在一个窗口内发送多个数据分组。
  2. 接收数据:接收方可以接收乱序到达的数据分组,并发送选择性的ACK,表示已接收到哪些数据分组。
  3. 重传数据:如果发送方在超时时间内没有收到某个数据分组的ACK,它只会重传丢失的那个数据分组。
示例

假设发送窗口大小为4,发送方发送了序号为0、1、2、3的数据分组。接收方按序接收到序号为0的数据分组,并发送ACK=1。如果序号为1的数据分组丢失,接收方接收到序号为2、3的数据分组,并发送选择性的ACK,表示已接收到序号为0、2、3的数据分组。发送方在超时时间内没有收到ACK=1,它只会重传序号为1的数据分组。

回退N帧协议与选择性重传协议的区别

  1. 重传机制

    • 回退N帧协议:如果某个数据分组丢失,发送方会重传该数据分组以及之后的所有数据分组。
    • 选择性重传协议:如果某个数据分组丢失,发送方只会重传丢失的那个数据分组。
  2. 接收机制

    • 回退N帧协议:接收方只能接收按序到达的数据分组,对于乱序到达的数据分组,接收方会暂时保存,并发送重复的ACK。
    • 选择性重传协议:接收方可以接收乱序到达的数据分组,并发送选择性的ACK,表示已接收到哪些数据分组。
  3. 效率

    • 回退N帧协议:重传多个数据分组可能导致不必要的网络负载,特别是在网络状况较差的情况下。
    • 选择性重传协议:只重传丢失的数据分组,减少了不必要的重传,提高了网络利用率。

总结

  • 回退N帧协议:适用于网络状况较好的场景,可以简化实现,但可能导致不必要的重传。
  • 选择性重传协议:适用于网络状况较差的场景,可以提高效率,但实现相对复杂。

4. TCP可靠性传输

发现,TCP并不是理想中的直接使用  选择性重传 协议

Mac层

1. 可以讲一下A-B-C数据包的传输吗?

在数据包从源主机A传输到目标主机C的过程中,获取目标主机C的MAC地址通常发生在数据链路层。但是,直接从A到C获取MAC地址通常是在它们位于同一个局域网(LAN)内时才会发生。当A和C不在同一网络,即它们之间有路由器B隔离时,A实际上先需要获取的是其默认网关(通常是路由器B)的MAC地址,而不是C的MAC地址。

下面是如何获取MAC地址的详细步骤:

当A和C在同一局域网内:

  1. A构建一个带有C的IP地址的ARP请求。
  2. ARP请求广播到整个局域网,询问:“谁拥有这个IP地址?”
  3. C收到广播,识别出请求中的IP地址是自己的,然后回应一个ARP响应,其中包含了C的MAC地址。
  4. A接收并缓存C的MAC地址,以便将来使用。

当A和C不在同一局域网内:

  1. A构建一个带有其默认网关(通常是路由器B)的IP地址的ARP请求。
  2. ARP请求广播到A所在的局域网,询问:“谁拥有这个IP地址?”
  3. B(作为默认网关)收到广播,识别出请求中的IP地址是自己的,然后回应一个ARP响应,其中包含了B的MAC地址。
  4. A接收并缓存B的MAC地址,封装数据包,并将其发送给B。
  5. 数据包经过路由器B和可能的其他网络设备,最终到达C所在网络的路由器。
  6. 最终的路由器执行与A相同的过程,通过ARP获取C的MAC地址,并将数据包发送给C。

请注意,MAC地址获取过程对于用户来说通常是透明的,由操作系统和网络设备自动完成。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值