近期评论

Archive for 十月, 2012

帧中继配置

拓扑结构:

R1,R2,R3是帧中继客户端路由,正中间的设备是帧中继交换机。

R1S0/0接口ip123.1.1.1R2S0/0接口IP123.1.1.2R3S0/0接口IP123.1.1.3

R1R2可以互访,R1R3可以互访,但是R2R3无法互访。

其中R1R2DLCI号是102R2R1DLCI号是201

R1R3DLCI号是103R3R1DLCI号是301

如下图:

 

配置方法:

先在帧中继交换机上配置如下

en

conf t

frame-relay switching 全局模式普通路由转换为帧中继模式

 

再进入帧中继交换机接口分别配置如下

int s0/0    进入接口模式

encapsulation frame-relay 一般可以直接回车也可以带参数

frame-relay intf-type dce 帧中继交换机配置dce模式,而客户端路由要配置为dte模式

frame-relay lmi-type cisco 只需在帧中继交换机配置,DTE客户端自动学习到

no shutdown

 

封装完成后(如上)才能配置帧中继转发策略(如下)

frame-relay route 102 interface s0/1 201  表示在帧中继交换S0/0接口收到标签为102的包,从帧中继交换机S0/1接口发出,标签更改为201

注意:

帧中继交换机接口S0/0对应的路由R1接口S0/0捆绑或学习到的DLCI号是102

帧中继交换机接口S0/1对应的路由R2接口S0/0捆绑或学习到的DLCI号是201

 

frame-relay route 103 interface s0/2 301  类似上面,实现R2R3之间的转发。

———————————————————

再进入帧中继其他接口类似上面一个接口的配置

int s0/1    进入接口模式

encapsulation frame-relay

frame-relay intf-type dce

frame-relay lmi-type cisco

no shutdown

frame-relay route 201 interface s0/0 102

 

int s0/2    进入接口模式

encapsulation frame-relay 

frame-relay intf-type dce 

frame-relay lmi-type cisco

no shutdown

frame-relay route 301 interface s0/0 103

通过以上配置,帧中继交换机上的配置完成

——————————————————————————————————————

下面开始配置客户端端路由器。

R1上配置

en

conf t

int s0/0

encapsulation frame-relay

frame-relay map ip 123.1.1.3 103 broadcast

frame-relay map ip 123.1.1.2 102 broadcast 123.1.1.1R1路由上配置该命令,指定目的IP地址123.1.1.2和目的DLCI102,该命令当前的用途是可以用于自动学习DLCI

可以静态指定下一跳。注意捆绑的DLCI号和帧中继交换机的转发策略的对比

————————————

R2上配置

en

conf t

int s0/0

encapsulation frame-relay

frame-relay map ip 123.1.1.1 201 broadcast

 

————————————

R3上配置

en

conf t

int s0/0

encapsulation frame-relay

frame-relay map ip 123.1.1.1 301 broadcast

 

 

帧中继全部配置完成

R1R2可以双向ping通,R1R3也可以双向ping通,R2R3无法通信

帧中继的DLCI号其实是描述一条单向链路包括源路由,目的路由。而不是某一台路由器

MTU,MSS,最小数据包

根据美国电气协会ITU规定,10M/100M以太网帧的最大长度1518字节。这个值可以称之为二层MTU。

二层MTU不包括以太帧前导码7byte和帧界定符1byte,但包括以太帧FCS校验和4byte,这三部分抓包工具都捕获不到,抓包工具wireshark能捕获到的最大长度是1526-7-1-4=1514byte。

帧报头包括:源物理地址占6字节,目的物理地址占6字节,类型type占2字节,帧尾FCS占4字节,共6+6+2+4=18字节。

 

通常说的MTU是指以太帧最大长度1518字节除去帧报头的长度18字节,即1500字节,即三层MTU。

查看计算机MTU命令是netstat /ev(XP系统),netsh interface ipv4 show interface(win7以上系统)。

微软官方申明win2003和winXP系统没有修改MTU的接口,

win7,visita,win2008,win2012修改MTU值的命令是:

netsh interface ipv4 set subinterface "本地连接" MTU=1400 store=persistent。

MTU不包括链路层以太帧的内容,但包括IP报头及其他上层内容。

对于ping包而言,IP报头占20字节,icmp报头占8字节,其余为数据长度。

所以ping包所能携带的数据最长为1500-20-8=1472字节。

 而ping程序的参数-L 表示携带的数据长度,穿越不能IP分片传输的设置时,这个值不超过1472字节。

一些低端的路由器交换机和高端的侧重安全的网络设备如防火墙不支持IP包分片,如果超过MTU,会出现数据包无法传输的现象。可以通过修改MTU来解决这个问题。

另外一些程序如某些网页程序生成数据包的时候会在IP包的标志位中的DF值设置为1,及强制不分片。这种情况也会出现网络不通的情况。

 

MSS是传输层TCP数据段segment能携带数据的最大长度值,

即MTU去掉三层的IP报文部分20byte,四层TCP报文20byte,1500-20-20=1460byte。

也就是说TCP报文中Len的值(即TCP携带数据的大小,Bytes in flight)不可能超过1460byte。但这只是不考虑分段传送的情况如此。

如果TCP报文Len的值大于1460,肯定是TCP segment of a reassembleed PDU,必然会看到不只1个数据包如下图所示:

同一TCP连接(源IP,源端口,目的IP,目的端口,协议类型)中,连续多个数据包sequence序号不中断排列。也就是TCP分组传送,重组接收。

这是Len长度会明显大于1460byte

 

以太网最小数据包长度64byte即512bit。

注意:抓包工具抓到的最小包是54byte=12+20+20+2=以太帧长度+ip报文+tcp报文+2字节置零填充。

这种包都是从本机发出去的没有经过物理层网卡填充的数据包。收到的包最小64byte。

有线10M以太网中,采用CSMA/CD(carrier sense multi access/collision detect)即载波侦听多路访问/冲突检测机制来确保数据链路层以太帧正常发送。

由于以太帧在物理层中是以电磁波高低电平的形式传送,而电磁波的速度2*10^8m/s,即两亿米每秒相当于光速的2/3。

注意10/100/1000M/s是指网卡制造信号并发送出去的速度,而2*10^8m/s是指这些信号在线路上的传播速度。

10M以太网最大长度是2500m(500米一段,通过4个中继设备),来回的传输延时

propagation delay=2*(2500/(2*10^8))=25*10^-6=25us

在来回的线路上的传输延时是25微妙,由于通过中继设备转发时也会造成延迟大约25微妙,一共加起来需要51.2us。

也就是说网卡从发送出一个信号开始计时,到收到2500m远的目的设备回传过来的信号共需要51.2us,那么这段时间网卡共能发送

51.2us*10M/s=512个信号,而这个信号是按bit计算也就是512bit即64byte的数据。

CSMA/CD传输机制规定网卡是先检测通道是否空闲,如果空闲则一边发送一连串的信号一边侦听是否发生碰撞,当这一连串的信号发送完后,不再侦听这一连串的信号是否在链路上发生冲突。

 

如果发送的这一连串信号即一个数据包的长度小于512bit即64byte,在第一个回传的信号回来之前,网卡已经把这一连串的信号发送完,并且不在侦听检测是否存在与之对应的信号冲突,那么如果这串信号如果在链路上传输时其他网卡也同时发送数据,就会扰乱这一连串的信号,那么真正的接收方就不到正确的数据,无法正常通信。所以必须至少在接收到第一个回传信号时确保信号还没发送完,意味着网卡必须持续工作至少51.2us,那么至少要发送512个bit数据,即64byte,所以10M以太网最小数据包是64byte。

由于100M以太网是在10M以太网基础上发展起来的,相关的标准规范和10M以太网一致,规定网卡必须持续发送最少5.12us的数据,对应64byte。

但是100M以太网其实最小的数据包小于64byte也能检测到冲突,由于网卡制造时对应的软件驱动程序规定了必须连续发送512bit不足的填充0,所以100M以太网最小的以太帧也是64byte。

而1000M以太网则最小的以太帧是512byte。另外点对点链路由于不存在冲突,所以不需要限制最小数据帧长度。

另外无线网络使用的CSMA/CA(carrier sense multi access/collision avoid)即载波侦听多路访问/冲突避免机制,并不需要检测信号冲突,所以无线网络最小的数据帧没有规定最小,小于64byte不会填充以太帧。目前见过的最小帧是42byte,包括发送帧和接受帧。

 

总而言之,使用有线10/100M以太网,wireshark抓包,收到的最小包是60byte(不包括4byte帧尾),最大长度1514byte。

使用无线网卡时,没有限定最小帧长度,一般为42byte,最大帧长度1514byte。

telnet发送和接受邮件

发邮件用的smtp服务器,端口25,收邮件用的pop3服务器,端口110。在百度搜索base64,编码转换。

 

以163邮箱为例:
telnet smtp.163.com 25
helo thy

auth login
直接输入账户(输入经过base64编码后的字符)
直接输入密码(输入经过base64编码后的字符)
mail from: <>
rcpt to: <>
data
subject:内容

subject后面必须空一行

输入邮件正文
.(点好表示结尾并发送)

 

telnet pop3.163.com 110
user 账户(不带域名)
pass 密码
top 1 1(第一封邮件的第一行,显示的内容是base64编码的字符)
list (显示所有邮件信息)

关于不同网段的互访和网络通信的原理

跨网段互访有以下几种形式:

1.物理上不直接相连的不同网段的网络设备(包括路由,主机)。

2.物理上直连的不同网段的网络设备。

 

为什么不同网段不能直接互访呢?

查阅我所知道所有资料,搜索所有网络连接的声明,都没有任何明确的说法说不同网段不能互访。

 

对于第一种情况由于很常见很好理解,物理上不直接相连,显然数据传输过程需要封装解封装,必须要要路由设备才能转发,实现互访。准确说是必须要路由表和路由器。

 

对于第二种情况,直接相连的两台主机,分别设置在不是同一网段,为什么不能互访呢?

其实这和第一种情况本质是一样的。但第二种情况需要先了解数据传输的机制才能理解。

 

以ping为例:ping程序实际是应用层的东西,ping 某个IP 实际上涉及网络层数据包。抓包分析,ping包是基于IP报文的数据包。并没有tcp或udp等基于传输层的报文,显然也没有任何端口。

 

当主机A进行ping 主机B时,究竟是怎样一个过程呢?

根据我自己的实验推理。我认为主机A进行ping主机B时,

1.首先在应用层如cmd命令符对话框输入ping 主机B的IP地址后,应用层认为语法正确并通过CPU的进程转交给会话层,进而转交给网络层。

 

2.然后在网络层,主机A查找自己的路由表,看是否有主机B的IP地址的对应路由。如果没有对应的对应的路由表,直接丢弃该数据包,不做任何处理。如果有,发送携带主机B的IP地址的ping数据包,并将该数据包转交给数据链路层。

 

3.然后在数据链路层,由于最初始状态,主机A是没有物理地址缓存的,查找ping包的目标IP地址,发现没有对应物理地址列表,于是主机A的网卡在链路层发起携带目的物理地址为FF:FF:FF:FF:FF:FF的ARP广播帧,并且携带的信息是:Who has 主机B的IP地址?  Tell 主机A的IP地址,请求携带主机B的IP地址的主机回应。

当携带主机B的IP地址主机收到基于二层ARP协议的广播帧后,检查发现自己携带有主机B的IP地址,于是创建一个主机A的物理地址对应主机A的IP地址的缓存表,并且将刚才发的广播帧的源物理地址即主机A的物理地址转换为目的物理地址,将主机B的物理地址设置为源物理地址,发送一个回应帧,告诉主机A,它携带有主机B的IP地址,并且将主机B的物理地址通告给主机A。

主机A收到回应后,于是主机A也建立一条主机B的物理地址对应主机B的IP地址的缓存表。这个物理地址到IP地址的缓存表大约持续1分钟后消失。这个过程有且只有2个数据帧,一个是主机A发送的广播帧,一个是主机B回应的单播帧。

 

4.基于二层的ARP协议广播帧收到回应后,主机A和主机B分别生成了目标物理地址——目标IP地址的缓存表。主机A封装网络层ping数据包成帧的时候查找ARP缓存表得到目的IP地址对应的物理地址,于是发送该帧到主机B,主机B收到该帧以后,解封装成IP数据包,进而交给应用层ping程序处理。ping程序收到回应后,发送一个ping回应包经过网络层,链路层的封装后,查找主机B的ARP混村表进而发送给主机A,主机收到ping回应帧后,解封装为ping回应包,转交给应用层,最后出现ping的结果,一般为 Reply from 192.168.22.100: bytes=32 time<1ms TTL=128

 

这个4个过程速度是几乎等于光电的速度或者CPU的处理速度。

另外查收APR缓存表的DOS命令是:arp -a,查找主机的路由表的DOS命令是:route print

添加主机路由表的命令是route add 目标网络 mask 子网掩码 本地网卡IP地址

 

根据以上原理并且实际验证,两台直连或者通过交换机直接相连的主机,分别设置成不同网段,是完全可以互访的。但必须在两台主机中,通过DOS命令route add 各自添加到对端主机的路由表。即可。