Day8: IP Internet Protocol

SHOUT OUT MY SLOGAN: ——Fighting ! Stealthy Learner (加油偷博仔!)

(来自有道翻译,hhh)来自

不知不觉,我已经Stealthily learn《计算机网络》了这么多日子了。
所幸,在没人监督的要认真学习的时候
没有纠结太久:
“to study or not to study (和好姑娘打游戏) is a question”
不像顾城先生笔下的小鱼儿,还在研究(纠结)
《水呀,真急》

水呀,真急,真急,
桥墩后又几条小鱼
它们在举行会议,
研究着前进还是退避。
太阳在桥面上走过,
带着几分醉意。
研究在不断继续,
河水在不断流去。
月牙在桥栏边停靠,
似乎要看个仔细。
水呵,真急,真急,
桥墩后又几条小鱼
————《水呀,真急》1980年3月

可能,小鱼仍在研究,大鱼已到上游。


加油大鱼儿萌!Let’s get to today’s topic

0 、IP主要内容、IP datagram格式

主要内容是这些:

  •  数据报格式
  •  分片
  •  IPv4地址
  •  NAT:网络地址转换
  •  IPv6

再来看一下IP在网络中所在的层次。

  • 互联网的网络层 (主机,路由器中的网络层功能:)
    在这里插入图片描述
    同时,网络层还有其他的协议,比如 “路由协议”。(会实现控制平面的路由功能。)
    在讲到网络层的控制平面,会细说。

红框摘出来看一下
IP 协议
•地址约定 (长度啊、有无分成网络部分/主机部分啊/、有没有所谓内网地址啊…)
•数据报格式 (pdu格式,分成header和body。)
•分组处理的约定 (ttl -1 …)

而ICMP协议主要是拿来测试的,比如ping…

  • IP 数据报格式
    在这里插入图片描述

Describes several fields

固定20字节的头部
选项长度 = 数据报总长(length) - 20Bytes的固定长度
·
IP 协议版本号(ver):——4个bits。
现在上面就是IPV4(0100)的数据报格式。
头部长度(head len),以一(bit)当四(bytes)
普通IP数据报(没有option时)该字段的值是5(即20个字节的长度)。如果有options那么大于5
服务类型(TOS、type of service):
占用8位二进制位,用于规定本数据报的处理方式。基本废弃不用了…
第二行的三个字段
用于分片,后文细说。
Internet checksum:
判断分组的头部在传输过程中,有没有问题

一、IP 分片和重组(Fragmentation & Reassembly)

  • 网络链路有MTU(最大传输单元) – 链路层帧所携带的最大数据长度
     不同的链路类型
     不同的MTU

再Briefly Describes一下MTU:Maximum Transfer Unit:
如果IP层有一个数据报要传,而且数据帧的长度比链路层的MTU还大,
那么IP层就需要进行分片( fragmentation),
即把数据报分成若干片,这样每一片就都小于MTU。

  •  大的IP数据报在网络上被分片 (这可不是乱分的啊,是训练有素的IP,有备而来的!)
    •  一个数据报被分割成若干个小的数据报
       相同的ID (区分不同的数据报)
       不同的偏移量 (数据报的按序重组排序)
       最后一个分片标记为0
    •  “重组”只在最终的目标主机进行
    •  IP头部的信息被用于标识,排序相关分片
      在这里插入图片描述

1.IP 分片和重组-例子

在这里插入图片描述

二、IP 编址: 引论

  •  IP 地址: 32bits标示,对主机或者路由器的接口编址
  •  接口: 主机/路由器和物理链路的连接处
     路由器通常拥有多个接口
     主机也有可能有多个接口
     IP地址和每一个接口关联
  •  一个IP地址和一个接口相关联
    在这里插入图片描述

在这里插入图片描述

1.子网(Subnets)

  •  什么是子网(subnet) ?
     一个子网内的节点(主机或者路由器)
    它们的IP地址的高位部分相同(前缀相同),这些节点构成的网络的一部分叫做子网
    无需路由器介入(再ip的层面“一跳可达”),子网内各主机可以在物理上相互直接到达

  •  IP地址:
     子网部分(高位bits)
     主机部分(地位bits)

在这里插入图片描述

1.1判断一个子网

将每一个接口从主机或者路由器上分开,构成了一个个网络的孤岛
在这里插入图片描述

像水果忍者,切三刀,三片水蓝蓝的(子网)孤岛
但是呢!
如果不划这三刀,这“三个孤岛”的前缀还是有一样的地方!223.1…
所以,这三个子网,对于外部而言,是一个子网。“路由聚合!”

 每一个孤岛(网络)都是一个都可以被称之为subnet


预告一下:

子网掩码: 11111111 11111111 11111111 00000000
Subnet mask: /24
子网掩码(subnet mask)
又叫网络掩码、地址掩码、子网络遮罩,
它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网
以及哪些位标识的是主机的位掩码。
子网掩码不能单独存在,它必须结合IP地址一起使用。
子网掩码只有一个作用,就是将某个IP地址划分网络地址主机地址两部分。


1.2猜一下,这有几个子网

在这里插入图片描述
六个!!
hhh…哈哈…哈(有点尴尬)

叨唠两句:
长途连接一般是point 2 point。
而局域网一般采用多点连接的方式。


2.IP 地址分类

在这里插入图片描述
拿Class A,Describes一下:

  • 最高位是0,(第一个byte的最高位)
  • 第1个byte的其他7bits代表网络号。(图中的Class A 的Network字段)
  • So,Class A has 126 (27 - 2 = 126) 个网络号,因为约定全0/全1的网络号不用
    为什么不用呢?一会看看下面的特殊的IP地址
  • 然后主机号是 32 - 8 = 24 bits,同理有224-2这么多的主机号
  • 所以A类网,全球一共有126个。Have been handed out

对于Class B、C的Table describes

field Class B Class C
Network 214-2 221-2
Host 216-2 = 65534 28-2=254

B类,前2个bytes代表网络号
C类,前3个bytes代表网络号


A、B、C类的地址叫做单播地址(unicast)——“我到你”
而D 类地址叫组播地址(multicast)——“我到这个D类组的”…
还以一种叫广播地址(broadcast)——“我到所有”,一般在局域网内部
E 类地址预留的(Reserved for future use)但存方寸地,留与子孙耕

在做分组转发的时候只关心网络号
就是说互联网对一个子网、一个子网,做路由、通告、计算
而非对单个ip地址做路由。
·
路由信息的通告的过程当中,还不断地做路由聚集减少表项,路由减负。
路由聚集的作用:
在这里插入图片描述


3.特殊的IP地址

在这里插入图片描述

最底下有个Loopback 回路地址(测试地址),
ping 127.x.x.x

本地回环地址指的是以127开头的地址(127.0.0.1 - 127.255.255.254),通常用127.0.0.1来表示。

是在ping自个儿呢。
在这里插入图片描述
作用有这些:
1.测试本机的网络配置,能PING通127.0.0.1说明本机的网卡和IP协议安装都没有问题


4.内网(专用)IP地址

  •  专用地址:地址空间的一部份供专用地址使用
  •  永远不会被当做公用地址来分配, 不会与公用地址重复
    • 局部网络中有意义,区分不同的设备
  •  路由器不对目标地址是专用地址的分组进行转发

 专用地址范围(A、B、C类都有)

  •  Class A 10.0.0.0-10.255.255.255 MASK 255.0.0.0
  •  Class B 172.16.0.0-172.31.255.255 MASK 255.255.0.0
  •  Class C 192.168.0.0-192.168.255.255 MASK 255.255.255.0

Class C地址,比较熟悉,192.168.0.0
·


5.IP 编址: CIDR

以下内容部分来自于这篇文章

背景:
在1992年因特网仍然面临三个必须尽早解决的问题,
这就是:B类地址在1992年已分配了近一半,眼看就要在1994年3月全部分配完毕!
因特网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。
整个 IPv4 的地址空间最终将全部耗尽。
·
1987年,RFC1009就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码。
使用变长子网掩码VLSM(Variable Length Subnet Mask)
可进一步提高IP地址资源的利用率。在VLSM的基础上又进一步研究出
无分类编址方法,
它的正式名字
无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。

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

网络前缀越短,
其地址块所包含的地址数就越多
而在三级结构的IP地址中,划分子网是使网络前缀变长。

  •  子网部分可以在任意的位置
  •  地址格式: a.b.c.d/x, 其中 x 是 地址中子网号的长度
    在这里插入图片描述
    区分A、B、C类网络只需分别比较IP地址的前1、2、3个byte(s),
    ·
    但对于这种无类域间路由,要如何区分其无类网络号?

简直欲哭无类了!

于是子网掩码应运而生。

无类网络是一种相对于有类网络的网络,无类网络IP地址的掩码是变长的
在有类网络的基础上,拿出一部分主机ID作为子网ID。
·
例如:
IP地址为192.168.250.44 子网掩码不能是小于24位。
因为这是一个C类地址(前3Bytes是网络号),子网掩码只能大于24位
而掩码255.255.248.0(21位)是不符合规定的。
·
如果一个网络中的主机有100台,
那么,可以用子网掩码/25来划分这个C类网络(“192.168.250.0/24”)
划分成192.168.250.0/25192.168.250.128/25两个子网
主机192.168.250.44/25 属于子网192.168.250.0/25。

做足了铺垫,终于迎来下面这个机智的发明

6.子网掩码(subnet mask)

根据RFC950定义,
子网掩码是一个32位的2进制数
其对应网络地址的所有位都置为1
对应于主机地址的所有位置都为0。

在这里插入图片描述

使用子网是为了减少IP的浪费。
因为随着互联网的发展,越来越多的网络产生,有的网络多则几百台,
有的只有区区几台,这样就浪费了很多IP地址,所以要划分子网。
使用子网可以提高网络应用的效率。
·
子网掩码判断两台计算机是否属于同一网段的方法是
将计算机十进制的IP地址和子网掩码转换为二进制的形式,然后进行二进制
“与”(AND)计算(全1则得1,不全1则得0),如果得出的结果是相同的,
那么这两台计算机就属于同一网段。

7.转发表和转发算法

在这里插入图片描述

8.主机如何获得一个IP地址

  •  系统管理员将地址配置在一个文件中
    Wintel: control-panel->network-> configuration->tcp/ip->properties
    (就是你使用的网络(无线wifi、以太网等)的属性,)
    UNIX: /etc/rc.config

  •  DHCP: Dynamic Host Configuration Protocol: 从服务器中动态获得一个IP地址
    “plug-and-play”
    很多无线路由器都有DHCP服务
    (老头老太太上网就不用自己配ip)

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

  • 目标: 允许主机在加入网络的时候动态地从服务器那里获得IP地址:
     可以更新对主机在用IP地址的租用期-租期快到了
     重新启动时,允许重新使用以前用过的IP地址
     支持移动用户加入到该网络(短期在网)
  • DHCP工作概况: 图文并茂的解释在8.2
     主机广播“DHCP discover” 报文[可选] (ip地址全1)
     DHCP 服务器用 “DHCP offer”提供报文响应[可选]
     主机请求IP地址(单播ip地址请求):发送 “DHCP request” 报文
     DHCP服务器发送地址:“DHCP ack” 报文

8.2 DHCP client-server scenario (DHCP 客户-服务机场景 )

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

transaction:(一笔)交易,业务,买卖; 办理; 处理
transaction ID: 事务号
·
简单说明上面的新来的client和DHCPserver的“你来我往”:
第一步:Client通过广播(broadcast)发送DHCP Discover 报文,Look for服务器端

第二步:Server通过单播(unicast)发送DHCP Offer 报文向客户端提供IP地址等网络信息

第三步:Client通过广播DHCP Request 报文告知服务器端本地选择使用哪个IP地址

第四步:Server通过DHCP Ack报文告知客户端IP地址是合法可用的


8.3 DHCP: 不仅仅是IP addresses(好文章,DHCP协议原理及其实现流程)

  • DHCP 返回:
     IP 地址
     第一跳路由器的IP地址(默认网关)
     DNS服务器的域名和IP地址
     子网掩码 (指示地址部分的网络号和主机号)
    (老头老太太上网就不用自己配ip、网关、子网掩码、DNS了)

8.4 DHCP: 实例

在这里插入图片描述

  •  联网笔记本需要获取自己的IP地址,第一跳路由器地址和DNS服务器:采用DHCP协议
  •  DHCP 请求被封装在UDP段中, 封装在IP数据报中,封装在 以太网的帧中
  •  以太网帧在局域网范围内广 播 (dest: FFFFFFFFFFFF) , 被运行DHCP服务的路由器收 到
  •  以太网帧解封装成IP,IP 解封装成UDP,解封装成 DHCP
    在这里插入图片描述
  •  DHCP服务器生成DHCP ACK,包含客户端的IP地址,第一跳路由器的IP地址和DNS域名服务器的IP地址
  •  DHCP服务器封装的报文所在的帧转发到客户端,在客户端解封装成DHCP报文
  •  客户端知道它自己的IP地址,DNS服务器的名字和IP地址,第一跳路由器的IP地址

8.5 DHCP: Wireshark 输出(home LAN)

在这里插入图片描述

这部分、老师没讲,我附一下。


9.如何获得一个网络的子网部分(从ISP)

  • 从ISP获得地址块中分配一个小地址块
    在这里插入图片描述

结合9.1图一起分析

9.0.一个ISP如何获得一个地址块

向ICANN机构申请

  • ICANN: Internet Corporation for Assigned Names and Numbers
     分配地址
     管理DNS
     分配域名,解决冲突

那么,
ICANN怎么获得地址呢?

9.1层次编址: 路由聚集(route aggregation)

(上面是老师的讲解视频76min20s处开始)

层次编址允许路由信息的有效广播:
在这里插入图片描述

Des: destination
MK: Mask
Next: Next hop
Inf: Interface


我大概是这样Understand的:
左边8个蓝框框(Organization 0~7)
是从一个大机构(大块ip)获得小块 (子网)
第一块地址:200.23.16.0/23
——前23位是网络号,剩下的9位是主机号所以有29-2=510个主机号
——最大主机号是200.23.17.255(当然,这是全1的主机号,不使用
·

——怎么算出最大主机号呢?我是这样的:
9位主机地址,8位低地址范围是0~255;还剩1位,处在“16”所在8bits的末位,
那么1位范围0 ~ 1 ,最大就是(16+1)17。
(所谓16所在8bits:我把ip地址看作是8bits . 8bits . 8bits . 8bits)

子网前缀为200.23.16的ip都发给(NextHop)ip0
子网前缀为200.23.18的ip都发给(NextHop)ip1

子网前缀为200.23.30的ip都发给(NextHop)ip7
然后这ip0~7 就路由聚集,发到ipx (前缀为200.23.16.0 /20

那,为什么就/20呢?
其实和上面算最大主机号道理一样
从/23 变到 /20 ,所以主机号又多了高位的3bits
那么 "16"所在的八位,其中低四位是主机号的高四位
所以 16+4bit(范围0~15)<= 31
刚好就聚集了左边的Organization0~8的子网ip,没有空洞ip

好比一台设备IP地址200.23.18.7
——处在Organization 1中,
——下一跳(Next)是IP地址位IP1的路由器,
——再下一跳是IPx
反过来,跳到IP地址是200.23.18.7的设备

下面9.2的图,就发挥聪明才智寄几看吧。


9.2层次编址: 特殊路由信息(more specific routes)

在这里插入图片描述


10.NAT: Network Address Translation(网络地址转换)

在这里插入图片描述

右边是本地网络,(内网),左边是内网之外的网络

  •  动机(使用NAT的原因): 本地网络只有一个有效IP地址:
    不需要从ISP分配一块地址,可用一个IP地址用于所有的(局域网)设备 –省钱
    可以在局域网改变设备的地址情况下而无须通知外界
    可以改变ISP(地址变化)而不需要改变内部的设备地址
    局域网内部的设备没有明确的地址,对外是不可见的 –安全

10.1实现: NAT 路由器必须:

  • 外出数据包:
    源地址和端口号为NAT IP地址和新的端口号,
    目标IP和端口不变 …远端的C/S将会用NAP IP地址,
    新端口号作为目标地址

  • 记住
    每个转换替换对(在NAT转换表中)
    源IP,端口 vs NAP IP ,新端口

  • 进入数据包:
    替换目标IP地址和端口号,
    采用存储在NAT表中的mapping (映射) 表项,用(源IP,端口)


  •  16-bit端口字段:
     6万多个同时连接,一个局域网!

实现: NAT 路由器图示如下
在这里插入图片描述

However,
外网设备想和内网设备友好的打交道呢?
另一方面,避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
外网只知道一个面具ip(NAT ip)并不知道这面具之下的
真实面孔(内网设备ip)
“这就是NAT 穿越的问题了"


提问
路由,代理服务器和NAT技术的区别?


10.2对NAT是有争议的

  •  路由器只应该对第3层做信息处理,而这里对端口号(4层)作了处理
  •  违反了end-to-end 原则
    •  端到端原则:复杂性放到网络边缘
       无需借助中转和变换,就可以直接传送到目标主机
    •  NAT可能要被一些应用设计者考虑, eg, P2P applications
    •  外网的机器无法主动连接到内网的机器上
  •  地址短缺问题可以被IPv6 解决
  •  NAT穿越: 如果客户端需要连接在NAT后面的服务器,如何操作

10.3NAT 穿越问题

  •  客户端需要连接地址为10.0.0.1的服务器
    •  服务器地址10.0.0.1 LAN本地地址 (客户端不能够使用其作为目标地址)
       整网只有一个外部可见地址: 138.76.29.7
      在这里插入图片描述

  •  方案1: 静态配置NAT:
    转发进来的对服务器特定端口连接请求

     e.g., (123.76.29.7, port 2500) 总是转发到10.0.0.1 port 25000

  •  方案2: Universal Plug and Play (UPnP) Internet Gateway Device (IGD) 协议.
    允许NATted主机可以:
     获知网络的公共 IP地址(138.76.29.7)
     列举存在的端口映射
     增/删端口映射 (在租用时间内)
    i.e., 自动化静态NAT端口映射配置
    在这里插入图片描述

  •  方案 3: 中继 (used in Skype)
     NAT后面的服务器建立和中继的连接
     外部的客户端链接到中继
     中继在2个连接之间桥接

在这里插入图片描述

这三个方法不作解释了,一笔带过。下面来看ipv6

11.IPV6

 初始动机: 32-bit地址空间将会被很快用完

 另外的动机:

  •  头部格式改变帮助加速处理和转发  TTL-1
     头部checksum
     分片
  •  头部格式改变帮助QoS

IPv6 数据报格式:
 固定的40 字节头部
 数据报传输过程中,不允许分片

11.1IPv6 头部 (Cont)

在这里插入图片描述

上述表格各个字段:
先回顾一下ipv4的数据报头部格式
再看看ipv6数据报头部格式

11.2和IPv4的其它变化

在这里插入图片描述

11.3从IPv4到IPv6的平移

  •  不是所有的路由器都能够同时升级的
     没有一个标记日 “flag days”
     在IPv4和IPv6路由器混合时,网络如何运转?
  •  隧道: 在IPv4路由器之间传输的IPv4数据报中携带IPv6数据报
    在这里插入图片描述

隧道(Tunneling)

在这里插入图片描述
或者,按老师的说法。
ipv4看作是大片海洋
ipv6 是这个海洋上的孤岛,
ipv6的数据报,封装成ipv4的载荷,
坐在ipv4的小船上,从一个ipv6的小岛,游啊游,游啊游,
到达另一个ipv6的小岛,再解封装。
从ipv4的载荷中蹦跶出来


然后随着时间的推移,ipv6的岛屿越来越大 (反大陆漂移学说 hhhh)
ipv4的海洋越来越小,
海平面不断下降,小岛不断融合。
最后ipv4变成了”孤岛“,ipv6成为了海洋。
这大概就是平滑的ipv6的应用。

11.4IPv6: 应用

  •  Google: 8% 的客户通过IPv6访问谷歌服务
  •  NIST: 全美国1/3的政府域支持IPv6
  •  估计还需要很长时间进行部署
    20年以上!
    看看过去20年来应用层面的变化: WWW, Facebook, streaming media, Skype, …
    为什么?
    (”留给爱思考的同学们课后思考。“)

猜你喜欢

转载自blog.csdn.net/m0_46156900/article/details/113849877