计算机网络

第一章

因特网

“网络的网络”

协议

Protocols define format, order of messages sent and received among network entities, and actions taken on message transmission, receipt

协议是为进行网络中的数据交换而建立的规则、标准或约定

组成要素:

  • 数据与控制信息的结构或格式。
  • 需要发出何种控制信息,完成何种动作以及作出何种响应。
  • 时间实现顺序的详细说明。

Routers and link-layer switches

它们两个都是拿来把数据包发送到它们的目的地去的。但是,数据链路层交换机是用在接入网内的,而路由器是经常被用在网络核心中的。

ISP

一个ISP就是一个提供互联网入口的组织。Internet service provider.

Circuit Switching & Packet Switching

电路交换

电路交换是一种实现电子通信网络的方法,在电路转换中两个网络节点可以在通信之前通过网络建立专用信道。这样的电路在工作时就好象节点两端之间连接着实际的电路。

资源被分割成许多份。如果资源片没有被使用,就是空闲的,并不会分享给其他有需求的。也就是说资源是配额的。

分组交换

分组交换是一种数字网络的通信方法。这个方法并不考虑数据的内容,类型,或者结构,只是简单地整合所有需要传输的数据,然后把它们变成大小适合的块,也就是所谓的数据包。

每个端到端的数据流都被划分成很多数据包了。所有用户共享网络资源,每个人都能用到完全的带宽,因而网络资源是按需分配的。

比较

分组交换的批评者称它是不适合实时通信服务的。

分组交换的支持者认为它提供了相比电路交换更好地带宽,而且它更简单,更加高效,实现起来更加简便。

为什么分组交换更加高效? 因为它按需分配资源,这也被称为统计复用.

FDM & TDM

这两个复用都是属于电路交换的。

Delay

d n o d a l = d p r o c e s s + d q u e u e + d t r a n s + d p r o p a g a t i o n d_\mathrm{nodal} = d_\mathrm{process}+d_\mathrm{queue}+d_\mathrm{trans}+d_\mathrm{propagation} dnodal=dprocess+dqueue+dtrans+dpropagation

吞吐率(计算题)

单位bps。实际上就是两个端点之间的路径的最小传输速率。

第二章

HTTP

  1. 格式
  2. 持久/非持久HTTP协议
  3. Cookies
  4. 代理服务器,缓存和Conditional GET
  5. 统一资源定位器
  6. Stateless,不存储客户机状态

FTP

  1. state about user
  2. 2 TCP connections.
    1. Control
    2. Data

E-Mails

SMTP, POP3, IMAP

DNS

作用包括

  1. 主机地址到IP的映射
  2. 主机别名
  3. 负载均衡

TCP有哪些特性

  1. 可靠数据传输
  2. 拥塞控制
  3. 全双工
  4. 面向连接

TCP报文段格式

长度至少20字节。

头部包含

  • 源端口号,目的端口号
  • seq号
  • ack号
  • 首部长度,这是因为下面有Options&padding
  • ACK: Acknowledgment
  • SYN: Synchronize sequence numbers,用于初始化TCP连接
  • FIN: Terminate the connection
  • 接受端的窗口大小,是给流量控制用的
  • checksum: 整个报文段的校验和

服务的TCP/UDP表

服务传输层协议
E-MailTCP
远程控制TCP
WebTCP
FTPTCP
流式媒体UDP或TCP
网络电话UDP或TCP
路由协议基本上是UDP
域名到IP地址映射基本上是UDP

TCP可靠传输

可靠传输的要点
  1. checksum
  2. ACK
  3. SEQ
  4. 计时器
  5. 快速重传
  6. 流水线
TCP中SEQ的意义

TCP对message部分的每一个字节进行编号。对于每个TCP包而言,seq里面的值是message部分起始字节的编号。

byte stream “number” of first byte in segment’s data

“我给你的数据包的序列号”

TCP中ACK的意义

“我希望从你那里收到的下一个数据包的序列号”

注意,TCP的ACK跟回退N的ACK意义不同。

TCP的 A C K = n \mathrm{ACK} = n ACK=n代表的是编号 0 ≤ i < n 0 \le i < n 0i<n的数据包已经全部收到。

GBN的 A C K = n \mathrm{ACK} = n ACK=n代表的是编号 0 ≤ i ≤ n 0 \le i \le n 0in的数据包已经全部收到。

TCP, UDP和IP的checksum

IP的checksum用于校验IP头的数据是否正确,

TCP和UDP的checksum用于校验整个TCP/UDP报文段的数据是否正确。

快速重传的目的

减少因为定时器等待时间过长而导致的延迟

TCP流量控制

目的

通过调节发送端发包速率,防止或者是避免接收端缓存溢出。

怎样进行流量控制

核心是控制TCP发包的窗口大小 N N N

流量控制和拥塞控制的区别

流量控制只考虑接受端而不关注网络。可能发送端太快而接受端太慢,并不考虑中间网络的拥塞情况。(也就是假装网络部分很ok)

而拥塞控制就是不关注接受端,而关注网络本身,像是网络里面的路由器。

TCP拥塞控制

什么时候会产生拥塞
  • 时延巨大的时候
  • 资源的浪费
怎样进行拥塞控制

超时则直接把拥塞窗口大小削成1,阈值设成超时前发送窗口的一半。

碰到三重ACK就把阈值设成当前值的一半,然后把当前值设成阈值。

第三章

Internet的服务模型是best effort,也就是不能够保证一定会送到。

路由算法

路由算法有哪些呢

RIP, OSPF, BGP

路由器协议通常是在哪一层实现的?

虽然提供的是网络层的服务,但是实现却是在应用层。

IP数据包

IP数据包格式

头部至少20个字节,因为存在options选项。

checksum只有IP首部的原因是TTL,因为每到一个路由器就得重新计算一次,如果是整个数据包的checksum的话就会使得计算量特别的大。

为什么IP有分段

因为每段链路可能是不同的,比方说一段是Ethernet,下一段就是WiFi,它们能够传送的最大的数据包的大小是不同的。这个最大的可以被传送的数据单元的大小被称作MTU(Max transmission unit)

IP分组头中与分段有关的域

Total Length: 本分段的长度

Identification: 属于同一分组的分段有相同的Identification

DF: 如果置1,则不允许分段。如果分组长度大小大于MTU,则抛弃。

MF: 如果置1,说明不是最后一个分段。

Fragment Offset: 本分段中的数据相对于分段前的分组中数据的位移,单位是8个字节。

怎么进行分组

假定现在一共有 x x x字节的数据,目标数据包的大小为 y y y

首先要明确,填入的数据包必须是8的倍数,否则就凉了。

所以大小应该是 s i z e f r a g = ⌊ y − 20 8 ⌋ ⋅ 8 + 20 \mathrm{size_{frag}} = \displaystyle \bigg\lfloor\frac{y-20}{8}\bigg\rfloor\cdot 8 + 20 sizefrag=8y208+20

然后应该一共有 ⌊ x − 20 s i z e f r a g − 20 ⌋ \displaystyle\bigg\lfloor\frac{x - 20}{\mathrm{size_{frag}} - 20}\bigg\rfloor sizefrag20x20个这样大小的数据包。

最后一个数据包的大小应该是 x − ⌊ x − 20 s i z e f r a g − 20 ⌋ ⋅ ( s i z e f r a g − 20 ) x - \displaystyle \bigg\lfloor\frac{x - 20}{\mathrm{size_{frag}} - 20}\bigg\rfloor \cdot (\mathrm{size_{frag}} - 20) xsizefrag20x20(sizefrag20)

Offset应该怎么填

offset是 ⌊ y − 20 8 ⌋ \displaystyle \bigg\lfloor\frac{y - 20}{8}\bigg\rfloor 8y20的倍数。这个同样也会影响到上面的公式。

特殊IP地址及其含义

0.0.0.0表示This host

网络部分全0,剩下部分有数字,说明的是在这个子网内的IP地址。

255.255.255.255表示广播

网络部分保留,后面全1,说明是在这个子网里进行广播。

什么是DHCP协议

DHCP协议是动态主机配置协议,主要做的事情是动态分配IP地址。

为什么四次的dest都是广播

第一次因为不知道DCHP服务器是哪个,第二次是服务器不知道是哪个ip问的,第三次是因为可能有多个服务器给这个电脑发IP,所以确认的时候也要告诉其他DCHP服务器,第四次是因为要让其他服务器也知道这个IP地址给了这台电脑。

DCHP request是广播其实也就是告诉其他DCHP服务器,我没有接受你们的DCHP offer.

IPv6和IPv4的差别
  • IPv6的首部变成了固定的长度。
  • 字段数减少到了8个。
  • 取消了首部校验。
  • 从1<<32转变为1<<128的IP地址范围。
  • 4只能单播,6可以组播和任播。

路由器只处理基本首部。

单播,组播和任播

单播: 传统的点对点通信。

组播: 一点对多点的通信。

任播: 任播的目的地是一组计算机,但是通常只交付给距离最近的那个计算机。

IPv6和IPv4要怎么兼容呢?
  • Dual stack,双协议栈
  • 隧道技术
CIDR和Classful Network

CIDR使用一个斜杠来划分子网地址和主机地址。

Classful Network通过检测最前面几位来判定是哪一个class的地址。

路由算法和协议

路由算法有哪两个

Link-State和Distance-Vector

路由协议有哪些,分别采用哪些算法
路由协议算法
RIPDV
OSPFK

RIP和OSPF都是自治系统(Autonomous System)内部的协议,

BGP协议是自治系统之间的。不提供开销信息,只提供是否可达。

第四章

广播和组播的区别
  1. 都是一个发送端多个接受端但是可以理解为广播是一对所有,组播是一对一组。
  2. 广播只能在子网里面搞,不能穿越路由器; 组播是可以穿越路由器的。甚至接受端可以来自不同的子网。
如何实现组播

用生成树的方法,只要生成树覆盖了组里的节点就可以了。

其实跟广播差不多,广播是子网里面建一颗生成树。

  1. 基于源端的树
    1. 最短路径树(Dijkstra树)
    2. 反向路径转发
  2. 组共享树
    1. 最小生成树
    2. 基于中心的树
CRC怎么确定左移多少位

根据生成多项式的长度。假设生成多项式的长度为 r r r,那么就左移 r − 1 r - 1 r1位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值