计算机网络-网络层笔记

计算机网络-网络层笔记

LastEditTime: - 2020.12.31

不卖茶的吴龙茗茶

  • 网络层只提供best effort 的服务,不能保证带宽,时延等等
  • 一些network layer包含的协议
    • routing protocols

      • path selection
      • RIP, OSPF, BGP
    • IP protocol

    • ICMP protocol

两个network layer的主要作用:

1、forwarding(data plane)

move packets from router’s input to router’s output (在router的每内部,决定datagram从哪个output port出)

下面展示的是router input port的基本架构:
在这里插入图片描述

  • 这里的switch fabric是交换结构的意思,可以看做是路由器中的网络

红色框框住的部分,路由器有了header field通过转发表(forwarding table)查找输出端口,这部分有两种可能的方法:1:destination-based forwarding, 2: generalized forwarding

destination-based forwarding的基本思想

假设我们有如下的forwarding table:
在这里插入图片描述

我们目的地中的前缀的前n位和表中的前缀进行匹配,从而选择链路端口。但是我们会发现可能目的地与多个前缀相匹配,这时候就需要用到最长前缀匹配规则(longest prefix matching rule),即在该表中寻找最长的匹配项,并向与最长前缀匹配相关联的链路接口转发分组

Swtiching fabric

大致分为三种:

1.memory 在这里插入图片描述
一个分组到达一个输入端口时,该端口会先通过中断方式向路由选择处理器发出信号。于是,该分组从输入端口处被复制到处理器内存中。路由选择处理器则从其首部中提取目的地址,在转发表中找出适当的输出端口,并将该分组复制到输出端口的缓存中。(不能同时转发两个分组)

2.bus在这里插入图片描述
让输入端口为分组预先计划一个交换机内部标签(首部),指示本地输出端口,使分组在总线上传送和传输到输出端口。该分组能由所有输出端口收到,但只有与该标签匹配的端口才能保存该分组

3.crossbar在这里插入图片描述
与前面两种交换方法不同,纵横式网络能够并行转发多个分组。纵横式交换机是非阻塞的(nonblocking),即只要没有其他分组当前被转发到该输出端口,转发到输出端口的分
组将不会被到达输出端口的分组阻塞。

router output port 的结构和input port 的结构类似
在这里插入图片描述
对于包的scheduling我们有以下的几种方式

1.FIFO(先进先出)

如果队列排满了怎么办呢?

  • tail drop
  • priority
  • random

2.priority scheduling
在这里插入图片描述

在这里插入图片描述

一这幅图中的红绿packets为例:

红色的包的优先级比绿色的高,① ② ③首先进入服务区(在③进入的时候①还没有被传出完毕),在①离开时服务区中还剩②和③,③的优先级高,所以三先离开,在③完成了离开之后服务区中只剩下②,所以②开始离开,再②离开到一半的时候④进来了,但是由于②已经处于正在离开的状态,所以即使④的优先级比②高,还是需要等待②离开之后才能继续离开。

3.Round Robin(RR) scheduling

红绿轮着来,除非两个中哪个没了
在这里插入图片描述

4.Weighted Fair forwarding

按比例侧重的控制包的离开:
在这里插入图片描述

2、routing(control plane)

determine route taken by packets from source todestination(在不同的router之间)

我们使用routing protocol的目标是选出来一条好的路径,那么什么样的路径算是好的呢,对于好可以有不同的定义,常见的为least “cost”, “fastest”, "least congested"

traditional routing algorithm
  • per-router control
SDN
  • logically centralized control
下面介绍的是两种常见的routing的算法

①:link state algorithm(知道global information)

Dijkstra’s algorithm:

首先是一些基本的定义

  • c(x,y): link cost from node x to y; = ∞ if not direct neighbors
  • D(v): current value of cost of path from source to dest. v
  • p(v): predecessor node along path from source to v
  • N’: set of nodes whose least cost path definitively known

待补

②:distance ve*ctor algorithm(知道decentralized information)

待补

intra-AS routing in the internet: OSPF

在实际中我们会把众多的router,按组分到不同的 autonomous system(AS)(a.k.a. “domains”)中去,在一个AS中有两类的router,这两种router的区别在于和其它的AS有没有连接。

  • gateway router
  • interrior router

在同一个的AS之间我们会使用intra-AS routing在不同AS里面我们会使用inter-AS routing.

  • Intra-AS routing (Interior gateway protocol, IGP)
    • RIP: Routing Information Protocol(基于distance vector),over udp
    • OSPF: Open Sortest Path First(基于link state),是over ip的
    • IS-IS: 很像OSPF
    • IGRP
  • Inter-AS routing (boarder gateway protocol, BGP),over TCP

同一个AS里面的router会使用相同的intra-domain protocol而不同一个AS里面可以使用不同的intra-domain protocol。在一个AS内部 gateway router的功能包括了两种routing。

OSPF的优点:

  • security
  • multiple same-cost paths
  • intergrated uni- and multi-cast support
  • hierarchical OSPF in large domains

在一个hierarchical的OSPF示例:

在这里插入图片描述

BGP

BGP分为eBGPiBGP,eBGP是在不同的AS之间运行的,iBGP是在相同的BGP之间运行的。从一个给定的路由器到一个目的子网可能有多条路径,这时候就需要选择最好的路由。首先我们需要知道一些有关于BGP的术语。

Prefix (destination) + attributes = “route”,在属性中比较重要的就是AS-PATHNEXT HOP。AS -PATH是已经走过的AS的集合(不包括开始的AS)而NEXT HOP是AS・PATH起始的路由器接口的IP地址。

hot potato routing:

对于起始路由器而言,它并不关心inter-domain cost,他只关心怎么规划路径才能使得intra-domain cost最小。

协议对比:
在这里插入图片描述
图片来源:https://blog.youkuaiyun.com/Jungle_hello/article/details/51438886?utm_source=copy

ICMP:internet control message protocol

主机和路由器用ICMP协议来交换网络层的信息:

  • error reporting
  • echo request

ICMP通常被认为是IP的一部分,但从体系结构上讲它位于IP之上,因为ICMP报文是承载在IP分组中的。

traceroute(书中解释):

Traceroute是用ICMP报文来实现的。为了判断源和目的地之间所有路由器的名字和地址,源主机中的Traceroute向目的地主机发送一系列普通的IP数据报。这些数据报的每个携带了一个具有不可达UDP端口号的UDP报文段。第一个数据报的TTL为1,第二个的TTL为2,第三个的TTL为3,依次类推。该源主机也为每个数据报启动定时器。当第□个数据报到达第〃台路由器时,第孔台路由器观察到这个数据报的TTL正好过期。根据IP协议规则,路由器丢弃该数据报并发送一个ICMP告警报文给源主机(类型11编码0)。该告警报文包含了路由器的名字和它的IP地址。当该ICMP报文返回源主机时,源主机从定时器得到往返时延,从ICMP报文中得到第n台路由器的名字与IP地址。

SNMP:simple network management protocol

在了解SNMP**(一个应用层协议)**之前我们首先需要知道网络管理的基本框架,网络管理的基本组件如下所示

  • managing server(管理服务器)
  • managed device(被管设备)
  • management information base(MIB)(管理信息库,这些信息的值可供管理服务器所用)
  • network management agent(网络管理代理)
  • network management protocol

IP: Internet Protocol

在这里插入图片描述
在这里插入图片描述

上面是一个ip协议的基本格式,有利于我们对ip协议有一些初步的认识。

IP fragmentation

MTU: max.transfer size

在实际的网络连接中,不同链路层协议会有不同的MTU,有时一个包的长度太长,所以需要对包进行fragmentation(分片)的操作。为坚持网络内核保持简单的原则,IPv4的设计者决定将数据报的重新组装工作放到端系统中,而不是放到网络路由器中。

下面是一个分片的例子:

假设MTU为1500 bytes,现在要将一个4000bytes长度的包进行分片

在这里插入图片描述
分片的结果如下:
在这里插入图片描述
首先我们要关注的是分片后包的长度,1500+1500+1040=4040,通过对比我们可以发现,分片后包的总长度比分片之前的包的长度要多出了40。这是由于之前ip只有一个head field,现在分为了三个包之后有了三个ip field,这样使得多出了两个head field,而一个ip的head field的长度为20 bytes,所以长度增加了20。然后我们要关注的是offset,对于分片后的第二个包,offset的值为1480/8,这是根据第一个包的data的长度除以8得来的。

IP address

IP address总共有32-bit. 例:192.168.10.1 这个ip地址中以点为划分,将32位分成了4个八位

interface: connection between host/router and physical link

IP address assocciated with each interface

subnet!!!

对于一个ip地址,分为subnet parthost part,高位为subnet part低位为host part,subnet part 相同的interface属于同一个子网,属于同一个子网的interface能够不经过路由器相互通信。那么如何界定哪些位属于子网呢?例:192.168.10.1 /24, 在这个例子中,/24表示的是最左边的24比特定义了子网地址。/24有时也被称作子网掩码,和另一种表达形式:255.255.255.0是等效的。

两种子网掩码形式的转换(例):

255.255.255.0 → 11111111.11111111.11111111.00000000 对应/24

255.255.0.0 → 11111111.11111111.0.0 对应/16

255.255.128.0 → 11111111.11111111.10000000.00000000 对应/17

255.255.254.0 → 11111111.11111111.11111110.00000000 对应/23

子网聚合(aggregation)

例:

1. 172.16.129.0/24
2. 172.16.130.0/24
3. 172.16.132.0/24
4. 172.16.133.0/24

为了做子网聚合,我们首先将上述的ip地址后面不同的比特写成二进制比特的形式

  1. 172.16.10000001.0
  2. 172.16.10000010.0
  3. 172.16.10000100.0
  4. 172.16.10000101.0

通过对比我们能够发现高亮标出来的地方的值是相同的,所以我们设定的新的子网id就是前面的21位。新的子网的ip表示为172.16.128.0/21

CIDR: Classless InterDomain Routing(无类别域间路由选择)

因特网的地址分配策略被称为无类别域间路由选择(Classless Inlerdomain Routing,CIDR),一个组织通常被分配一块连续的地址,即具有相同前缀的一段地址。

形式为a.b.c.d/x的地址的x最高比特构成了 IP地址的网络部分,并且经常被称为该地址的前缀(prefix)。

DHCP: Dynamic Host Configuration Protocol (动态主机配置协议)

又被称为plug-and-play protocol,是基于UDP的协议

goal:能够使得主机能够动态获取ip地址

  • reuse of address

host获取DHCP 的简单步骤:

  • host broadcast DHCP discover
  • DHCP server respond with DHCP offer
  • host request IP address DHCP request
  • DHCP server send address DHCP ack

DHCP ack中包含的信息可以不止ip address,还可以包括
在这里插入图片描述

NAT: network address translation

在这里插入图片描述

整个local network的信息都通过138.76.29.7这一个ip地址出去。

接下来的这幅图,完美的解释了一个使用了NAT的实例

在这里插入图片描述

IPV6

datagram format:

  • fixed-length 40 byte header

  • no fragmentation allowed

  • no checksum

transition from IPV4 to IPV6:

在这里插入图片描述
即在IPV6的外面套上IPV4的header和source, dest addr

Tunneling

假如在一些路线中,不仅仅有IPV6的路由器,还有IPV4的路由器,我们需要用上面所讲述的转换的方法,做一个tunnelling的操作

在这里插入图片描述

这里面比较需要注意的是src和dest在tunneling时候的变换,可以看到,在做tunneling的时候,src变成了连接第一个IPV4路由器的IPV6路由器的ip地址,而dest变成了连接最后一个IPV4路由器的IPV6路由器的地址。

Generalized Forwarding and SDN

通用的“匹配加动作”范式,其中能够对协议栈的多个首部字段进行“匹配”,这些首部字段是与不同层次的不同协议相关联的

flow: defined by header fields

generalized forwarding: simple packet-handling rules

  • pattern: match values in packet header fields
  • actions: drop, forward, modify, matched packet or send matched packet to controller
  • priority
  • counters

下面是几个flow table的示例:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 转载请注明出处:

https://blog.youkuaiyun.com/weixin_44077955/article/details/112004182

  • 文章难免有疏漏错误之处,欢迎私信博主及时更正,大家共同进步😜。

Reference:

①:计算机网络-自顶向下方法

②:http://gaia.cs.umass.edu/kurose_ross/ppt.htm

③:https://blog.youkuaiyun.com/Jungle_hello/article/details/51438886?utm_source=copy

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值