本章介绍了Internet中使用的网络层地址,又称IP地址

  要想在网上冲浪,一个设备至少要有一个IP地址(PS:我用赛风翻墙的时候,居然自动更换了IP地址,顿时感觉很神奇但是不知道为什么)

科学上网成功

  我们一般用户要向 Internet 服务提供商(ISP)支付费用,由 ISP 分配地址,用户获得地址以及路由,就像电信,联通这样的提供网络服务的通信公司。

  通常来说,我们想进个网站的时候比如百度时,只需要在网址栏输入www.baidu.com即可连上,但是如果输入的是 220.181.57.216这IP地址时也可以连上,而且响应时间会更快

  是的,为了让大家更好记住和更方便登入网站,DNS,域名服务器,发挥了自己的作用,将IP地址隐藏在那堆更容易记住的字符串中,但是因为要解析这段字符串就比纯地址慢一点

  说的这么多IP地址,这玩意大致分为IPv4地址和IPv6地址

  IPv4


  IPv4地址用点分四组表示法,如 220.181.57.216 ,并且地址长度就32位

  每个组的数字都是范围在 [0, 255] 的整数,代表 8 个 bit。即每个数字是 IP 地址的四分之一,使用简便的十进制表示。

  IPv6


  IPv6表示方法是采用块或字段的四个十六进制数,用冒号分隔,如 5f05:2000:80ad:5800:0058:0800:2023:1d71 ,并将情况细分

  1. 一个块的前导零可以不写。 如5f05:2000:80ad:5800:58:800:2023:1d71 (0058->58,0800->800)
  2. 全零块可以省略,用符号 :: 代替。但为了避免出现歧义,这个符号只能在一个地址中用一次。例如 2001:0db8:0:0:0:0:0:2  可以写成 2001:db8::2
  3. ::用于压缩最多的零,如果多个连续块包含等长度的零,则顺序靠前的用 ::替换
  4. 十六进制 a - f 用小写

除此之外,IP地址还有相应的结构,大多数 IPv4 最终被细分到一个地址,用于识别连接 Internet 或某些专用内联网的计算机网络接口。这种地址叫单播地址。其他类型包括广播、组播、任播地址等。。 

以下其他知识点大部分来自www.cnblogs.com/ZCplayground/p/7764436.html 那些表格弄起来可是真的麻烦

分类寻址


每个单播 IP 地址分为网络号(Network ID),标识该接口使用的地址在哪个网络中可以被发现,和主机地址(host ID),标识由网络号给出的网络中的特定主机。

最初的地址划分方法有五大类,主要是由地址中的头几位来定义:

开头 网络号 主机号
A类 0 8位,除去开头一个1(下同),其余7位自由 24位
B类 10 16位,14位自由 16位
C类 110 24位,21位自由 8位
D类 1110 组播地址 32位,28位自由
E类 1111 保留 32位,28位自由
地址范围 用途 网络数 主机数
A 0.0.0.0 ~ 127.255.255.255 单播/特殊 128 16777216
B 128.0.0.0 ~ 191.255.255.255 单播/特殊 16384 65536
C 192.0.0.0 ~ 223.255.255.255 单播/特殊 2097152 256
D 224.0.0.0 ~ 239.255.255.255 组播 N/A N/A
E 240.0.0.0 ~ 255.255.255.255 保留 N/A N/A

可以看出来 A 类的网络数比较少,但主机数非常多。C 类相反。从这里就可以看到,这种固定的网络地址分类,固定的网络数和主机数势必会让分配 IP 地址产生困难,协调很不方便。A 类容易浪费很多主机号,而 C 类不能提供足够的主机号。B 类地址比较折中,但很快就会耗尽,还有要注意的是,上述各类地址中,第一个和最后一个地址都不用来作为单播地址

对于一个子网来说,第一个地址(主机号全为0)一般用来表示这个子网。最后一个地址(主机号全为 1)用来将数据报广播给该子网的所有主机

子网掩码


  子网掩码(mask)用于确定一台主机对应的 IP 地址中的网络和子网信息。

  子网掩码中,设为 1 的部分,表示 IP 地址中对应的部分表示子网部分。设为 0 的部分,表示对应的是主机部分。

长度与 IP 地址相同。配置方法可以是静态的(路由器中),也可以是动态的(DHCP)。写法可以是点分十进制。也可以用一种容易记忆的前缀长度写法:斜杠带上连续的 1 的个数。

例如 子网掩码: 255.255.255.192  可以写成 /27 ,之后很多IP地址末尾都会跟上/加1的个数

其实子网掩码最重要的作用就是可以用不同长度的子网掩码应用于相同的网络号,这样能缓解了连入 Internet 的设备越来越多的问题,使每个子网支持不同数量的主机 ,也称为可变长度子网掩码

如 255.255.255.192/24 表示此子网有256台主机,而 255.255.255.192/26 表示有64台主机

广播地址


主机部分所有位置设置为 1

例如,对于子网 128.32.1.0/24,广播地址就是 128.32.1.255,这种广播作为一个单播包通过路由器到达子网后,再作为广播数据报发送给子网中的所有主机。从安全的角度来说,定向广播至今仍在 Internet 中被禁用

特殊用途地址 255.255.255.255 称为本地网络广播,将被连接在同一网络中的计算机收到,除非终端主机明确禁用。这种本地广播不会经过路由器。广播地址经常出现在协议中,例如 UDP、ICMP。

IPv6 没有任何广播地址,仅使用组播地址

  前缀


  分类寻址方案由子网掩码采取了一个类似于可变长度子网掩码的概念(可将不同长度的子网掩码用于相同的网络号),叫做 CIDR(classless interdomain routing,无类别域间路由

  • 提供一种方便的连续分配地址范围的方式。不只是单个 B 类或多个 C 类网络号可以分配给站点,使用 CIDR,任何未经过预定义的地址范围都可以作为一个类的一部分,只需要一个类似于子网掩码的掩码,称为 CIDR 掩码
  • CIDR 掩码不像 subnetting mask 只对一个站点局限,而对全球路由系统都是可见的。
  • 网络号和 CIDR 掩码的数字组合称为网络前缀(prefixes)
  • 消除 IP 地址中网络和主机号的分隔定义,将更细粒度的 IP 地址分配范围成为可能。
  • 前缀 n 的范围是 0~32 (IPv4),追加在 IP 地址后,跟着一个 / 字符。
  • 例如 C 类网络号  192.125.3.0  写成前缀形式: 192.125.3.0/24 。A 类和 B 类网络号用前缀  /8  和  /16  表示。

  如下例子,CIDR 允许根据对地址空间的不同需求,将不同大小的地址块分配给某个组织,目的也是为了缓解路由表的压力

 192.32.136.0/21

 min address:11000000 00100000 10001000 00000001
mask: 11111111 11111111 11111--- --------
IP prefix: 11000000 00100000 10001--- --------
max address:11000000 00100000 10001111 11111110 8 C networks: 192.32.136.0/24 to 192.32.143.0/24 通过使用前缀,分配 192.32.136.0/21 相当于分配了 8 个 C 类地址

特殊用途地址


  不全部列举:

地址 用途
0.0.0.0/8 本地网络中的主机
10.0.0.0/8 专用网络、内联网的地址,不会出现在公共 Internet 中
192.168.0.0/16 同上
224.0.0.0/4 组播地址
255.255.255.255/32 本地网络受限广播地址

专用地址空间管理由本地决定,在家庭网络、企业内部网络很常见,与此相关的话题是 NAT(网络地址转换)

最长前缀匹配 Longest Prefix Match


  当路由器的 IP 层需要向下一跳发送数据包时,检查目的 IP 地址,执行 最长前缀匹配 Longest Prefix Match。 IP 协议中的一个重要内容。

  • 因为使用了 CIDR ,对于一个给定的 IP 地址,可以有多个条目匹配
  • 匹配是指:目的 IP 地址与掩码按位与之后,和转发条目中的目的地字段值相同。数据包必须使用最具体最匹配的那条路由。
  • 最匹配就是在所有匹配的条目中,掩码中 1 最多的那个条目。
考虑下面这个IPv4的路由表:

192.168.0.0/16
192.168.20.16/28 在要查找地址192.168.20.19的时候,这两个表项都“匹配”。 192.168.20.19 = 11000000 10101000 00010100 00010011 匹配过程1: dst IP = 11000000 10101000 00010100 00010011
mask 16bit = 11111111 11111111 00000000 00000000
per-bit and = 11000000 10101000 00000000 00000000
192.168.0.0 = 11000000 10101000 00000000 00000000 match 匹配过程2: dst IP = 11000000 10101000 00010100 00010011
mask 28bit = 11111111 11111111 11111111 11110000
per-bit and = 11000000 10101000 00010100 00010000
192.168.20.16 = 11000000 10101000 00010100 00010000 match 这种情况下,前缀最长的路由就是192.168.20.16/28,因为它的子网掩码(/28)比其他表项的掩码(/16)要长,使得它更加明确。

 


                                                                              2018-03-29

<TCP/IP>Internet地址结构回顾的更多相关文章

  1. TCP/IP协议头部结构体(网摘小结)(转)

    源:TCP/IP协议头部结构体(网摘小结) TCP/IP协议头部结构体(转) 网络协议结构体定义 // i386 is little_endian. #ifndef LITTLE_ENDIAN #de ...

  2. 第二章 Internet 地址结构

    注意: 这个系列的博客只是为了巩固我学习的知识,参考的价值不是很大,如果需要,请转到http://www.cnblogs.com/ZCplayground/p/7764436.html Interne ...

  3. TCP/IP协议头部结构体

    TCP/IP协议头部结构体(转) 网络协议结构体定义 // i386 is little_endian. #ifndef LITTLE_ENDIAN #define LITTLE_ENDIAN (1) ...

  4. Internet地址结构

    IP地址结构及分类寻址 IP地址 = <网络号> + <主机号>            ------------IPv4(32bit)点分四组表示法: 192.168.31.1 ...

  5. TCP/IP数据包结构具体解释

    [关键词] TCP IP 数据包 结构 具体解释 网络 协议 一般来说,网络编程我们仅仅须要调用一些封装好的函数或者组件就能完毕大部分的工作,可是一些特殊的情况下,就须要深入的理解 网络数据包的结构, ...

  6. 第二章:Internet地址结构

    引言 本章主要介绍了: 如何为Internet中的设备分配IP地址. 有助于理由可扩展性的地址结构分配方式. 特殊用途的地址. 表示IP地址 IPv4地址 长32位,采用点分四组或点分十进制来表示. ...

  7. TCP/IP协议原理与应用笔记11:TCP/IP中地址与层次关系

    1. 网络中常用的地址: 2. TCP/IP中地址与层次关系 :

  8. TCP/IP 笔记 - Internet地址结构

    连接到Internet中的每台设备至少都有一个IP地址,IP地址表示了流量的来源(好比别人要找你玩,需要知道你家的地址:网络中别人需要和你通信,也需要知道IP地址),且Internet中的IP地址必须 ...

  9. 《TCP/IP 详解 卷1:协议》第 2 章:Internet 地址结构

    第二章介绍 Internet 使用的网络层地址,即熟知的 IP 地址.连接到 Internet 的设备,基于 TCP/IP 的专用网络中使用的设备都需要一个 IP 地址. 路由器(见 IP 协议 一章 ...

随机推荐

  1. Java 微信公众号迁移

    背景:公众号换主体,要迁移,粉丝(openId)的业务数据要做处理. 第一步:参照我的另一篇文章,Java 导出微信公众号粉丝. 第二部:数据处理(master-worker模式) 程序主入口:Mai ...

  2. Hbase记录-zookeeper部署

    #官网下载二进制包解压到/usr/app下,配置/etc/profile: export ZOOKEEPER_HOME=/usr/app/zookeeper export PATH=$PATH:$ZO ...

  3. Web前端框架与移动应用开发第八章

    Web前端框架与移动应用开发:制作58招聘专题页 1.html代码: <!DOCTYPE html><html><head> <meta charset=&q ...

  4. THE DEFINITIVE GUIDE TO DEBUGGING JAVASCRIPT

    FIGURING OUT WHERE THE ERROR COULD BE READ THE CODE USING THE CONSOLE THE CHROME DEV TOOLS THE DEBUG ...

  5. 使用JAVA数组实现顺序栈

    1,首先总结一下线性表(分为顺序表和链接表,[即顺序存储结构和链式存储结构的区别])和栈(顺序栈和链接栈)还有队列(顺序队列和链接队列)的JAVA类库中的实现: java.util.ArrayList ...

  6. 万能五笔输入法"@相反

    经过查找资料,发现是因为键盘使用的英国导致,改为美国解决,其他输入法没发现这个问题.

  7. Lua Doc生成工具

    Luadoc http://keplerproject.github.io/luadoc/ Overview LuaDoc is a documentation generator tool for ...

  8. undefined symbol

    参考链接:  https://blog.csdn.net/shatterheart/article/details/52440149

  9. 异步Async

    1.c#异步介绍 异步必须基于委托,有委托才有异步 新建一个window Form程序MyAsync,添加一个按钮,(name)=btnAsync 后台代码如下: using System;using ...

  10. 【如何使用jQuery】【jQuery弹出框】【jQuery对div进行操作】【jQuery对class,id,type的操作】【jquery选择器】

    1.如何使用jQuery jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨 ...