计算机网络: FAQ

计算网络 IP Address

写出下面给定 IP 168.56.128.0/18 的 Lowest, Highest 以及 Broadcast IP Address。

因为后面的掩码数是 18,说明前面 18 位是不变的,可以将上面的 IP 地址转化如下:

168.56.10(00 0000).(0000 0000)

要求不同的 IP 地址其实就是要找出 168.56.10(xx xxxx).(xxxx xxxx) 网络中的最小,最大和 Broadcast 地址。

Lowest IP Address

首先求 Lowest,也就是这个网络里最小的网络 IP 是啥,又因为前 18 位是不变的,所以将后面的 "x" 变成 0 不就是最低了嘛。这里要注意的是后面全是 0 的 IP 是这个网络的 IP。

168.56.10(00 0000).(0000 0000) // 这个网络 IP 地址

所以最低分配的 IP 地址还要在这个基础上 +1,也就是

168.56.10(00 0000).(0000 0001) // 最小 IP 地址
//写成 10 进制
168.56.128.1 // 最小 IP 地址

Broadcast IP Address

刚刚说到后面全是 0 则是这个子网的 IP,那全是 1 呢?那就是 Broadcast IP 地址了。

168.56.10(11 1111).(1111 1111) // Broadcast IP
// 写成 10 进制
168.56.191.255 // Broadcast IP

Highest IP Address

本来如果后面可变的位数都是 1,那么 IP 地址应该是最大的,可以这里被用来做 Broadcast IP 了,所以可分配的 IP 地址要在 Broadcast IP 地址基础上 -1.

168.56.10(11 1111).(1111 1110) // 最大 IP 地址
// 写成 10 进制
168.56.191.254 // 最大 IP 地址

假设现在有一个 IP: 128.36.199.3/19 是从属于学校网络的,且这个学校网络只能允许分配 5 个不同的子网。写出:

  • Network ID
  • Subnet Mask
  • Campus Network ID
  • Local Broadcast Address

Network ID 就是指当前这个 IP: 128.36.199.3/19 所属的子网是什么,上题已经说过了就是将固定位数后面的位数变成 0 就可以了。

128.36.199.3/19 ->128.36.110(0 0111).(0000 0011)
// Netowork ID
128.36.110(0 0000).(0000 0000) -> 128.36.192.0/19

Subnet Mask 就是将固定位数都变成 1,未固定位数都变成 0.

128.36.199.3/19 ->128.36.110(0 0111).(0000 0011)
// Netowork ID
(1111 1111).(1111 1111).(1110 0000).(0000 0000) -> 255.255.224.0

Campus Network ID 就是要求当前这个 IP 所属的校园网 IP 是什么。根据问题校园网只能分配 5 个子网,而 3 个位 (2^3=8 > 5) 就已经可以分配 8 个不同的子网了,所以校园网的前缀是 19-3=16。再根据上面求子网一样,将未固定的位数都变成 0 就是 Campus Network ID 了。

// Campus Network ID
128.36.0.0/16

Local Broadcast Address 和上题一样,将未固定的位数都变成 1 就可以了。

128.36.199.3/19 ->128.36.110(0 0111).(0000 0011)
// Broadcast Address
128.36.110(1 1111).(1111 1111) -> 128.36.223.255

链路层的分包

已知 MMS = 1200 Bytes,IP 和 TCP Header 都是 20 Bytes,MTU = 1600 Bytes,求:如果不设置 DF (Don't Fragment) 会怎么样?设置了 DF 又会怎么样?

MSS = Maximum Segment Size
MTU = Maximum Transmission Unit

先求整个 Packet 的大小 = 1200 + 20 (IP Header) + 20 (1600 Header) < 1600,说明还不需要分包,所以设置和不设置 DF 都不会有影响。

将上面变一下, MMS = 1600 Bytes,MTU = 1200 Bytes,再问上面两个问题。

这个时候 Packet 大小是 1600 + 20 + 20 > 1200,说明这时候是需要分包的 (Fragement)。

如果不设置 DF,也就是说在这层(链路层)不不分包=要分包,所以这时候网络层的包来到链路层后,链路层会对这些数据包进行分包 (Fragement) 操作,不会报错。

如果设置 DF,也就是在这层(链路层)不分包,而数据包的大小又超过 MTU,会报错,然后将数据包返回到传输层,让传输层去分包,分好再给链路层去传递。

网络配置

下面正确的网络配置是哪个?

  1. LAN1: 128.64.1.0, LAN2: 128.64.1.0, LAN3: 128.64.1.0
  2. LAN1: 128.64.1.0, LAN2: 128.64.2.0, LAN3: 128.64.1.0
  3. LAN1: 128.64.1.0, LAN2: 128.64.2.0, LAN3: 128.64.3.0

正确配置是第一个,因为 HUB 不会创建子网,所以上面 PC1 和 PC2 都是属于同一个子网,LAN1,LAN2,LAN3 对应的子网都是一样的。

将上面的 HUB 都改成 Bridge,如何配置?

正确配置还是第一个,因为 Bridge 也不会创建子网,所以上面 PC1 和 PC2 都是属于同一个子网,LAN1,LAN2,LAN3 对应的子网都是一样的。

将上面的 HUB 都改成 Router,如何配置?

正确配置是第三个,因为 Router 会创建子网,这里的每个 LAN 都是不同的子网。

生成树

假设已知 Bridge 4 是 Root Bridge,上面的网络结构的生成树是怎么样的?

首先从 Bridge 4 开始相邻的 Bridge,找到 Bridge 1和 Bridge 9,以此类推找他们相邻的 Bridge,所以现在已经连上了

Bridge 4
    Bridge 1
        Bridge 2
            Bridge 3
            Bridge 6
        Bridge 5
            Bridge 8
    Bridge 9 
        Bridge 7

画成树:

写出每个 Bridge 的端口的类型(Designated, Root, Block)。

确定商品类型的规则是

  1. Root Bridge 的端口都是 Designated Port
  2. Bridge 连到 Root Bridge 的那个商品都是 Root Port
  3. 除了 Root Port,剩下 Bridge 之间有连接的商品都是 Designated Port
  4. 剩下不联通的都是 Block Port,配置这个要注意的是所有的子网至少和一个 Designated Port 有连接,不能都连接 Block Port,否则这个网络就没意义了

按照上面的规则可以画成下面的树

如果 Host A 发请求给 Host B,ARP 请求和响应是怎么样的?

发 ARP 是广播的,所以 A 发 ARP 请求的时候,所有 Bridge 都会记录 A 是从哪个端口来的。所以 A 发 ARP 请求会经过下面的 Bridge

Bridge 6, Bridge 2, Bridge 5, Bridge 1, Bridge 4, Bridge 9, Bridge 7

当 B 收到 A 的 ARP 请求后,会发一个 ARP 响应,由于上面已经记录了 A 的位置了,所以当 B 进行 ARP 响应广播的时候,Bridge 就会直接将响应送到对应的端口,而不像上面乱发一通了。只要 ARP 响应经过某个 Bridge,那个 Bridge 就会记录 B 从哪个端口来,这就是 网桥学习

ARP 响应的过程是

Bridge 9, Bridge 4, Bridge 1, Bridge 2

ICMP 请求是怎么样的?

因为刚刚发 ARP 请求响应的时候 Bridge 都已经记录了 A 和 B 从哪个端口来,所以发数据包的时候会很直接地送到对应的目的地。

ICMP 请求路径:Bridge 2, Bridge 1, Bridge 4, Bridge 9
ICMP 响应路径:Bridge 9, Bridge 4, Bridge 1, Bridge 2

TCP 发包过程

下面给出描述,画出 TCP 发包的图

  • TCP 开始处理 Slow-Start 阶段,到了 Round 5 进入 Congestion Avoidance (到达阙值)
  • 当 Round 12 时候出现重复的 ACK
  • 当 Round 19 后的下一个 Round 出现丢包的情况

假设使用 TCP Tahoe。

  • R1 => R6: Slow-Start 阶段,发包数以指数倍增加
  • R6 => R12: R5 后进入 Congestion Avoidance 阶段,所以从 R6 开始以线性倍增长
  • R12 => R13: 出现重复 ACK 使用 Tahoe 方案,即 cwnd = 0,threshold = 38 / 2 = 19,再次进入 Slow-Start 阶段
  • R13 => R18: Slow-Start 阶段,发包数以指数僧增加
  • R18 => R20: 超过 threshold,进入 Congestion Avoidance 阶段,线性增长
  • R20 => R21: R20 的时候检测到丢包,所以 R21 直接变成了 0,再进入 Slow-Start 阶段

这里提一下 Reno 的方案: 将 ssthresh 设置成当前的 cwnd,然后将 cwnd 设置成当前 cwnd 的一半 (cwnd / 2)

跌幅

给上面的图添加路由表。

  • PC 都会有一个默认的子网,这个子网的 Gateway 应该设置成 *
  • 给 PC 设置默认网关后,Genmask 要调成 0.0.0.0,表示默认网关
  • 如果是设置单个路由,就要定义好目的地的 Genmask

如果 PC 4 发 IP datagram 给 PC 2,写出经过每个网络时候包里的 Source 和 Destination 信息。

这里要注意的是 LAN 3 和 LAN 4 中间有个网桥,他们两个都是同一个网络,所以 Source 和 Destination 是一样的。

写出 Bridge 0 里的 Forwarding Table。

这里只需要写出 PC 要从 Bridge 的哪个端口来就好了。

Telnet 传输

设置现在 Client 要传一个字符 "r" 给服务器,完成下面的表格。空白栏用 "*" 表示。

这里要注意的是传输字符之前是要进行 TCP 三次握手的,而握手的前两次的 Flag 是 SYN,其中第二次的 Server 发到 Client 要传 ACK。

ACK Number 是对方当前 Sequence Number + 1.

l
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 3,439评论 0 6
  • 1.TCP报头格式 UDP报头格式 TCP报头格式 UDP报头格式 具体的各部分解释看 TCP报文格式详解 - ...
    杰伦哎呦哎呦阅读 2,301评论 0 5
  • 网络层提供的两种服务 在计算机网络领域,网络层应该向运输层提供怎样的服务(面向连接还是无连接)曾引起了长期的争论,...
    srtianxia阅读 3,717评论 0 12
  • 转载 :http://www.cnblogs.com/maybe2030/p/4781555.html#_labe...
    奋斗live阅读 1,332评论 0 10
  • 博主最近在复习HTTP,之前用书主要是《计算机网络》谢希仁版本,最近结合网上博客,进行复习和提纲式的总结。 一、概...
    stoneyang94阅读 4,124评论 1 8