网络层-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集合:下一 ...
随机推荐
- EasyTouch基本用法
EasyTouch基本用法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 hierarchy (层次面 ...
- PHP CURL HTTPS内存泄露问题
还原场景:通过一直运行脚本,向微信用户发送模板消息,发现运行了一段时间,内存就爆了,然后立马看了一下代码,发现跟其他的消息逻辑一模一样,唯一不一样的就是请求了微信的接口:然后继续开始找问题,发现当时使 ...
- JNI学习笔记_C调用Java
一.笔记 1.C调用Java中的方法,参考jni.pdf pg97可以参考博文:http://blog.csdn.net/lhzjj/article/details/26470999步骤: a. 创建 ...
- ExtJs 4.0 DeskTop集成 百度地图API
经过3天的奋斗最终搞了出来, 网上的资料非常少,希望小⑦的文章对读者有点帮助,PS:小⑦非常努力的~. 不废话,上代码了. 首先.去百度官网Copy一个模版 http://api.map.baidu. ...
- 《Entity Framework 6 Recipes》中文翻译 ---- 系列教程
为了方便大家的阅读和学习,也是响应网友的建议,在这里为这个系列做一个目录.在目录开始这前,我先来回答之前遇到的几个问题. 1.为什么要学习EF? 这个问题很简单,项目需要.这不像学校,没人强迫你学习! ...
- TFTP error: 'Only absolute filenames allowed' (2)
hisilicon # tftp 0x82000000 u-boot-hi3518ev200.bin Hisilicon ETH net controler MAC: ----- eth0 : phy ...
- 在 Windows 上使用 Cygwin
引用:http://www.ibm.com/developerworks/cn/aix/library/au-spunix_cygwin/#resources Cygwin 是一个用于 Microso ...
- 多线程执行顺序诡异现象谈,你不知道的pthread_create
引文:学而时习之,不亦说乎.总是忙于具体项目,业务功能的实现:关于编程本身的技能都要有些生疏了,于是就选择了几个专题做了一次温习,重点放在了多线程和多进程上,跑了一个实例,居然有新的发现: (1)多个 ...
- 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回
作者:ssslinppp 时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...
- [转]Windows服务“允许服务与桌面交互”的使用和修改方法
上一篇文章是纯 C# 代码的形式勾上 “允许服务与桌面交互” 选项的 本文转载自:http://blog.csdn.net/lanruoshui/article/details/4756408 描述: ...