网络层-IP地址
以下内容是IPv4
IP地址长度32位,Java里面一个int的长度,总共分为5类IP地址
1:分类编址
A类IP地址0开头: A类有31个位置可以变化,总数是2^31个, [(00000000)000-127(01111111)].[0-255].[0-255].[0-255]
B类IP地址10开头, B类有30个位置可以变化,总数2^30, [(10000000)128-191(10111111)].[0-255].[0-255].[0-255]
C类IP地址110开头, C类有29个位置可以变化,总数2^29, [(11000000)192-223(11011111)].[0-255].[0-255].[0-255]
D累IP地址1110开头, D类有28个位置可以变化,总数2^28, [(11100000)224-239(11101111)].[0-255].[0-255].[0-255]
E累IP地址1111开头, E类有28个位置可以变化总数2^28 [(11110000)240-255(11111111)].[0-255].[0-255].[0-255]
1.1:俩级编址
分组先抵达主机所在的网络,然后才能找到主机
A类,B类,C类IP地址可以划分为网络标识和主机标识俩部分
A类:用1个字节标识网络地址,3个字节标识主机地址,地址块总共有2^7=128个,每个地址块有2^24+1=167777216个,为什么要+1,因为还有一个netID.00000000.00000000.00000000
B类:用2个字节标识网络地址,2个字节标识主机地址,地址块总共有2^14=16384个,(16-2(10开头)=14),每个地址块有2^16+1=65536个,+1原因同上
C类:用3个字节标识网络地址,1个字节标识主机地址,地址块总共有2^21=2097152个,(24-3(110开头)=21),每个地址块有2^8+1=256个,+1原因同上
D类:多播地址
E类:保留地址,以后使用
网络地址的作用:路由器通过IP地址,找到网络地址,咨询路由表找到相应的接口将分组转发出去.
网络掩码:
A类的网络掩码:255.0.0.0
B类的网络掩码:255.255.0.0
C类的网络掩码:255.255.255.0
网络掩码(默认掩码)的作用:使用二进制与运算从IP地址中提取网络地址
如下:
分组中目的IP地址为:201:24:67:32
可以看出是C类IP地址:那么它对应的掩码是255.255.255.0
所以:网络地址是
201.24.67.032
&
255.255.255.0
____________
201.24.67.0(网络地址)
1.2:三级编址:子网划分
IP地址最初设计为俩级编址.也就是分组先抵达主机所在的网络,然后才能找到主机,但是俩级编址的地址不够,原因如下
1:授权使用A类或B类地址块的组织.出于安全和管理的需要,有必要把自己的大网络进一步划分为若干的小网络
2:A类地址和B类地址块已经接近用完,C类地址块又太小,所以有A类和B类使用权的组织可以将自己的地址块划分为多个较小的子地址块和其他组织共享
将一个地址块分割为若干个较小的地址块的思想称为子网划分(一个网络划分成很多小网络,很多小网络又可以划分为更小的网络)
子网掩码
当一个网络没有划分子网时,使用的是网络掩码,当我们把一个网络划分成若干个子网后,就要为每个子网建立一个子网掩码
一个子网由子网标识和主机标识俩部分组成.子网划分增加网络标识的长度(把A类地址当成B类或者C类地址用),同时减少主机标识的长度
当我们把一个网络划分为s个子网且每个子网的主机数目相同时,如下计算子网标识
nsub=n+log2S
其中,n是网络标识的长度,nsub是各子网标识的长度,s是子网的数目,s必须是2的乘方
如把B类网络划分成四个子网,因此n的值是16,而n1=n2=n3=n4=16+log24=18,也就是说子网掩码有18个1,14个0组成,255.255.192.0
子网地址
当一个网络划分子网后,子网的首地址就是它的子网标识符,也就是路由器为分组选择路由使分组到大正确的子网时要用的网络标识符。
1.3:构造超网
在构造超网时,一个组织可以把若干个C类地址合并成一个更大的地址段,多个网络合并成一个超网
1.3.1:超网掩码
超网掩码和子网掩码正好相反,C类子网掩码中1的个数要比C类默认掩码中1的个数要多,而C类超网掩码中1的个数比默认掩码中1的个数少
子网掩码
11111111 11111111 11111111 11100000 nsub=24+3=27
默认掩码
11111111 11111111 11111111 00000000 n=24
超网掩码
11111111 11111111 11111000 00000000 nsuper=24-3=21
计算方式
nsuper=n-log2c
构造超网带来新的问题
1:合并为超网的地址块数目必须是2的乘方,也就是说一个组织只需要7个地址块,如果它想构造一个超网,那么它必须还要去申请一个地址块(地址浪费了)
2:分组的路由选择变的相当复杂
2:无分类编址
在分配地址时,类别特权被取消了,以此来补偿地址耗尽的问题
在无分类编址时整个地址空间被划分为许多不同的大小的地址块,理论上讲这些地址块可以有20,21,22.....个地址。唯一的限制是一个地址块中的地址数必须是2的乘方
2.1:无分类俩级编址
当一个组织被授权使用一个地址块,这个地址块也可以划分为俩个部分,前缀和后缀,前缀的作用和网络标识一样,后缀就是主机标识咯
在无分类编址中,前缀的长度取决于地址块的尺寸,它可以是0,1,2,3.....32(n),后缀的长度32-n
地址块中的地址数目与前缀长度n成反比,n越小意味着地址块越大
2.1.1:斜线记法
分类编址时:网络标识的长度是地址固有的,给定一个地址就可以求出来
无分类编址时:如果我们仅仅给地址块中的一个地址无法求出其前缀长度
所以我们把前缀的长度附加到地址后面,并用斜线隔开,如xxxx.xxxx.xxxx.xxxx/n
斜线记法的正式名称是无分类域间路由选择或CIDR记法
在无分类编址中, 我们需要知道地址块中的一个地址,以及定义该块的前缀长度
如下:一个IP地址230.8.24.56可能属于多个地址块
前缀长度16 ->地址块230.8.0.0 到 230.8.255.255
前缀长度20 ->地址块230.8.16.0 到 230.8.31.255
2.2:网络掩码
在无分类编址中,网络掩码的思想和分类编址一样,一个网络掩码就是一个32位的数,左边n位全部置1,其余未全部置0
2.3:提取地址块的信息
1.地址块的地址数N=232-n
2.地址块的首地址用网络掩码对这个地址进行与运算求出
3.末地址=地址总数+首地址,或者直接用网络掩码的反码对该地址进行或运算
2.4:地址分配
由因特网名字与号码指派公司(ICANN)进行分配,不直接向个人分配地址,它将大块的地址指派给一个ISP,遵循如下原则
1.申请的地址数N必须是2的乘方.这样前缀n才会是一个整数
2.必须是地址空间中连续未分配的地址才能被分配给申请的地址块
3.如何选择起始地址是有限制的,起始地址必须能够被地址块的地址数整除,X x 232-n,其中X是前缀的十进制值,那么起始地址就是X x N
2.5:无分类编址的子网划分
假设使用的地址数是N,前缀长度为n,分配下去每个子网的地址数为Nsub,每个子网的前缀长度为nsub
1.每个子网的地址数应当是2的乘方
2.每个子网的前缀长度应当用下面公式求得
nsub=n+log2(N/Nsub)
3.每个子网的起始地址应当能够被它的地址数整除,要做到这一点,应该先为较大的子网指派地址
3:特殊的地址
1.全0的地址
地址块0.0.0.0/32仅包含一个地址,它被保留用于某主机需要发送一个IPv4分组,但又不知道自己的地址的情况下用
主机为了找到自己的地址,就像引导服务器(DHCP)发送一个IPv4分组,并以这种全0的地址作为源地址,而用受限广播地址作为目的地址
2.全1地址,受限广播地址
地址块255.255.255.255/32仅包含一个地址,它被保留作为当前网络的受限广播地址,一个主机若想把报文发送给网络中其他所有主机,就可以用这个地址作为目的地址,但是,路由器
会把这种类型地址的分组阻挡住,这样广播只能局限在本地网络.
3.环回地址
地址块127.0.0.0/8被用作环回地址,用来测试机器上的软件,使用这个地址时,分组没有离开过机器。
4.专用地址
有一些地址被指派为专用地址,它们不会在全球被识别,用于拒绝其他网络或者用于具有网络地址转换技术的连接
如下
地址块 地址数
10.0.0.0/8 16777216
172.16.0.0/12 1047584
192.168.0.0/16 65536
169.254.0.0/16 65536
4:NAT技术
NAT网络地址转换技术
为什么需要它:假设一个ISP向某个企业授予了一小段地址的使用权,如果这个企业壮大了,需要一个较大的地址段,ISP又无法满足,
这个技术允许一个站点的内部通信使用一组专用地址,而与世界其他地方进行通信时使用另外一组地址.这个站点必须仅有一条到全球因特网的连接,而且这条连接通过了一个运行
NAT软件的具有NAT功能的路由器
4.1:地址转换
所有外出的分组都要通过这台NAT路由器,它将分组中的源地址替换为全球NAT地址,所有进入分组也要通过这台NAT路由器,它又将这些分组中的目的地址替换为相应的内部地址
怎么实现NAT技术
4.1.1:使用IP地址池实现
如果NAT路由器仅仅使用一个全球地址,那么在专用网络中,一次只允许一台主机访问某个外部主机,为了消除这个限制,NAT路由器可以使用全球地址池,
使用IP地址和端口地址
如下表
专用地址(本地局域网的源IP地址) 专用端口 外部地址 外部端口 运输船协议
172.18.1.1 1400 25.8.3.2 80 TCP
172.18.3.1 1401 25.8.3.2 80 TCP
当来自HTTP的响应返回时,源地址(25.8.3.2)与目的端口(1400)组合在一起指明了应当将这个响应分组交付给专用网络中哪一台主机(172.18.1.1)
注:(本人私有的想法)专用端口,本人觉得应该是路由器给的随机值,如果用内网发来分组中的端口,会冲突,如下
路由器外网IP地址是1.1.1.1
A:内部IP地址172.18.1.1,端口是1400,这个分组信息被转换成1.1.1.1:1400,发给25.8.3.2:80,响应分组发给1.1.1.1:1400,来自25.8.3.2:80
B:内部IP地址172.18.3.1,端口是1400,这个分组信息被转换成1.1.1.1:1400,发给25.8.3.2:80,响应分组发给1.1.1.1:1400,来自25.8.3.2:80
响应分组回来就冲突,查找表,不知道交给谁,想要详细了解NAT技术,查看RFC 1631
网络层-IP地址的更多相关文章
- 计算机网络学习笔记--网络层之IP地址与子网
IPv4地址: 我们知道在网络层(TCP/IP体系结构的网际互联层),最重要的一个协议就是IP协议,现在正处于IPv4和IPv6的过渡时期,但目前来说,IPv4仍为主流,所以主要讲Ipv4. IP地址 ...
- 计算机网络网络层的IP地址划分及子码
现在在网络层,即就是TCP/IP协议里的网际互联层,最流行IP协议的就是IPV4.其中IP地址的格式是由32位二进制数字表示的,通常为了人们阅读习惯,将其转换成点分十进制来表示,如:192.168.1 ...
- 在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统? 网络层协议 MAC帧、IP数据报、TCP报文 关系 IP地址与硬件地址 链路层与网络层
小结: 1. 网络层两种服务 虚电路服务 virtual circuit 电信网 网络层负责可靠交付 数据报服务 网络层不负责可靠交付 提供灵活的.无连接的.尽最大努力交付的数据报服务 不提供服务 ...
- 包格式及IP地址,网络层协议
包格式及IP地址,网络层协议 案例1:配置静态路由 案例2:配置浮动路由 案例3:配置多路由的静态路由 案例4:配置默认路由 1 案例1:配置静态路由 1.1 问题 配置路由接口IP地址并通过静态路由 ...
- 网络协议笔记-网络层-路由器的作用、IP地址
1-[路由器在网际互连中的作用] 1.1-[直接交付和间接交付] 直接交付:当主机A要向另一个主机B发送数据报时,要先检查目的主机B是否与源主机连接在同一个网络上.如果是,就将数据报直接交付给目的主机 ...
- mac地址和ip地址、子网掩码和默认网关
MAC地址 MAC(Media Access Control或者Medium Access Control)地址,意译为媒体访问控制,或称为物理地址.硬件地址,用来定义网络设备的位置.在OSI模型中, ...
- MAC地址与IP地址的区别
介绍一下MAC地址的知识,MAC地址和IP地址的区别以及MAC地址在实际应用中所涉及到的安全问题. 一.基础知识 如今的网络是分层来实现的,就像是搭积木一样,先设计某个特定功能的模块,然后把模块拼起来 ...
- mac地址、IP地址和端口号
看了很多遍,才整理出来我对整个通信过程的理解,大致如下,后期会不断学习补充更正: 在利用TCP/IP协议族进行通信的时候,有三个比较关键的确认身份的信息:mac地址.IP地址和端口号. mac地址是在 ...
- 如果重新设计网络,有没有可能合并IP地址跟MAC地址?
前阵子看网络基础相关的书籍,冒过一个疑问,为什么要有MAC地址跟IP地址?两者可否合二为一? 现在的逻辑是这样子:在数据传输过程中,路由器查看这个数据包的IP地址,跟路由表中记录的“IP集合:下一 ...
随机推荐
- dockerk个人学习(0)
接下来几篇记录学习docker和ks的部署搭建环境和应用部署等
- 【maven】使用import scope解决maven继承(单)问题
测试环境 maven 3.3.9 想必大家在做SpringBoot应用的时候,都会有如下代码: <parent> <groupId>org.springframework.bo ...
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(二)-- Web Api Demo
在上一篇里,我已经建立了一个简单的Web-Demo应用程序.这一篇将记录将此Demo程序改造成一个Web Api应用程序. 一.添加ASP.NET Core MVC包 1. 在project.json ...
- arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf等的区别
博客来之于: http://www.veryarm.com/296.html 命名规则: 交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] arch - ...
- UVA1252 【Twenty Questions】
分析 为了叙述方便,设"心里想的物体"为W.首先在读入时把每个物体转化为一个二进制整数.不难发现,同一个特征不需要问两遍,所以可以用一个集合s表示已经询问的特征集. 在这个集合s中 ...
- day24 python学习 类 画元,命名空间作用域,组合,人狗大战升级
类命名空间与对象.实例的命名空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两种属性:静态属性和动态属性 静态属性就是直接在类中定义的变量 动态属性就 ...
- dbt 包的构建
dbt的包是一种可以复用的代码,可以方便进行模型的共享 创建一个包 和普通的dbt 项目类似 初始化(init) dbt init [packagename] 目录结构 文件: README.md d ...
- sql 分组后显示每组的前几条记录
sql 分组后显示每组的前几条记录 如 表中记录是 code serialno A1 1 ...
- HTML图片热区map area的用法
<area>标记主要用于图像地图,通过该标记可以在图像地图中设定作用区域(又称为热点),这样当用户的鼠标移到指定的作用区域点击时,会自动链接到预先设定好的页面.其基本语法结构如下: < ...
- IE浏览器从页面向后台Controller传中文值出现乱码问题
地址前面添加encodeURI() 1. var url = encodeURI('xxxAction.action?para='+中文); $('#cc').combobox({ url : url ...