这节课我们来学习一个非常重要的概念,就是IPv4地址,其实也是我们常用的IP地址。

首先我们来了解一下,为什么会有IP地址的出现以及它是做什么用的。假如说在很多年前我遇到一个女生非常的漂亮,等了十年之后呢我现在又想起这个女生,我又想找她。可是呢我在这个茫茫人海当中怎么样才能找到我这个女神呢?

这节课我们来学习一下网络地址转换,NAT这种技术。

那在上节课当中呢我们学习了一类地址叫做私有IP地址,也可以叫做本地IP地址。那这一些地址呢都是应用于本地网络或者是专用网。比如说一个单位啊或者是学校啊、机房,啊这些都是私有IP地址所使用的一个范围。但是它之所以叫做私有,就是它只可以在本网、本地网、专用网当中使用。那在大的互联网当中、广域网当中,这个路由器啊以及其他的主机是无法识别出这些IP地址的。

也就是说路由器对于目的IP地址是私有IP地址的数据报都不会进行转发。也就是说这个私有IP地址,在外网或者是在因特网当中,是无效的。那这个私有IP地址能否和外部网络当中的主机进行通信呢?当然是可以的。我们可以想象一下我们在学校的机房,那机房的电脑呢它的IP地址都是啊192.168.多少多少啊,大部分都是这样的。那我们在上Java课的时候,如果这个实验已经做完了,那剩下的时间呢可能有的同学就会利用学校这个机房的电脑然后去玩玩游戏看看电影,那这个其实就是在和外部的互联网、因特网建立起了通信。那这个通信的过程是如何建立出来的呢,或者说本地的这个IP地址是如何和跟因特网上的主机进行通信呢?

那就是这节课要讲的——网络地址转换NAT这种技术。那这个技术其实也很简单,只需要在这个专用网和因特网之间这个路由器上面安装一个叫NAT的软件。那安装了这个软件之后呢,这个路由器就变身为一种叫做NAT的路由器,NAT路由器。那这个路由器呢它至少会有一个有效的外部全球IP地址,当然也可以有多个IP地址。那这样,所有使用本地地址的这个主机,在和外界通信的时候,都需要经历这样一个NAT路由器的一个地址转换,就可以实现和这个外部的主机进行通信了。那假如说现在有这个主机A,然后这儿有一台主机B,那A的IP地址呢或者说A的本地IP地址呢是192.168.0.3。那只有一台和它同在一个本地网当中、一个专用网当中的电脑,它的主机呢它的IP地址呢是192.168.0.4。

那它们俩个呢都共同处在这样一个专用网当中,这个专用网的网络号是192.168.0.0,也就是这个IP地址标识的是这样一个网络。那么这个专用网当中的所有主机的IP地址,它的表示方法都是192.168.啊多少多少。

那这个专用网为了和因特网上面的主机进行通信,就需要经过这个NAT的路由器。那NAT路由器它现在有一个全球IP地址,是172.38.1.5。那其实这个IP地址呢就相当于是这一些本地网当中主机的一个代表IP地址。这些主机呢,如果要把自己的数据发到网上去,那就要以这个IP地址作为自己的一个伪装,啊或者说作为自己的这样一个代表,用这个地址给别人去发送数据。那当然如果别人要给这个本地网当中的主机发数据呢,数据报当中的目的地址,要添的也是这个路由器,要先发给这个本地网当中的代表,然后这个代表再把这个数据报分发给具体的这个主机。

那这个网络地址转换实现的一个关键就是在于NAT路由器它有一个NAT的转换表。啊那个转换表呢主要是分成两列,一个是广域网端一个是局域网端,也可以说是外网端以及内网端、本地网端。那可以看到,这每一份信息啊它都是包含两个部分。一个呢是我们常用的点分十进制的IP地址,那另一个呢就是这个端口号。

端口号这个概念是我们在传输层当中所要学到的,端口号它可以唯一标识主机当中的某一个具体进程。比如说我这台电脑现在打开了QQ和微信,那这个QQ和微信它每一个进程都会保留或者说都会使用一个端口号。那在同一主机内呢,不同进程它的端口号是不同的。可是在不同主机内,啊这个进程它们的端口号可以是相同的。那具体的细节呢我们在传输层再去讲。

那我们现在就来看一下这个网络地址转换的过程。假如说现在A主机要和B主机通信,A呢就给B发送一个数据报,在网络层这个地方就要封装上源IP地址和目的IP地址。那这个源IP写的就是这个192.168.0.3,目的IP呢就是这个B主机的IP地址。

同样,到了这个传输层再一步封装,就要加上这个端口号。那这里面端口号呢我们就暂时定它为是30000。那这个数据报呢,到了这个NAT路由器,也就是到了这个本地网的代表这儿,就需要实现一个网络地址转换的过程了。那怎么转换呢,其实就是把源IP地址和这个端口号,这两个字段替换一下。替换成什么呢?就根据这个转换表当中所对应的,啊我们刚才这个源IP和端口号是这样的。那现在替换呢?就替换成它这一行所对应的在外网当中所使用的IP地址以及这个端口号。那这个源IP呢就会替换成路由器的IP地址,端口号呢就会替换成这个40001。那因此,这样一个数据报在因特网当中,就是可以被路由器以及主机所识别而且转发的。那这个数据报到了B端,B端也可以正确地接收。

那现在呢B主机如果要给这个C主机发送数据。它还是要先准备好一个数据报,那添上这个源地址和目的地址。源地址写的就是B主机的IP地址,目的地址呢?我们刚才说了,目的地址添的应该是这个路由器,也就是本地网当中的这个代表,添它的地址,啊也就是172.38.多少.多少这样一个地址,然后呢再到传输层上面封装,添上这个端口号。那现在呢假如说我们这个进程所对应的端口号是这个40002,40002。好,那这个数据报呢就是可以在网络上面得到转发的了。现在,它经过这个因特网,传到了NAT路由器这儿。那现在这个NAT路由器就要把这个数据报啊查看一下,然后呢再把地址转化一下,才能够分发给这个本地网当中的具体某一台主机。再根据172.38.1.5以及这个40002,它知道应该对应到内网当中的是这样一个IP地址和端口号。所以呢,就替换成192.168.0.4这样一个目的地址,啊。目的地址替换一下,端口号呢再替换一下,替换成30001啊。那这个数据报呢就可以传给本地网当中的这个C主机了。那这就是网络地址转换的一个过程。在经历了这个NAT路由器之后,源地址和端口号或者是目的地址和端口号都要发生替换发生变化。这也是NAT路由器与其他路由器不同的地方。那这个网络地址转换NAT技术呢,我们就讲到这里。

这节课我们来学习一下子网划分与子网掩码的内容。

那在上节课呢我们学了这种分类的IP地址,包括A、B、C、D、E这5类。那它这种分类的编址方式呢,存在着一定的问题。首先第一个问题就是IP地址空间的利用率有时候是会非常低的。就拿这个A类地址来说,A类地址它的网络号占的是一个字节,主机号呢占用的是3个字节,那对应于A类当中的一个网络呢,可以分配的主机个数就至少有1000万个。而且每一个B类的这个地址呢,它主机号啊或者说它可以分配的主机个数呢就会至少有6万台。然而有的网络呢会对这个连接在网络上的计算机数目有一定的限制,那根本是达不到这么多的主机个数的数值,所以呢是对资源的一种浪费。就好比有的单位啊,它为自己这个单位申请一系列的这个IP地址。那他申请到B类的这个网络,B类的这样一个网络,但是呢所连的主机并不会很多。

这节课我们来学习一下无分类编址CIDR。

那在上节课当中呢我们学习了这个划分子网的技术,这种技术呢在一定程度上减缓了IP地址即将消耗殆尽的情况。但是呢它也存在一定的问题。啊虽然我们划分了子网,但是由于我们这个B类地址啊各个厂商它们都争着用,那B类地址呢在1992年的时候它已经使用了将近一半了,已经分配了一半了,所以我们这个IP地址的资源呢也变得越来越少。那为了解决这个困难呢,我们现在又产生了这种无分类编址的CIDR技术。那这个CIDR呢,其实是在划分子网的这样一种技术的基础之上,啊才产生的一个新的技术。我们知道在划分子网的时候,假如说对应这样一个大的网络,啊现在对应一个大的网络。比如说这是一个单位,那这个单位内部呢它肯定有很多个部门,它为了方便这个管理,啊或者是方便这个数据通信,它就把这个部门,各个部门分配给了一个子网。那表现出来的呢就是这一个网络,啊这里有一个路由器,那这一个网络在外部看来它是一个完整的网络,但是如果进入到这个路由器,就打开了一个新世界的大门,就可以发现其实这个网络内部呢是分成了好几个子网的。那这里面的子网它们所使用的子网掩码,啊一般都是相同的,都使用的是相同的子网掩码,

好,就比如说,假如说对应于这样一个IP地址,它四个部分,它四个字节。那我们是啊取出这个第三个字节作为子网号。假如说这是一个B类地址啊,取出第三个字节作为子网号的话,啊那它可以分配很多个子网。那现在呢对应于这个单位可能现在只分了四个子网,啊也就是我们可以分成,啊这个是末尾两位是00,01,10和11。啊,前面它们都是一样的,啊也可以不一样,反正都随意。只要是4种不同的二进制组合就ok了。那就分了四个子网。那这种掩码呢,其实叫做定长的子网掩码,啊定长的子网掩码。但是有的人就提出了可不可以出现一种变长子网掩码呢?什么叫变长的子网掩码?也就是说即使我们这些啊子网它们都是在一个网络,在一个单位下的。但是呢,它们所使用的子网掩码可以不同。啊比如说这个网络它现在使用的子网掩码,是是这个7位都是1。啊前面的几个都是1,连续的1,然后这是7位的1。然后呢,这个第二个子网它所使用子网掩码可能是在这个字节上面是有6个连续的1。第三个这个子网呢,它所对应的子网掩码可能是啊有5个连续的1,然后再加上3个0。啊那这个就是变长的子网掩码。那这种子网掩码呢可以进一步地提高这个IP地址的资源的利用率。因为我们可以看到如果这一个单位内它采用的是变长的子网掩码的话,那对于不同的子网它可以分配的主机的个数其实也就各不相同了。

那比如说我现在这个人力部门呢,它要这个,啊人比较多,这个部门人比较多,可以使用的主机数就比较多。那因此呢,我们这个采用变长子网掩码就可以给它分配一个较短的子网掩码,啊较短的子网掩码。那这样主机数,可以分配的数量就会变得很多。那像其他有的部门,啊比如说是这个办公室部门,办公室部门呢可能这个人比较少。那人比较少的话我就可以给它分一个较长的子网掩码,然后呢主机个数、主机位数稍微少一点。那这样呢就比较合理地分配IP地址的一个资源,而不是说每一个子网都是相同的主机个数。那可以看到这种变长子网掩码呢,是比较灵活的。那因此,在这种变长子网掩码的基础之上,我们就研发出了这种无分类的编址方法。

那我们来正式看一下,这个无分类编址CIDR呢,它也叫做无分类域间路由选择CIDR。

那这种CIDR的特点呢就是它消除了传统的A类、B类、C类地址以及划分子网的概念。也就是我们IP编址的前两个阶段全都抹去,啊我们有一个新的开始,使用这种CIDR的技术。

那消除这个A、B、C类以及划分子网的概念,主要就体现在它对于这个IP地址的一个结构划分。

首先我们来看对于传统的A、B、C类,分为两个部分,也就是两类编址,网络号和主机号。那对于划分子网呢,啊在这种技术下我们把一个IP地址分成三个部分,网络号、子网号和主机号。那这个子网呢是从主机号当中取出几个高位来做的这样一个字段。那它消除了这两个概念变成了什么呢?啊

这节课我们来学习一下ARP协议。

首先呢我们来缕清一下这个发送数据一个过程。在第一章的时候我们就学习了,这个发送数据的时候呢,是要经历一个对数据的封装以及解封装的过程。但是具体封装的什么内容呢?就是要根据我们不同层次的一个协议规定。比如说我们在网络层呢就要加头,那在链路层呢就要加头加尾。而这两个头里面呢最主要的就是加了IP地址和MAC地址,也就是逻辑上这个地址以及物理地址。那这节课我们就要把这个发送过程当中的一些具体细节搞清楚。

首先我们来看这样一个图。好,这是有一台主机,连在一个集线器物理层设备上,然后呢再连接一个交换机链路层设备。那这个交换机的两个端口呢再引出两条线连接主机2和主机3。那接下来这个交换机就连接一个路由器。那可以看到这里面,其实左边这一部分,就算是一个局域网。那这个路由器呢接下来又连到另一个路由器上,那这个路由器呢又连到了一个交换机上面。交换机呢又从两个端口引出了两条线,连接主机4和主机5。那右边这部分呢也算是一个局域网。那我们就结合这个图,来看一下发送数据的具体过程。

首先啊,对于我们这个主机来说呢,它在发送数据的时候呢要把这个数据进行封装,那就要经历这5层结构。啊我们现在这本书的讲解都是基于这5层结构的。首先呢在应用层,如果主机1要发送1个文件。那这里面,它假如说要发送给这个3号主机。也就是发送在一个网段内的,一个网段内的主机。那接下来在传输层的时候呢就要把这个大的报文分段,就形成了报文段,也就是传输层的传输单元。那这里面是否分段呢,要根据应用层的数据的大小。那这里面的文件如果比较大的话呢,在传输层就要进行一个分段。

那接下来到了网络层,网络层我们

【知识强化】第四章 网络层 4.4 IPv4的更多相关文章

  1. 【知识强化】第四章 网络层 4.3 IP

    这节课我们来学习一下IP数据报的格式.那之所以把路由算法这一小节跳过呢,就是因为我们之后会要讲到路由的选择协议.那在路由选择协议这一块讲路由算法,我觉得是比较合适的.那我们先来看一下这节课要讲的知识. ...

  2. 【知识强化】第四章 网络层 4.5 IPv6

    这节课我们来学习一下IPv6. 首先呢我们来看一下为什么会有IPv6的产生.由于我们之前探讨过,对于IPv4这种编址方式呢,这个地址线已经被消耗殆尽了,已经没有剩多少地址.所以我们就学习了两种技术,一 ...

  3. 【知识强化】第四章 网络层 4.8 移动IP

    这节课我们来学习一下移动IP. 那移动IP呢要跟动态IP区分开.动态IP是指,通过使用DHCP协议,在一个局域网内部的一台主机,就可以动态地获得一个IP地址.那这里面的移动IP是什么意思呢? 我们来举 ...

  4. 【知识强化】第四章 网络层 4.7 IP组播

    这节课我们来学习一下IP组播. 首先我们来看这样一个问题,IP数据报在网络当中传输的时候,有几种传输方式呢?三种,分别是单播.广播和组播(多播).这个组播呢也叫做多播,它们俩是一个意思.那这个组播是由 ...

  5. Android初级教程理论知识(第四章内容提供器)

    之前第三章理论知识写到过数据库.数据库是在程序内部自己访问自己.而内容提供器是访问别的程序数据的,即跨程序共享数据.对访问的数据也无非就是CRUD. 内容提供者 应用的数据库是不允许其他应用访问的 内 ...

  6. 【知识强化】第二章 数据的表示和运算 2.4 算术逻辑单元ALU

    从本节开始我们就进入到本章的最后一节内容了,也就是我们算术逻辑单元的它的实现.这部分呢是数字电路的一些知识,所以呢,如果你没有学过数字电路的话,也不要慌张,我会从基础开始给大家补起.那么在计算机当中, ...

  7. unix环境高级编程基础知识之第四章

    1.从当前用户转到root用户:直接输入su命令,然后输入root密码,如果之前没有设置root命令密码会登陆不成功,这里需要命令sudo passwd命令设置密码,然后按照上面输入就成:从root命 ...

  8. Java基础知识笔记第四章:类和对象

      编程语言的几个发展阶段 面向机器语言 面向过程语言 面向对象语言:封装.继承.多态 类 类声明 class Person{ ....... } class 植物{ ....... } 类体 类使用 ...

  9. 《计算机网络》谢希仁(第7版) 第四章 c语言http://c.biancheng.net/cpp/html/3137.html

    第四章 网络层 电信网使用面向连接的通信方式,使电信网络能够向用户提供可靠传输的服务. 互联网设计思路:网络层向上只提供简单灵活的.无连接的.尽最大努力交付的数据报(分组)服务. 网络层不提供可靠传输 ...

随机推荐

  1. 一、RabbitMQ安装与测试连接

    一.下载NuGet支持的RabbitMQ.Client客户端库与安装RabbitMQ服务. 1.安装客户端库操作服务. 2.安装服务. 步骤一.下载Erlang. 步骤二.下载RabbitMQ服务 采 ...

  2. Android_Refrogit与RxJava结合使用(转)

    Refrogit与RxJava结合的使用    达到了非常简单就可以完成请求网络 一:1.0示例: 1.导入依赖 compile 'io.reactivex:rxjava:1.3.4'compile ...

  3. java23种设计模式(四)-- 桥接模式

    参考地址:http://www.jasongj.com/design_pattern/bridge/ 实现系统可从多种维度分类,桥接模式将各维度抽象出来,各维度独立变化,之后可通过聚合,将各维度组合起 ...

  4. html5 图片墙

    代码实例: <!DOCTYPE html> <html> <head> <style> body,html{ padding:0;margin:0;wi ...

  5. 威胁预警|Solr velocity模板注入远程命令执行已加入watchbog武器库,漏洞修补时间窗口越来越短

    概述 近日,阿里云安全团队监测到挖矿团伙watchbog更新了其使用的武器库,增加了最新Solr Velocity 模板注入远程命令执行漏洞的攻击方式,攻击成功后会下载门罗币挖矿程序进行牟利.建议用户 ...

  6. PHP 利用 curl 发送 post get del put patch 请求

    因为需要在 php 开发中对接其它接口需要用 php curl 去对接其它接口 我把他们封装成函数 希望能对大家有所帮助. 这里面是封装好的会自动把 data 进行转成 json 格式,同时解码成 p ...

  7. http_load(基于linux平台的一种性能测试工具)

    http_load  是运行在linux操作系统上的命令行测试工具, 用来对网站做压力测试.http_load以并行复用的方式运行,用以测试web服务器的吞吐量和负载.但是它不同于大多数压力测试工具, ...

  8. blob格式导出文件

    最近在做blob流导出相关功能,其中需要导出excel.csv.word.zip压缩文件之类的,在导出excel和word中需要知道对应的content-type属性,正好看到下面这篇文章,感觉挺好的 ...

  9. window 2008/2012计划任务配置

    很多人在问我: 1.Windows Server 2008 计划任务在哪里配置? 2.Windows Server 2008 可以配置每分钟或是每小时执行我的任务吗? 答案是:可以! 首先Window ...

  10. 【Jmeter基础】 Linux上运行Jmeter

    Jmeter 是一个强大的并发压测工具,常用于性能测试,压力测试,接口测试等领域.本文将介绍如下内容: 1. Jmeter 执行阶梯式压测 2. Jmeter 如何压测网站的js,css 等资源 3. ...