未解决
此帖子已超过 5 年
2 Intern
•
1.2K 消息
31
508016
网络基本功系列:细说网络那些事儿(3月26日更新)
网络基本功(一):细说网络传输
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese
介绍
常言道:欲练神功,必先练好基本功。之前做了一个关于IP路由,默认网关和掩码的问答贴,做完这个帖子觉得如果对网络知识点做一个系统的阐述,应该会很有帮助。
本系列文章着重于讲解网络管理实际应用中常常涉及的重要知识点,尽量以实用为主。准备写的几个章节暂时有(可能会有增减):
- 网络传输
- 交换机
- VLAN与Trunk
- 路由(上)
- 路由(下)
- 链路聚合
- IP地址与子网
- NAT原理与配置
- ICMP与ARP
- TCP滑动窗口
- TCP重传
- TCP确认机制
- TCP窗口调整与流控
- Wireshark抓包实例诊断TCP连接问题 (精)
- Wireshark抓包实例诊断TCP重传 (精)
- Wireshark抓包实例诊断TCP重复ACK与乱序 (精)
- Wireshark抓包实例诊断TCP窗口与reset (精)
- Wireshark抓包实例诊断HTTP问题 (精)
- Wireshark抓包实例诊断数据库问题
- HTTP(上)
- HTTP(下)
- DNS(上) (NEW)
- 细说Linux网络配置(上)
- 细说Linux网络配置(下)
- 常用诊断工具:ping
- 网络性能监测与实例(上)
- 网络性能监测与实例(下)
- tcpdump的妙用 (上)
- tcpdump的妙用(下)
更多信息
首先来看一个例子:
示例:网络服务器向客户端传送数据的过程:
在详细阐述网络传输过程之前,先来看一个最常见的例子,下图显示了一个网络服务器向客户端传送数据的完整过程:
1. 需要传送的数据是网络服务器的HTML页面。
2. 应用协议HTTP报文头添加到HTML数据之前。报文头信息包括:服务器所使用的HTTP版本,以及表明它包含发给网络客户端信息的状态编码。
3. HTTP应用层协议将HTML格式的网页数据发送给传输层。TCP传输层用于管理网络服务器和客户端之间的会话。
4. IP信息添加到TCP信息之前。IP指定适当的源和目的IP地址。这些信息就构成了IP报文。
5. 以太网协议添加到IP报文的两端之后,就形成了数据链路帧。上述帧发送至通向网络客户端的路径上的最近一个路由器。路由器移除以太网信息,观察IP报文,判定最佳路径,将报文插入一个新的帧,并发送至目标路径上下一个相邻路由器。每一个路由器在转发之前都移除并添加新的数据链路层信息。
6. 数据通过互联网络传输,互联网络包含媒介和中间设备。
7. 客户端接收到包含数据的数据链路帧,处理各层协议头,之后以添加时相反的顺序移除协议头。首先处理并移除以太网信息,之后是IP协议信息,接下来TCP信息,最后是HTTP信息。
8. 之后,将网页信息传递给客户端网页浏览器软件。
数据封装:
消息要在网络中传输,必须对它进行编码,以特定的格式进行封装,同时需要适当地封装以足够的控制和地址信息,以使它能够从发送方移动到接收方。
消息大小
理论上,视频或邮件信息是能够以大块非中断型流从网络源地址传送到目的地址,但这也意味着同一时刻同一网络其他设备就无法收发消息。这种大型数据流会造成显著延时。并且,如果传输过程中连接断开,整个数据流都会丢失需要全部重传。因此更好的方法是将数据流分割(segmentation)为较小的,便于管理的片段,能够带来两点好处:
· 发送较小片段,网络上同时可有多个会话交错进行。这种在网络上将不同会话片段交错进行的过程称为多路传输(multiplexing)。
· 分割可提高网络通讯的可靠性。各消息片段从源地址到目的地址无需经过相同路径,如果一条路径被堵塞或断开,其余消息可从替换路径到达目的地址。如果部分消息到不了目的地址,那只需重传丢失部分。
通过对片段打上标签的方式来保证顺序以及在接收时重组。
协议数据单元(Protocol Data Unit, PDU)
应用层数据在传输过程中沿着协议栈传递,每一层协议都会向其中添加信息。这就是封装的过程。
数据片段在各层网络结构中采用的形式就称为协议数据单元(PDU)。封装过程中,下一层对从上一层收到的PDU进行封装。在处理的每一个阶段PDU都有不同的名字来反应它的功能。
PDU按照TCP/IP协议的命名规范:
· 数据(Data):应用层PDU的常用术语
· 分段(Segment):传输层PDU
· 帧(Frame):网络层PDU
· 比特(Bits):在介质上物理传输数据所使用的PDU。
封装
封装是指在传输之前为数据添加额外的协议头信息的过程。在绝大多数数据通信过程中,源数据在传输前都会封装以数层协议。在网络上发送消息时,主机上的协议栈从上至下进行操作。
以网络服务器为例,HTTP应用层协议发送HTML格式网页数据到传输层,应用层数据被分成TCP分段。各TCP分段被打上标签,称为头(header),表明接收方哪一个进程应当接收此消息。同时也包含使得接收方能够按照原有的格式来重组数据的信息。
传输层将网页HTML数据封装成分段并发送至网络层,执行IP层协议。整个TCP分段封装成IP报文,也就是再添上IP头标签。IP头包括源和目的IP地址,以及发送报文到目的地址所必须的信息。
之后,IP报文发送到接入层,封装以帧头和帧尾。每个帧头都包含源和目的物理地址。物理地址唯一指定了本地网络上的设备。帧尾包含差错校正信息。最后,由服务器网卡将比特编码传输给介质。
解封装
接收主机以相反的方式进行操作称为解封装。解封装是接收设备移除一层或多层协议头的过程。数据在协议栈中向上移动直到终端应用层伴随着解封装。
访问本地资源:
访问本地网络资源需要两种类型的地址:网络层地址和数据链路层地址。网络层和数据链路层负责将数据从发送设备传输至接收设备。两层协议都有源和目的地址,但两种地址的目的不同。
示例:客户端PC1与FTP在同一IP网络的通信
网络地址
网络层地址或IP地址包含两个部分:网络前缀和主机。路由器使用网络前缀部分将报文转发给适当的网络。最后一个路由器使用主机部分将报文发送给目标设备。同一本地网络中,网络前缀部分是相同的,只有主机设备地址部分不同。
源IP地址:发送设备,即客户端PC1的IP地址:192.168.1.110
目的IP地址:接收设备,即FTP服务器:192.168.1.9
数据链路地址
数据链路地址的目的是在同一网络中将数据链路帧从一个网络接口发送至另一个网络接口。以太网LAN和无线网LAN是两种不同物理介质的网络示例,分别有自己的数据链路协议。
当IP报文的发送方和接收方位于同一网络,数据链路帧直接发送到接收设备。以太网上数据链路地址就是以太网MAC地址。MAC地址是物理植入网卡的48比特地址。
源MAC地址:发送IP报文的PC1以太网卡MAC地址,AA-AA-AA-AA-AA-AA。
目的MAC地址:当发送设备与接收设备位于同一网络,即为接收设备的数据链路地址。本例中,FTP MAC地址:CC-CC-CC-CC-CC-CC。
源和目的MAC地址添加到以太网帧中。
MAC与IP地址
发送方必须知道接收方的物理和逻辑地址。发送方主机能够以多种方式学习到接收方的IP地址:比如域名系统(Domain Name System, DNS),或通过应用手动输入,如用户指定FTP地址。
以太网MAC地址是怎么识别的呢?发送方主机使用地址解析协议(Address Resolution Protocol, ARP)以检测本地网络的所有MAC地址。如下图所示,发送主机在整个LAN发送ARP请求消息,这是一条广播消息。ARP请求包含目标设备的IP地址,LAN上的每一个设备都会检查该ARP请求,看看是否包含它自身的IP地址。只有符合该IP地址的设备才会发送ARP响应。ARP响应包含ARP请求中IP地址相对应的MAC地址。
访问远程资源:
默认网关
当主机发送消息到远端网络,必须使用路由器,也称为默认网关。默认网关就是位于发送主机同一网络上的路由器的接口IP地址。有一点很重要:本地网络上的所有主机都能够配置自己的默认网关地址。如果该主机的TCP/IP设置中没有配置默认网关地址,或指定了错误的默认网关地址,则远端网络消息无法被送达。
如下图所示,LAN上的主机PC 1使用IP地址为192.168.1.1的R1作为默认网关,如果PDU的目的地址位于另一个网络,则主机将PDU发送至路由器上的默认网关。
与远端网络设备通讯
下图显示了客户端主机PC 1与远端IP网络服务器进行通讯的网络层地址与数据链路层地址:
网络地址
当报文的发送方与接收方位于不同网络,源和目的IP地址将会代表不同网络上的主机。
源IP地址:发送设备即客户端主机PC 1的IP地址:192.168.1.110。
目的IP地址:接收设备即网络服务器的IP地址:172.16.1.99。
数据链路地址
当报文的发送方与接收方位于不同网络,以太网数据链路帧无法直接被发送到目的主机。以太网帧必须先发送给路由器或默认网关。本例中,默认网关是R1,R1的接口IP地址与PC 1属于同一网络,因此PC 1能够直接达到路由器。
源MAC地址:发送设备即PC 1的MAC地址,PC1的以太网接口MAC地址为:AA-AA-AA-AA-AA-AA。
目的MAC地址:当报文的发送方与接收方位于不同网络,这一值为路由器或默认网关的以太网MAC地址。本例中,即R1的以太网接口MAC地址,即:11-11-11-11-11-11。
IP报文封装成的以太网帧先被传输至R1,R1再转发给目的地址即网络服务器。R1可以转发给另一个路由器,如果目的服务器所在网路连接至R1,则直接发送给服务器。
发送设备如何确定路由器的MAC地址?每一个设备通过自己的TCP/IP设置中的默认网关地址得知路由器的IP地址。之后,它通过ARP来得知默认网关的MAC地址,该MAC地址随后添加到帧中。
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年12月21日 22:00
以前做的是比较底层的。这个系列其实还是偏重比较基础的概念~谢谢支持。
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年12月21日 22:00
交换机的端口是物理端口,网络监听的端口是逻辑端口,这种端口是用来区分网络服务用的通信协议端口,是不一样的概念。
看一下百度百科:
如果把IP地址比作一间房子 ,端口就是出入这间房子的门。
在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据包根据其目的主机的ip地址来进行互联网络中的路由选择。可见,把数据包顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。
本地操作系统会给那些有需求的进程分配协议端口(protocol port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据包后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。
NAT技术我会专门写一节,欢迎继续观看~
stephen_feng
7 消息
0
2014年12月22日 02:00
谢啦,学着学着脑袋迷糊了,看了一下确实不是指的同一个,PAT实现中提到也不是。继续看下去。。。
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年12月22日 18:00
网络基本功(十八):细说tcpdump的妙用(下)
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese
更多信息
(承接上文)
过滤:
要有效地使用tcpdump,掌握过滤器非常必要的。过滤允许用户指定想要抓取的数据流,从而用户可以专注于感兴趣的数据。此外,ethereal这样的工具使用tcpdump过滤语法来抓取数据流。
如果用户很清楚对何种数据流不感兴趣,可以将这部分数据排除在外。如果用户不确定需要什么数据,可以将源数据收集到文件之后在读取时应用过滤器。实际应用中,需要经常在两种方式之间转换。
简单的过滤器是加在命令行之后的关键字。但是,复杂的命令是由逻辑和关系运算符构成的。对于这样的情况,通常最好用-F选项将过滤器存储在文件中。例如,假设testfilter 是一个包含过滤主机205.153.63.30的文本文件,之后输入tcpdump –Ftestfilter等效于输入命令tcpdump host 205.153.63.30。通常,这一功能只在复杂过滤器时使用。但是,同一命令中命令行过滤器和文件过滤器不能混用。
地址过滤:
过滤器可以按照地址选择数据流。例如,考虑如下命令:
bsd1# tcpdump host 205.153.63.30
该命令抓取所有来自以及发往IP地址205.153.63.30的主机。主机可以通过名称或IP地址来选定。虽然指定的是IP地址,但抓取数据流并不限于IP数据流,实际上,过滤器也会抓到ARP数据流。限定仅抓取特定协议的数据流要求更复杂的过滤器。
有若干种方式可以指定和限制地址,下例是通过机器的以太网地址来选择数据流:
bsd1# tcpdump ether host 0:10:5a:e3:37:c
数据流可进一步限制为单向,分别用src或dst指定数据流的来源或目的地。下例显示了发送到主机205.153.63.30 的数据流:
bsd1# tcpdump dst 205.153.63.30
注意到本例中host被省略了。在某些例子中省略是没问题的,但添加这些关键字通常更安全些。
广播和多播数据相应可以使用broadcast和multicast。由于多播和广播数据流在链路层和网络层所指定的数据流是不同的,所以这两种过滤器各有两种形式。过滤器ether multicast抓取以太网多播地址的数据流,ip multicast抓取IP多播地址数据流。广播数据流也是类似的使用方法。注意多播过滤器也会抓到广播数据流。
除了抓取特定主机以外,还可以抓取特定网络。例如,以下命令限制抓取来自或发往205.153.60.0的报文:
bsd1# tcpdump net 205.153.60
以下命令也可以做同样的事情:
bsd1# tcpdump net 205.153.60.0 mask 255.255.255.0
而以下命令由于最后的.0就无法正常工作:
bsd1# tcpdump net 205.153.60.0
协议及端口过滤:
限制抓取指定协议如IP,Appletalk或TCP。还可以限制建立在这些协议之上的服务,如DNS或RIP。这类抓取可以通过三种方式进行:使用tcpdump关键字,通过协议关键字proto,或通过服务使用port关键字。
一些协议名能够被tcpdump识别到因此可通过关键字来指定。以下命令限制抓取IP数据流:
bsd1# tcpdump ip
当然,IP数据流包括TCP数据流,UDP数据流,等等。
如果仅抓取TCP数据流,可以使用:
bsd1# tcpdump tcp
tcpdump可识别的关键字包括ip, igmp, tcp, udp, and icmp。
有很多传输层服务没有可以识别的关键字。在这种情况下,可以使用关键字proto或ip proto加上/etc/protocols能够找到的协议名或相应的协议编号。例如,以下两种方式都会查找OSPF报文:
bsd1# tcpdump ip proto ospf
bsd1# tcpdump ip proto 89
内嵌的关键字可能会造成问题。下面的例子中,无法使用tcp关键字,或必须使用数字。例如,下面的例子是正常工作的:
bsd#1 tcpdump ip proto 6
另一方面,不能使用proto加上tcp:
bsd#1 tcpdump ip proto tcp
会产生问题。
对于更高层级的建立于底层协议之上的服务,必须使用关键字port。以下两者会采集DNS数据流:
bsd#1 tcpdump port domain
bds#1 tcpdump port 53
第一条命令中,关键字domain能够通过查找/etc/services来解析。在传输层协议有歧义的情况下,可以将端口限制为指定协议。考虑如下命令:
bsd#1 tcpdump udp port domain
这会抓取使用UDP的DNS名查找但不包括使用TCP的DNS zone传输数据。而之前的两条命令会同时抓取这两种数据。
报文特征:
过滤器也可以基于报文特征比如报文长度或特定字段的内容,过滤器必须包含关系运算符。要指定长度,使用关键字less或greater。如下例所示:
bsd1# tcpdump greater 200
该命令收集长度大于200字节的报文。
根据报文内容过滤更加复杂,因为用户必须理解报文头的结构。但是尽管如此,或者说正因如此,这一方式能够使用户最大限度的控制抓取的数据。
一般使用语法 proto [ expr : size ]。字段proto指定要查看的报文头——ip则查看IP头,tcp则查看TCP头,以此类推。expr字段给出从报文头索引0开始的位移。即:报文头的第一个字节为0,第二字节为1,以此类推。size字段是可选的,指定需要使用的字节数,1,2或4。
bsd1# tcpdump "ip[9] = 6"
查看第十字节的IP头,协议值为6。注意这里必须使用引号。撇号或引号都可以,但反引号将无法正常工作。
bsd1# tcpdump tcp
也是等效的,因为TCP协议编号为6。
这一方式常常作为掩码来选择特定比特位。值可以是十六进制。可通过语法&加上比特掩码来指定。下例提取从以太网头第一字节开始(即目的地址第一字节),提取低阶比特位,并确保该位不为0:
bsd1# tcpdump 'ether[0] & 1 != 0'
该条件会选取广播和多播报文。
以上两个例子都有更好的方法来匹配报文。作为一个更实际的例子,考虑以下命令:
bsd1# tcpdump "tcp[13] & 0x03 != 0"
该过滤器跳过TCP头的13个字节,提取flag字节。掩码0x03选择第一和第二比特位,即FIN和SYN位。如果其中一位不为0则报文被抓取。此命令会抓取TCP连接建立及关闭报文。
不要将逻辑运算符与关系运算符混淆。比如想tcp src port > 23这样的表达式就无法正常工作。因为tcp src port表达式返回值为true或false,而不是一个数值,所以无法与数值进行比较。如果需要查找端口号大于23的所有TCP数据流,必须从报文头提取端口字段,使用表达式“tcp[0:2] & 0xffff > 0x0017”。
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年12月22日 18:00
感谢补充说明!
为了便于理解,我再用简单的语句表述一下:
Seq:数据段的序号,当TCP收到乱序报文时,可供重新排序。
Ack:接收方向发送方确认已接收到哪些字节。
SYN:发起连接请求的标志位。
FIN:请求终止连接的标志位。
NaNi_Z
13 消息
0
2014年12月22日 18:00
我觉得你在第八篇中关于TCP消息的序列号和确认号的描述有点模糊,不太好理解。看了些其他帖子,我觉的有这么一句描述的不错
“(相对)序列号表示成功发送的字节数,(相对)确认号表示成功接收的字节数。SYN和FIN算一个字节。”
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年12月24日 18:00
下一节介绍NAT。如果有问题请留言,欢迎更多同学参与讨论!
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年12月28日 17:00
网络基本功(十九):细说NAT原理与配置
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese
介绍
NAT技术让少数公有IP地址被使用私有地址的大量主机所共享。这一机制允许远多于IP地址空间所支持的主机共享网络。同时,由于NAT屏蔽了内部网络,也为局域网内的机器提供了安全保障。
NAT的基本实施过程包括使用一个预留给本地IP网络的私有地址成立组织的内部网络,同时分配给组织一个或多个公网IP地址,并在本地网络与公网之间安装一个或多个具有NAT功能的路由器。NAT路由器实现的功能包括将数据报中私网地址转换成公网地址,反向亦然。当有报文通过时,网络地址转换其不仅检查报文信息,还将报文头中的IP地址和端口信息进行修改,以使处于NAT之后的机器共享少数公网IP地址。
更多信息
何时使用NAT?
因为NAT能够减少在网络环境中所需的公共IP地址需求,因此当两家公司重复内部地址合并时,这一技术是很有帮助的。当组织改变其Internet服务供应商(ISP),但网络管理员不想改变内部地址方案时,NAT也是一个很好用的工具。
以下是应用NAT的场景:
通常NAT应用于边界路由器。例如,下图中NAT应用于企业连接到Internet的路由器上:
NAT的优势与不足:
优势
不足
节约合法注册地址
转换导致交换路径延时
解决地址重叠问题
导致端到端IP地址无法追溯
提高访问Internet灵活性
某些应用程序无法使用
网络变动无需地址重新编号
网络地址转换类型:
静态NAT:此类NAT在本地和全局地址之间做一到一的永久映射。须注意静态NAT要求用户对每一台主机都有一个真实的Internet IP地址。
动态NAT:允许用户将一个未登记的IP地址映射到一个登记的IP地址池中的一个。采用动态分配的方法将外部合法地址映射到内部网络,无需像静态NAT那样,通过对路由器进行静态配置来将内部地址映射到外部地址,但是必须有足够的真正的IP地址来进行收发包。
端口NAT(PAT):最为流行的NAT配置类型。通过多个源端口,将多个未登记的IP地址映射到一个合法IP地址(多到一)。使用PAT能够使上千个用户仅使用一个全局IP地址连接到Internet。
NAT术语:
NAT术语还是比较直观的。NAT地址转换之后成为全局地址。通常是Internet上使用的公网地址。如果不访问Internet的话就不需要用到。
本地地址:NAT地址转换之前用到的地址。内部本地地址实际上是尝试访问Internet的发送主机的私有地址。外部本地地址通常是连接到用户ISP的路由器接口,也是报文开始传输的公有地址。
转换之后,内部本地地址之后被称为内部全局地址,而外部全局地址成为目标主机的地址。如下表所示:
名称
含义
内部本地
转换前的源主机内部地址
外部本地
Internet上识别到源主机的地址。通常是连接到ISP的路由器接口——真实的Internet地址。
内部全局
转换后连接到Internet的源主机地址。也是真实的Internet地址
外部全局
外部目标主机地址,同样是真实的Internet地址
NAT实现细节:
下图中,主机10.1.1.1将报文发送到有NAT功能的边界路由器。路由器将源IP地址识别为内部本地IP地址,在报文中转换源IP地址,并在NAT表中记录此次转换。
配有新转换源地址的报文发送到外部接口。外部主机将报文发送给目的主机并且NAT路由器通过NAT表将内部全局IP地址转换回内部本地IP地址。
PAT方式中,所有内部主机都转换为一个IP地址。如下图所示,除了内部本地IP地址和内部全局IP地址以外,还多了一个端口号。端口号帮助路由器识别哪一台主机应当收到返回数据。路由器使用来自各主机的源端口好来区别他们各自发出的数据。注意当报文离开路由器时有一个目标端口号80,而HTTP服务器将报文发回时目的端口号为1026。从而允许NAT转换路由器区别NAT表中的主机然后将目的IP地址转换回内部本地地址。
本例中,端口号在传输层用户识别本地主机。如果必须要使用真实全局IP地址来识别源主机,那就只能通过静态NAT,并且会用光所有地址。PAT允许我们在传输层识别主机,从而理论上一个真实IP地址可被65,000台主机共享。
静态NAT配置:
ip nat inside source static 10.1.1.1 170.46.2.2
!
interface Ethernet0
ip address 10.1.1.10 255.255.255.0
ip nat inside
!
interface Serial0
ip address 170.46.2.1 255.255.255.0
ip nat outside
!
在第一个路由器输出中, ip nat inside source 命令指定需要转换的IP地址。本例中,此命令配置了内部本地IP地址10.1.1.1到外部全局IP地址170.46.2.2的静态配置。
在各接口下都有一条ip nat命令。ip nat inside命令将该接口识别为内部接口,ip nat outside命令将该接口识别为外部接口。回头看 ip nat inside source 命令,该命令将内部接口作为转换的源或起点。也可以这样使用:ip nat outside source。该选项表明指定的外部接口会成为转换的源或起点。
动态NAT配置:
动态NAT表示将一个地址池当作真实IP地址提供给内部一组用户。由于不使用端口号,对于同时尝试访问外部网络的用户必须提供真实的IP地址。
以下是动态NAT配置的示例输出:
ip nat pool todd 170.168.2.3 170.168.2.254
netmask 255.255.255.0
ip nat inside source list 1 pool todd
!
interface Ethernet0
ip address 10.1.1.10 255.255.255.0
ip nat inside
!
interface Serial0
ip address 170.168.2.1 255.255.255.0
ip nat outside
!
access-list 1 permit 10.1.1.0 0.0.0.255
!
ip nat inside source list 1 pool todd 命令告知路由器将匹配access-list 1的IP地址转换到名为todd的IP NAT池中的一个地址。这里ACL并不是出于安全因素通过允许或拒绝数据来过滤报文。本例中,它是用来选择或指定我们感兴趣的数据流。当数据流与接入列表相匹配,就被拉入NAT进程转换。
命令 ip nat pool todd 170.168.2.3 192.168.2.254 netmask 255.255.255.0用来创建地址池,之后被分配给请求全局地址的主机。做Cisco NAT故障排查时,一定要检查池中确保有足够地址提供转换给内部主机。最后,确保池名匹配,注意区分大小写。
端口NAT配置:
以下是端口NAT配置的示例输出:
ip nat pool globalnet 170.168.2.1 170.168.2.1 netmask 255.255.255.0
ip nat inside source list 1 pool globalnet overload
!
interface Ethernet0/0
ip address 10.1.1.10 255.255.255.0
ip nat inside
!
interface Serial0/0
ip address 170.168.2.1 255.255.255.0
ip nat outside
!
access-list 1 permit 10.1.1.0 0.0.0.255
端口NAT与动态NAT配置的不同之处在于:
地址池变为只有一个IP地址
在ip nat inside source命令最后加入overload关键字。
本例中一个关键元素是使用了池中的一个IP地址作为外部接口IP地址。如果有其他可用地址如170.168.2.2可作为额外地址,这样做在内部大量用户同时为活跃状态,需要不止一个重载IP地址时很有帮助。
参考
CCENT
JaSonS_toy
6 消息
0
2014年12月29日 22:00
感谢楼主分享,看完这一章,有几个问题想问一下
1)子网IP向公网发出的数据包是否还需要NAT转换?
2)ABC类的私有地址的划分方式和这种子网划分方式区别在哪?分别是针对哪些情况设定的?为什么要分这两种方式?
3)子网IP会占用IP资源吗?
谢谢了哈
luodichen
1 消息
0
2014年12月29日 23:00
写得好赞!
希望再详细写一写ARP协议的细节、ARP协议是怎样在链路层与网络层之间起桥梁作用的,因为我发现很多人不理解二层与三层之间的分工和协作呢。
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年12月29日 23:00
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
0
2014年12月29日 23:00
谢谢。我考虑一下哦~
Zhang_Jiawen
2 Intern
2 Intern
•
1.2K 消息
1
2014年12月30日 00:00
比如B类网络可支持65534台主机,那么这些主机都处于一个广播域,而一个广播域如果有这么多结点会造成网络拥塞,所以会有些地址分配不出去,这样就造成IP地址位的浪费。把它划分成更细的子网,依靠掩码来实现,通过路由器对不同子网进行分界,这样可以充分利用主机地址里的每一个bit位。
JaSonS_toy
6 消息
0
2014年12月30日 00:00
既然子网IP会占用IP资源,那么为什么划分子网可以避免浪费,我总是觉得这个划分的子网有点别扭,能不能说的详细点,谢谢
JaSonS_toy
6 消息
0
2014年12月30日 00:00
懂了,谢谢,楼主真的很厉害