计算机网络 - 网络层

寄!

破防一周年
破防一周年

逻辑地址

IP 协议

不可靠协议

分段在传输层, 网络层收到的数据报是分好了段的.

来自应用层的数据长了的话, 传输层会给它分段.

网络层收到每一段, 都要加上 IPv4 的头部, 作为数据报传给下一层

在传输的过程中, 可能又被路由器分段.

头部的第 2 个 32 位用于分段的东西.

前 16 位是标识, 就是一个分段的计数器, 告诉你这是第几段.

然后三位, 第一位保留, 第二位为 1 不能分段, 如果太长 (比如以太网, 长于 1500B) 直接丢掉. 第三位 0 表示最后一个段, 1 表示不是最后一个段.

接下来 13 位, 表示分段开头原本在数据的偏移, 单位 8B

摆烂, 考到就放弃

ARP

从上层传下来的数据只知道 ip 地址, 而不知道 MAC 地址. 所以需要广播一个请求 ARP 数据报, 目的接收方收到后, 单播一个回复 ARP 报, 告诉发送方 MAC 地址.

请求和回复结构一致 (都叫 ARP), 由第 7, 8 个字节表示.

d e v e i c e s o l u d e r e n c v e i ( c e l e t o h g t : i y c p 6 a e ) l ( a e d t l d h o r : g d i ( e 0 c i s x p t 0 l v 0 e s 4 d 0 n o e d 1 u l v e ) ( r o e s i c w c t p e ) e v l 4 d a o : e d g v d i 4 i r c ) c a e ( l e a t a d h d d : d o r r p M ( A ( ( e C i r t s , p e h o v p q : u 0 4 r u r ) o e M c i t s A e f o t C c : ) l r o o e l 0 g q x i u t 0 c e y 0 a s p 0 l t e 1 ; a A ( d R i r d Q p e r ) v s 4 p ( : o i n p 0 s v x e 4 0 : 8 h 0 0 i 0 x g ) 0 h 0 ) 0 2 )

注意, 这是在网络层的, 数据链路层会对它进行封装加包头. 包头中也有 MAC.

当发送的是请求 ARQ 时, 包头中的目的地址是全 1, 表示广播.

因特网控制报文协议Internet Control Message Procotol ICMP

  1. 目的不可达: 找不到去往目的的路
  2. 源端抑制: 接收方由堵塞而不接收
  3. 报文超时: 到 TTL 了
  4. 参数问题: 头错了
  5. 重定向: 路由器发送, 告诉主机有更好的路径

头部: 1B 的类型, 1B 的代码 (不知道有啥用), 2B 的校验和 (整个报文的)

数据: 出错的 IP 数据报的 IP 头和其数据的前 1B (有端口号, 这样应用层就知道了)

要发送的话, 这玩意还得加个 IP 头, 因为这时网络层的 数据.

果果感觉这个分类不重要

传递 转发 路由

传递Delivery: 传输信号的物理过程 转发Forwarding: 路由器根据转发表找到往哪发的过程 路由Routing: 路由器根据算法建立路由表的过程

四个条目, 掩码, 网络地址, 下一跳 (路由器/主机) 地址, 接口

还有个默认值, 掩码 /0, 地址 0.0.0.0, 下一跳会给. 填表就是了, 简单. 注意可以减少掩码长度一些表聚合. 掩码大的放在前先匹配, 否则会错.

还是上面四个条目, 没有默认.

自治系统: 比局域网更大的一个单位, 可以是一个机构的全部网络, 使用相同的路由选择协议.

域内路由: 路由信息选择协议Routing Information Protocol RIP, 开放最短路径优先Open Shortest Path First OSPF.

域间路由: 边界网关协议Border Gate Protocol

图, 边权为 1. 路由表中的跳数就指的是经过多少个点才能到目的端. 16 为无穷大.

每个路由器每隔一段时间就把自己的路由表发给相邻的路由器, 然后添加/删除/松弛.

每一段时间所有路由器都要跟最近的路由器沟通一下路由表, 如果有个路由器半天不说话, 旁边的路由器就知道他死了, 把距离改成 16.

如果有个网死了, 旁边最近的一个路由器会在发自己的路由表的时候告诉旁边的人这个网死了, 其他路由器都会更新自己的路由表知道这个网死了.

引用
但是可能会出现这样的情况, 就是有个网死了, 这个路由器刚想告诉别人这个网死了, 结果旁边有个傻逼嘴快发路由表告诉他自己可以到这个网, 只需要 4 步. 但是这个路由器可不知道这四步第一步就是从他那走. 然后这个路由器就听信这个傻逼把自己的路由表也给改了. 过了一会这个路由器告诉这个傻逼自己也能到这个网了, 只需要先到你那, 这样只需要 5 步. 这个傻逼一看自己本来就是走他那的, 他现在到那个网需要 5 步了, 是不是路变远了, 就把自己的路由表改成了 6 步到这个网. 这样捯饬半天, 等他们俩都把自己路由表折腾到 16 的时候, 两个傻逼才知道这个网死了. 所以不能把无限大设的太大, 要不然这俩傻逼搞半天都搞不懂这网死了. 这个叫, 坏消息传得慢.

RIP 属于传输层的协议, 使用 UDP 协议.

图, 边权可以为链路传播的延迟. 每个点知道整个图的信息, 然后求一个以他自己为源点的最短路径树. 根据这个树就知道具体路径了. 路由表中不存下一跳, 而存整个路径.

对所有点都搞, 太多数据了. 于是可以划分成不同的区域, 每个区域选一个代表元 (书上叫代言节点). 这些代表元构成的子图必须连通. 代表元知道自己区域内的路径, 然后共享区域间的信息, 构造最短路径树算路径.

OSPF 属于网络层的协议, 使用 IP 协议.

和区域化的 OSPF 差不多, 区域换成自治系统. 你问具体内容? 不会!

BGP 属于传输层的协议, 使用 TCP 协议.

数据报交换

就是数据传输, 路由, 转发的全过程. 由于存在路由表, 所以不需要建立和拆除链接, 且按需分配, 先来先服务, 效率高.

每个路由器收到数据后, 会先存起来看去哪, 所以每次转发 (发送) 都有传输延迟. 转发前还会有等待时间 (暂时不知道为啥, 可能是分配资源需要时间?)

将发送方的等待时间记为 0, 则任何一次发送, 都会有等待时间和传输时间, 再加上传播时间, 就是总延迟了. 等待时间不相同.