计算机发送的数据通过集线器、路由器等设备被转发,最终到达目的地。中间的转发设备不会影响到包里面的数据;数据流向如图
信号流出网卡进入网线,网卡中的 PHY(MAU) 模块负责将包转换成电信号,信号通过 RJ-45 接口进入双绞线,信号从这个接口中的 1 号和 2 号针脚流入网线;然后传输这个过程就是发送电信号了,但是接受信号的时候和发送信号的时候信号可能会出现衰减;网线越长,衰减的越厉害,这就是产生通信错误的原因;
双绞两根网线缠绕在一起;这种拧麻花一样的设计是为了抑制噪声的影响;【噪声的原因是网线周围的电磁波,电磁波在遇到金属会产生电流,如果这个时候遇到网络信号的电流,然后两者会混杂到一起,导致波形失真】
除了上述的方法之外,还有其他的方法,比如在线之间添加屏蔽网等 下面是一些网线的规格
类 | 含 义 |
---|---|
五类(CAT-5) | 用于 10 Mbit/s(10BASE-T)和 100 Mbit/s(100BASE-TX)以太网, 可以最高 125 MHz 的频率在最长 100 米的距离内传输信号 |
超五类(CAT-5e) | 用于千兆(1000BASE-T)以太网,对五类网线进行了改良,改善了串扰, 也向下兼容 10BASE-T 和 100BASE-TX |
六类(CAT-6) | 支持最高 250 MHz 的信号传输,用于 1000BASE-TX 规格的千兆以太网和 10GBASE-T 规格的万兆以太网,同时向下兼容10BASE-T、100BASE-TX 和 1000BASE-T |
超六类(CAT-6A) | 对六类网线进行了改良,改善了外部串扰,兼容 10GBASE-T、1000BASE-TX、1000BASE-T、100BASE-TX 和 10BASE-T |
七类(CAT-7) | 支 持 最 高 600 MHz 的 高 速 信 号 传 输, 兼 容 10GBASE-T、 1000BASE-TX、1000BASE-T、100BASE-TX 和 10BASE-T |
以太网的设计就是把数据包发送到所有数据,然后网卡设备根据MAC地址来判断是不是自己的包来判断数据包是丢弃还是保留
一台计算机的发送接口需要连接另一台设备的接受端口 发送需要两根线,接受需要两根线;
集线器只是对传输的数据原封不动的传输除去,不会对数据做准确性的校验,但接收方接受到数据之后进过FCS j校验后 数据包数据经过干扰和噪声后数据不准确就会丢弃包,丢弃的包不会触发TCP 的ACK确认,发送就会检查出有丢包,就会对数据进行重新发送。
交换机的设计是将网络包原样转发到目的地;
大家可以认为交换机的每个网线接口后面都是一块网卡。网线接口和后面的电路部分加在一起称为一个端口,也就是说交换机的一个端口就相当于计算机上的一块网卡;但是端口没有MAC 地址;
计算机连接着交换机;交换机的端口就可以获取和其端口连接的设备的MAC 地址 其内部就是维护了一张MAC地址和其端口号的缓存,当接收到数据是,对比MAC地址 ,可以获取到端口号,然后把数据转发到对应的端口号就可以了
电路实现 :内部电路的开管由芯片控制,其所有的端口号可以同时工作
总结就是:交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的端口
第一种是收到包时,也就是交换机向外面传输出具的时候 ;将发送方 MAC 地址以及其输入端口的号码写入MAC 地址表中;由于收到包的那个端口就连接着发送这个包的设备,所以只要将这个包的发送方 MAC 地址写入地址表,以后当收到发往这个地址的包时,交换机就可以将它转发到正确的端口了。交换机每次收到包时都会执行这个操作,因此只要某个设备发送过网络包,它的 MAC 地址就会被记录到地址表中 。
另一种是删除地址表中某条记录的操作;设备移动的时候,交换机必须想办法删除那些过时的记录;而是要在一段时间不使用后就自动删除,换设备的时候 回重复第一个动作,然该端口不用一段时间后,删除就可以;但是删除可能需要一段时间,在这段时间内数据包仍然有可能回发送到老的端口,这时通讯有可能出错,重启路由就可以;
情况一:A发送数据到B
A->集线器->B; A->集线器–>A,B
交换机表MACa->port MACb->port 发挥数据到B 使用端口port 数据port 一致 丢弃包
问题:计算机B 接收到的数据两次 解决方法:当交换机发现一个包要发回到原端口时(port),就会直接丢弃这个包
情况二:在交换机的MAC 地址表中找不到目标的MAC地址
交换机就会把数据包发送到所有的设备,所有设备受到回复后就会得到其MAC地址和端口对应关系 ,下次在发送到找个端口就不需要广播数据了;广播MAC 地址中的 FF:FF:FF:FF:FF:FF和 IP 地址中的 255.255.255.255 都是广播地址
全双工模式是交换机特有的工作模式,它可以同时进行发送和接收操作,集线器不具备这样的特性
使用集线器时;如果多台计算机同时发送信号,信号就会在集线器内部混杂在一起,进而无法使用,这种现象称为碰撞,是以太网的一个重要特征。不过,只要不用集线器,就不会发生碰撞
交换机的全双工模式可以同时发送和接收信号
设备之间通过发送信号自动协商最佳的实现工作模式;这一功能可
以由相互连接的双方探测对方是否支持全双工模式,并自动切换成相应的工作模式。此外,除了能自动切换工作模式之外,还能探测对方的传输速率并进行自动切换。这种自动切换的功能称为自动协商,当网络里面没有数据传输的时候就填充连接脉冲,这使得网络中一直都有一定的信号流过,从而能够检测对方是否在正常工作,或者说网线有没有正常连接。以太网设备的网线接口周围有一个绿色的 LED 指示灯,它表示是否检测到正常的脉冲信号 ,灯亮 ,连接正常;后面再设备和交换机之间发送特定波形的脉冲信号;自动协商功能就利用了这样的脉冲信号
示例:协商
传输速率 / 工作模式 | 网 卡 | 交 换 机 |
---|---|---|
1 Gbit/s 全双工 | 支持 | 不支持 |
1 Gbit/s 半双工 | 支持 | 不支持 |
100 Mbit/s 全双工 | 支持 | 支持 |
100 Mbit/s 半双工 | 支持 | 支持 |
10 Mbit/s 全双工 | 支持 | 支持 |
10 Mbit/s 半双工 | 支持 | 支持 |
协商后 100 Mbit/s 全双工 的工作模式最佳 ,就切换到该工作模式
交换机只将包转发到具有特定 MAC 地址的设备连接的端口,其他端口都是空闲的;这些端口可以传输其他的包,因此交换机可以同时转发多个包
相对地,集线器会将输入的信号广播到所有的端口,如果同时输入多个信号就会发生碰撞,无法同时传输多路信号,因此从设备整体的转发能力来看,交换机要高于集线器
问题:接受就一个入口 猜想是接受数据比较快,发送数据比较慢
网络包经过集线器和交换机之后,现在到达了路由器,并在此被转发到下一个路由器;和交换机类似都是对数据包的转发,不同的是路由器是基于IP 设计的而交换机是基于以太网(MAC)设计的;
路由器包括转发模块和端口模块
转发模块:负责判断包的转发目的地
端口模块:负责包的收发操作
工作步骤: 路由器的(入)端口具有 MAC 地址,端口具备以太网接收数据的能力(根据不同的协议和硬件,可以有其他的协议),转发模块解析IP头部的接收方IP,在路由表中查询,判断转发目标,转发模块将包转移到转发目标对应的端口(出),端口再按照硬件的规则将包发送出去;这一点和交换机是不同的,交换机只是将进来的包转发出去而已,它自己并不会成为发送方或者接收方(成为接受法和发送方,没有修改包的信息来判断的,路由器是修改了包里面的IP头部的MAC信息,才具备成为接收方和发送方的资格)
路由器的各个端口都具有 MAC 地址和 IP 地址
交换机是通过 MAC 头部中的接收方 MAC 地址来判断转发目标的,而路由器则是根据 IP 头部中的 IP 地址来判断的;路由器中的表叫作路由表
路由器根据“IP 地址”判断转发目标。
目标地址:IP 地址只包含表示子网的网络号部分的比特值,而表示主机号部分的比特值全部为 0(先忽略第二个)
就把目标地址和路由表中的子网掩码与运算得到的IP 和目标IP 地址一样才通过匹配的路由转发;交换机在地址表中只匹配完全一致的记录(MAC地址),而路由器则会忽略主机号部分(通过子网掩码,匹配网络号)
路由器会忽略主机号,只匹配网络号。
但也有一些例外,有时地址本身的子网掩码和路由表中的子网掩码是不一致的,这是路由聚合的结果。路由聚合会将几个子网合并成一个子网,并在路由表中只产生一条记录
10.10.1.0/24、10.10.2.0/24、10.10.3.0/24,路由器 B 需要将包发往这 3 个子网。在这种情况下,路由器 B 的路由表中原本应该有对应这 3 个子网的 3条记录,但在这个例子中,无论发往任何一个子网,都是通过路由器 A 来进行转发,因此我们可以在路由表中将这 3 个子网合并成 10.10.0.0/16,
#24 表示255.255.255.0 前8*3都是1
10.10.00000001.0
10.10.00000010.0 ===》10.10.0.0/16 子网掩码255.255.0.0
10.10.00000011.0
最后一列是跃点计数,它表示距离目标 IP 地址的距离是远还是近。这个数字越小,表示距离目的地越近;数字越大,表示距离目的地越远。
对路由表进行维护的方法有几种,大体上可分为以下两类
(a)由人手动维护路由记录
(b) 根据路由协议机制(RIP、OSPC、BGP),通过路由器之间的信息交换由路由器自行维护路由表的记录
路由器的端口都具有 MAC 地址,只接收与自身地址匹配的包,遇到不匹配的包则直接丢弃。
接收到包后,路由器就会丢弃包的MAC头部,MAC头部的功能就是把包发到路由器,功能完成了,自然就丢弃了接下来获取IP头部数据 获取到接收方IP地址
通过路由器转发的网络包,其接收方 MAC 地址为路由器端口的MAC 地址。
示例10.10.1.101 的计算机要向地址为 192.168.1.10 的服务器发送一个包
使用目标IP 192.168.1.10 和子网掩码运算得到 目标地址匹配的话就作为候选的路由,由此可以看出3.4.5 行都是可以的;路由器首先寻找网络号比特数最长的一条记录 C。网络号比特数越长(这一规则称为“最长匹配”原则),说明主机号比特数越短,也就意味着该子网内可分配的主机数量越少,越少转发的目标级更加的准确;
第 3 行 192.168.1.0/255.255.255.0 表示一个子网
第 4 行 192.168.1.10/ 255.255.255.255 表示一台服务器;
因此这里应该选择第 4 行作为转发目标。按照最长匹配原则筛选后,如果只剩一条候选记录,则按照这条记录的内容进行转发;在如果有相同的界别的就使用跃点数来判断,越小优先级越高;如果在路由表中无法找到匹配的记录,路由器会丢弃这个包,并通过ICMP消息告知发送方;
3.3.5 找不到匹配路由时选择默认路由
子网掩码 0.0.0.0(匹配最长原则,优先级最低) 的意思是网络包接收方 IP 地址和路由表目标地址的匹配中需要匹配的比特数为 0;任何目标IP 匹配.0.0.0.0运算后都是0.0.0.0表示;只要在这一条记录的网关列中填写接入互联网的路由器地址,当匹配不到其他路由时,网络包就会被转发到互联网接入路由器;因此这条记录被称为默认路由,这一行配置的网关地址被称为默认网关
从路由表中查找到转发目标之后,网络包就会被转交给输出端口,期间做了一些工作,第一个工作是更新 IP 头部中的 TTL(Time to Live,生存时间)字段,TTL 字段表示包的有效期,包每经过一个路由器的转发,这个值就会减 1,当这个值变成 0 时,就表示超过了有效期,这个包就会被丢弃,这个机制是为了防止包在一个地方陷入死循环。
发送方在发送包时会将 TTL 设为 64 或 128,也就是说包经过这么多路由器后就会“寿终正寝“,现在的互联网即便访问一台位于地球另一侧的服务器,最多也只需要经过几十个路由器,因此只要包被正确转发,就可以在过期之前到达目的地;
路由器的端口并不只有以太网一种,也可以支持其他局域网或专线通信技术。不同的线路和局域网类型各自能传输的最大包长度也不同,因此输出端口的最大包长度可能会小于输入端口,一旦转发的包长度超过了输出端口能传输的最大长度,就无法直接发送这个包了,可以使用 IP 协议中定义的分片功能对包进行拆分,缩短每个包的长度从 IP 分片的角度来看,这样一个包其实是一个未拆分的整体,也就是说,分片是对一个完整的包再进行拆分的过程;
包中有标志位字段来表示是否可以进行分片,如果不能分片,那么就只能丢弃这个包,并通过ICMP 消息通知发送方。否则,就可以按照输出端口 MTU 对数据进行依次拆分了,防骗后的数据答题一致,但其中有部分字段需要更新,这些字段用于记录分片相关的信息;
为了判断 MAC 头部中的 MAC 地址应该填写什么值,我们需要根据路由表的网关列判断对方的地址。如果网关是一个 IP 地址,则这个IP 地址就是我们要转发到的目标地址;如果网关为空(到了最后一层) ,则 IP 头部中的接收方 IP 地址就是要转发到的目标地址。知道对方的 IP 地址之后,接下来需要通过 ARP根据 IP 地址查询 MAC 地址,并将查询的结果作为接收方MAC 地址。路由器也有 ARP 缓存,因此首先会在 ARP 缓存中查询,如果找不到则发送 ARP 查询请求。
路由器判断下一个转发目标的方法如下。
IP 协议本身没有传输包的功能(确定路由),因此包的实际传输要委托以太网来进行,路由器是基于 IP 设计的,而交换机是基于以太网设计的,因 此 IP 与以太网的关系也就是路由器与交换机的关系。简单来说,IP(路由器)负责将包发送给通信对象这一整体过程,而其中将包传输到下一个路由器的过程则是由以太网(交换机)来负责的
IP 本身不负责包的传输,而是委托各种通信技术将包传输到下一个路由器这样的设计是有重要意义的,即可以根据需要灵活运用各种通信技术,这也是 IP 的最大特点
早期,那个时候没有内网和外网的区别,所有客户端都是直接连接到互联网的。但进入 20 世纪 90 年代之后,互联网的设备数量也快速增长,还用原来的方法接入,过不了多久,可分配的地址就用光了,公司A,B ,它们的内网是完全独立的, 即是A里面和B 里面具有一样的IP,因为它们之间不会进行通信。只要在每家公司自己的范围内,能够明确判断网络包的目的地就可以了,是否和其他公司的内网地址重复无关紧要,只要每个公司的网络是相互独立的,就不会出现问题
内网地址范围
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
在制定私有地址规则时,这些地址属于公有地址中还没有分配的范围。换句话说,私有地址本身并没有什么特别的结构,只不过是将公有地址中没分配的一部分拿出来规定只能在内网使用它们而已。这个范围中的地址和其他公司重复也没关系,所以对于这些地址不作统一管理,不需要申请,任何人都可以自由使用。当然,如果在公司内部地址有重复就无法传输网络包了,因此必须避免在内网中出现重复的地址,(不能使用其他的段,是因为有的公网已经在用了,比如你的公网IP 和内网IP 是一样的那么,在NAT 转换的时候可能就会发生冲突而无法上网)
地址转换的基本原理是在转发网络包时对 IP 头部中的 IP 地址和端口号
示例:访问Web 服务器
首先,TCP 连接操作的第一个包被转发到互联网时,将发送方 IP 地址从私有地址改写成公有地址。这里使用的公有地址是地址转换设备 的互联网接入端口的地址。与此同时,端口号也需要进行改写,地址转换设备会随机选择一个空闲的端口。然后,改写前的私有地址和端口号,以及改写后的公有地址和端口号,会作为一组相对应的记录保存在地址转换设备内部的一张表中。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NL1ydJjq-1630941677486)(D:\Resource\note\network\N3\n3_17.png)]
然后包就被发往互联网,到达服务器。服务器返回的包的接收包是原始包的发送方,因此返回的包的接收方就是改写后的公有地址和端口号。这个公有地址其实是地址转换设备的地址,因此这个返回包就会到达地址转换设备;地址转换设备会从地址对应表中通过公有地址和端口号找到相对应的私有地址和端口号,并改写接收方信息,然后将包发给公司内网,这样包就能够到达原始的发送方了;当数据收发结束,进入断开阶段,访问互联网的操作全部完成后,对应表中的记录就会被删除。
3.4.3 改写端口号的原因
现在我们使用的地址转换机制是同时改写地址和端口号的,但早期的地址转换机制是只改写地址,不改写端口号的;那么公有地址要和私有地址要一一对应了,当然用完就删除对应关系,那么如果同时多个设备要使用一个端口的话就不够用了,就需要与之对应的相同个数的公网IP,改写端口号正是为了解决这个问题。公有IP+端口的组合有几万中组合(65535) 可以同时分配几万个私有地址来一起上网,大大提高公有地址的使用率;
对于从互联网访问公司内网的包,如果在对应表中没有记录就无法正常转发。因为如果对应表中没有记录,就意味着地址转换设备无法判断公有地址与私有地址之间的对应关系。这意味着对于没有在访问互联网的内网设备,是无法从互联网向其发送网络包的,除非公司主动允许,否则是无法从互联网向公司内网发送网络包的。这种机制具有防止非法入侵的效果;
有时候我们希望能够从互联网访问公司内网,这需要进行一些设置才能实现。之所以无法从互联网访问内网,是因为对应表里没有相应的记录,那么我们只要事先手动添加这样的记录就可以了(外网映射)
下面来介绍一下包过滤功能。包过滤也是路由器的一个重要附加功能,刚才的地址转换看起来有点复杂,不过包过滤的机制并不复杂。包过滤就是在对包进行转发时,根据 MAC 头部、IP 头部、TCP 头部的内容 ,按照事先设置好的规则决定是转发这个包,还是丢弃这个包。我们通常说的防火墙设备或软件,大多数都是利用这一机制来防止非法入侵的;