从pppoe想到的东西(菜鸟之见,希望指正)

1. arp协议应该属于网络层协议,因为arp协议就是配置了数据链路层中的“数据“字段

2. 为何网卡mac地址唯一,我们还是可以在我们的操作系统中修改mac地址呢?

比如windows就可以。这是因为,我们的驱动程序在接收网络数据包时,会根据ip协议中使用的ip,找到软件系统中的ip-mac地址映射,把我们的ip对应的mac地址告知网卡,这里的告知,就可能由于软件系统中的ip-mac地址的映射不是真实的,而告知一个错我的mac地址。比如,我把本机192.168.1.3-mac:0x4c3c2c1c5c6c这个对应关系,通过修改windows的mac地址设置,就成了192.168.1.3-mac:0x6c5c4c3c2c1c(也可以选择使用原始网卡mac地址,所以不用担心修改了就改不回来了),这样,当网卡驱动接收到网络层的Ip包时,会发现192.168.1.3对应的mac是0x6c5c4c3c2c1c,然后他会把数据封装为以太网数据链路层报文格式,其中的源mac地址就是我们修改后的那个地址,数据段就是整个ip数据包,然后他把封装好的数据发给网卡,通知网卡要把数据给发送出去。网卡会对数据包进行处理,如果网卡发现软件传来的数据包格式不是以太网帧格式,他就会丢弃而不发送这个包。所以,以太网网卡所发送的数据包,必须符合以太网帧的格式。

另外,通过这个地方,也可以理解,当我们发送arp协议包时,软件系统也会根据arp协议所需要对应的以太网的mac地址,封装一个以太网帧格式,添加src mac和dst mac,不过就是这时的以太网帧格式,包含了两个一样的源mac和目的mac(参考以太网帧格式和arp帧格式,他们都有源/目的 mac地址 这个字段)

3.ppp协议为何要改造为pppoe,而不能直接发送?

由上面2的关于网卡发送数据的分析,ppp协议有自己的帧格式,ppp协议表面上看最明显的就是他没有硬件mac地址这个字段,所以,就算你通过其他输出端口发送了这样的数据到以太网的链路上,这些以太网的网卡也不会收到它,因为以太网的网卡会因为数据非以太网帧格式而丢弃这些包。

4. 改造为pppoe后,为何就可以在以太网上传输ppp格式的报文了呢?

其实,就是把ppp协议的帧格式,封装到以太网帧格式中的”数据“字段,跟ip,arp他们一样的封装。

5.pppoe如何建立连接呢?怎么知道pppoe的对端服务器在哪里?

初始的时候,封装的以太网帧中,目的地址是以太网的广播地址,数据部分是寻找pppoe接入服务器的请求信息,这样可能会有多个服务器会响应这个报文,然后客户端选择一个服务器,进行回应,最后经过一系列的交互,客户端和服务器会协商好一个session-id(以后的会话会一直使用,用于标识一个client-server的会话)和服务类型(服务端会有多种类型,客户端也选择使用哪些服务,这样以后可以计费),之后还要进行进一步的用户认证(LCP阶段,链路配置协议)(就是通常看到我们需要输入用户名和密码进行宽带上网),在认证成功后,会进入NCP(网络配置协议)阶段,服务端会告知客户端使用什么样的ip配置,比如ip地址,dns等。这样,用户就可以进行ip数据的传输了。这样我们上网时,发送ip数据包时,源ip就是NCP阶段分配的,此时软件系统发送网络数据包时,会使用我就们的宽带虚拟网卡配置的ip(会有相应的驱动处理数据包封装),而不是之前本地连接的那个地址。此时我们查看系统的网卡配置(windows是ipconfig,Linux是ifconfig),会发现除了本地连接之外,还有宽带连接的那个虚拟网卡。

6.通过pppoe的宽带连接上网,本地连接和宽带连接,ip数据报文怎么确定是从那个连接发送出去呢?

一般情况,根据我们的目的ip地址,来决定路由要从那个接口出去,通常本地连接是私网地址,宽带连接分配地址后,系统会增加一个访问公网的路由,比如会设置一条默认路由(配置在宽带连接接口),这样基本上访问公网时,软件系统会根据目的ip的路由判断出从宽带接口出发,从而宽带连接的处理程序会把ip包封装到ppp协议的数据包的”数据段“,然后再进一步有软件系统把数据包封装为以太网帧,通过网卡发送出去。

7. 同一个局域网之间的访问,需要配置本机网关吗?

这个,其实不需要的。因为ip路由,只有当不在同一个网段时,才会转发数据报文,如果一个网卡收到数据报文后,发现目的ip地址是和自己一个网段的,他不会转发这个数据包(这里注意是路由器,如果交换机,就会转发到相应mac地址对应的端口,所以我们一般是多个主机连接到交换机,然后交换机在练级路由器)。而且,同一个网段内的互访,才会使用到arp协议,也因此可以得到目的mac地址。

8.发往另一个网段的ip报文,他的链路层的目的mac地址是网关的还是谁的?

这个是网关的mac地址。本机发现一个ip报文的目的地址,不是和自己在同一个网段内的(通过子网掩码确定),他就要去选择一个路由了,如果本机有一条路由信息指明了到这个目的网络或者目的ip需要从接口eht1走,那么他就会选择这条路由(路由有下一跳的ip是多少的信息,这个ip必须和自己是同一个子网的),然后他会通过arp解析,解析这个下一跳的ip的mac地址是多少,然后就把ip报文用mac地址封装为以太网链路层的帧,然后发送出去。下一跳收到这个报文后(也正是因为这个包的目的mac地址就是这个下一跳的地址!!,所以他的以太网卡才不会丢弃这个报文),会取出ip数据报文,继续转发。

9.如果我的默认网关配置成了公网地址,比如,我是192.168.1.10,掩码是255.255.255.0,我的默认网关配置成了公网202.100.1.4,那么会怎么样?这样配置系统是否允许?

后续会继续研究,再续。。。

继续 。。。

经过试验,win7系统可以配置一个非同一子网的网关,但是系统会弹出警告框,后发现确实配置了,默认路由也是这个错误网关的地址,而且,访问外网时,确实会发送一个目的地址是默认网关的arp请求,不过凑巧的是,我所在试验网络环境有个路由器,它返回了一个arp响应,说“该网关的mac地址" 是 “本路由器的地址”,看了一下系统arp表, 发现确实是把网关ip和路由器mac地址绑定了。

但是,在cenos6.3上测试,发现linux配置不上这个错误网关,如果在ifcfg-eth0上配置了这个错误网关,那么保存退出然后重启网卡后,发现没有默认路由(正常情况会有个默认路由就是我们配置的网关),而且用route add命令也无法配置这条错误的默认路由,总之就是配置不上去。

所以,总而言之,如果配置一个错误网关,系统将无法正常工作(我的win7由于路由器响应了一个arp回来,所以最后的结果是我依然可以上网)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值