读《网络是怎样连接的》第三章

依旧看看这部分主线是什么:

数据从网卡中出来,跑到了网线上、到了集线器、到了交换机、到了路由器,然后继续到网线,如此反复的转发,最终找到目的地.

虽然现在我们的路由器功能很强大,继承了交换机等功能,但是我们学习的话,还是把每一步拆开来看 比较好.

 

  • 数据到了网线
  • 数据到了集线器
  • 数据到了交换机
  • 数据到了路由器

 

1.数据到了网线

 

这部分讲了什么内容呢?    说了数据传输过程会受到干扰和失真,从而引起数据发生变化.如果发生了变化,到达路由器的时候,拆解MAC头部时,发现计算得到的fcs和尾部附带的fcs不同,边意味着传输过程中数据发生了变化,这数据就不能用了,然后我们做了什么操作呢,当然是直接就把它丢掉啦,对,就是丢了它.......额,你问我其他不用做什么了吗, 哈哈 是的, 发送方一定时间内如果没收到返回的ACK确认,他就会隐隐意识到出问题了,然后又开心的发了一份~~~

?,讲偏啦,哈哈. 那么,为什么传输过程中数据变化了呢?

首先,高频信号容易损失能量,(我们知道,以太网信号的波形是方形,就像城墙那样,拐角的意味着电压发生了剧烈变化、这又意味着这部分的信号频率较高,从而有能量损失)

传播过程中可能因为经过电磁波,电磁波经过了金属导体就产生了电流,这样就干扰原本的信号了,毕竟,信号本质就是一种带有电压变化的电流,这次一冲突,就出事了.

.另外,网线越长,信号衰减越严重.

 

有什么防护办法吗?

1.双绞线的两根+ - 信号线缠在一起

2.双绞线中缠在一起的信号线有四组(水晶头里八根线),每组的节距不一样

原因就不写啦,嗯。不想写~~
 

2.数据到了集线器

 

我们先了解一下数据到了集线器发生了什么故事:

额,数据过来了,从集线器的和网卡相同的模块进去了,然后信号从所有接口流出,到达连接在集线器上的所有设备.

这里的集线器在收发的时候要注意判断是否会发生碰撞..(由于使用的是半双工模式)

 

 

3.数据到了交换机

面对发过来的东西,交换机会怎么做呢?

由于交换机本身没有MAC地址,在类似于网卡一样收到了数据包后,它不用判断是否是发送给自己的,直接就把数据放进了缓冲区里,然后查看MAC地址表,看看从哪一个端口发送出去.

所以啊,这里有个要注意的地方 ,就是如何生成一个MAC地址表,从而能让新来的包判断,她们能从哪一个端口出发,继续他们前进的道路呢?

 

一开始,我们知道表是空的, 当有一个包从端口被接收时,我们就记录MAC头部的源MAC地址和其进来的端口好,把它们做对放在MAC地址表里,这样,由于1s内交换机会有上千个包收录,表就变得很棒了,

 

但是,有可能当我们的MAc不完整时,就有包要通过我们的交换机去下一个地方,那怎么办呢,我们我们没办法直接告诉他往哪走,这个时候我们可以让交换机发个广播,问问有谁是这个MAC地址,这样来找前进方向.

 

当然了,存在MAC地址表里的 数据是有时效性的,一定时间后就自动删除了

 

若删除前,有人发往这个端口,但是这个端口连接的设备被转移了,那怎么办呢,不是报错了吗?

不怕.重启设备!!!!!!  就好了,大不了重新生成MAC地址表,不碍事.

 

补: 交换机是全双工模式工作的,可以一边接收一边发送,不用进行碰撞检测.

    可以相互之间自动协商,确定最优的传输速率

4.数据到了路由器

路由器接收数据也是用网卡,然后把各种解包操作.   这里的重点就是判断数据下一个要去的路由器在哪,然后用ARP协议找到他的MAC地址,生成新的MAC头部后再发出去就好了.

 

那么,怎么找到下一个要到达的路由器呢?

这就要靠路由器内部的路由表了,这个路由表会自动通过RIP、OSPF、BGP路由协议进行维护协议,当然了,如果愿意,你也能手动维护.

我们哟要查询路由表(怎么查就不说了),发现对应网络网络号的条目(可能会很多,按子网内数多少来排序,主机数越少,越靠前),选择该条目中的端口号发出,且这个条目中还有网关,代表我们发往目标IP地址要经过那个路由器转发,所以这个网关就是我们下一步要到达的路由器,用RIP找到其MAC地址,ok................

 

另外,路由表中还有一个叫默认路由, 在表中的长相是。 目标地址全为0,子网掩码也全为0,   这个就是说,如果我的IP地址找不到匹配的网络往,那就用我的这条默认路由进行转发吧.

 

 

 

补:这章中还讲到了 NAT,这个东西有什么作用呢?

它把子网中的主机的私有ip和端口号改成自己拥有的公有ip和一个随意的端口号,并把这四个内容记在一个表里,当从内部发出去的请求有了响应返回的时候,再把响应的目标ip与端口号,由共有的ip和端口号按着记录表中的内容,改成私有ip和其端口号,发给该子网中的逐句,这样就完成了通讯了

但是其中有一个问题啊,

就是 若子网中的我不往外发消息了,那么NAT设备中就不记录我的信息,那么,从互联网外就找不到我啦,互联网外发来的消息到了NAT设备,NAT设备发现没有与其匹配的条目,这个请求操作就被丢弃了.

 

那怎么办呢,?

1. 可以把子网中想被他人访问的服务器放在NAT的外面,并给这个服务器一个公网地址,让互联网中的请求访问能够被响应

2.可以在NAT上手动配置内容,把内部要被访问的服务器的私有地址放到NAT中( 要把NAT的公有地址注册到DNS服务器中)

 

 

哈 ............................明天继续~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值