总览
信号在网线和集线器中传输
网络包中每个包都是独立传输的
网线中的信号会衰减信号在网线的传输过程中,能量会逐渐损失。 网线越长, 信号衰减就越严重
双绞线是为了抑制噪声
- 产生噪声的原因是网线周围的电磁波, 当电磁波接触到金属等导体时, 在其中就会产生电流
集线器将信号发送给所有连接在它上面的线路。(除了输入端口外)
交换机的包转发操作
交换机根据地址表进行转发
交换机端口的 MAC 模块不具有 MAC 地址
- 所以能够接收包
交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的端口
MAC 地址表的维护
反向查询
- 只要将这个包的发送方 MAC 地址写入地址表, 以后当收到发往这个地址的包时, 交换机就可以将它转发到正确的端口了
删除过时记录
- 终端设备可能会移动
这个时候只需要将一段时间不使用的过时记录从地址表中删除就可以了。这个删除时间为几分钟
几种特殊情况
交换机查询地址表之后发现记录中的目标端口和这个包的源端口是同一个端口
- 直接丢弃
地址表中找不到指定的 MAC 地址
- 这种情况下, 交换机无法判断应该把包转发到哪个端口, 只能将包转发到除了源端口之外的所有端口上, 无论该设备连接在哪个端口上都能收到这个包
全双工模式可以同时进行发送和接收
全双工模式不会发生碰撞
- 全双工模式是交换机特有的工作模式, 它可以同时进行发送和接收操作, 集线器不具备这样的特性。使用集线器时, 如果多台计算机同时发送信号, 信号就会在集线器内部混杂在一起, 进而无法使用, 这种现象称为碰撞, 是以太网的一个重要特征。 不过, 只要不用集线器, 就不会发生碰撞
- 而使用双绞线时, 发送和接收的信号线是各自独立的, 因此在双绞线中信号不会发生碰撞。 网线连接的另一端, 即交换机端口和网卡的 PHY( MAU) 模块以及 MAC 模块, 其内部发送和接收电路也是各自独立的, 信号也不会发生碰撞。
- 如果不存在碰撞, 也就不需要半双工模式中的碰撞处理机制了。 也就是说, 发送和接收可以同时进行
现在我们基本上不使用集线器了,而是将计算机直接连接到交换机上
路由器的包转发操作
路由器的基本知识
路由器包括转发模块和端口模块两部分
- 转发模块负责判断包的转发目的地
- 端口模块负责包的收发操作
- 通过更换网卡, 计算机不仅可以支持以太网, 也可以支持无线局域网,路由器也是一样。 如果路由器的端口模块安装了支持无线局域网的硬件,就可以支持无线局域网了
- 通过更换网卡, 计算机不仅可以支持以太网, 也可以支持无线局域网,路由器也是一样。 如果路由器的端口模块安装了支持无线局域网的硬件,就可以支持无线局域网了
路由器的各个端口都具有 MAC 地址和 IP 地址。但端口并不会成为 IP 的发送方和接收方。端口是按照以太网规范接收包的,即当端口的 MAC 地址和包的接收方MAC 地址一致时,端口才接受这个包,否则就丢弃包
查询电脑网卡
路由器工作过程
- 路由器在转发包时, 首先会通过端口将发过来的包接收进来, 这一步的工作过程取决于端口对应的通信技术。对于以太网端口来说, 就是按照以太网规范进行工作, 而无线局域网端口则按照无线局域网的规范工作, 总之就是委托端口的硬件将包接收进来。
- 接收过程中除了要检查FCS外,还要检查 MAC 头部中的接收方 MAC 地址, 看看是不是发给自己的包,如果是就放到接收缓冲区中, 否则就丢弃这个包。
- 完成包接收操作之后, 路由器就会丢弃包开头的 MAC 头部。 MAC 头部的作用就是将包送达路由器, 其中的接收方 MAC 地址就是路由器端口的 MAC 地址。 因此, 当包到达路由器之后, MAC 头部的任务就完成了,于是 MAC 头部就会被丢弃
- 接下来, 转发模块会根据接收到的包的 IP 头部中记录的接收方 IP 地址, 在路由表中进行查询, 以此判断转发目标。
- 查询路由表时,相同前缀的话,选择最长的记录,如果在路由表中无法找到匹配的记录, 路由器会丢弃这个包, 并通过ICMPA 消息告知发送方。但如果路由表中有默认路由的话,发送给默认路由器(只要将子网掩码设置为 0.0.0.0, 那么无论任何地址都能匹配到这一条记录)
- 找到匹配路由后, 转发模块将包转移到转发目标对应的端口, 端口再按照硬件的规则将包发送出去, 也就是转发模块委托端口模块将包发送出去的意思
- 发送操作与计算机相同,路由器也要查询ARP表,根据以太网规则发送
路由表中的信息
交换机是通过 MAC 头部中的接收方 MAC 地址来判断转发目标的, 而路由器则是根据 IP 头部中的 IP 地址来判断的。
子网掩码
- 路由器进行IP匹配时,会忽略主机号,只匹配网络号
- 路由表的子网掩码列只表示在匹配网络包目标地址时需要对比的比特数量
跃点数
- 跃点计数, 它表示距离目标 IP 地址的距离是远还是近。 这个数字越小, 表示距离目的地越近; 数字越大, 表示距离目的地越远
路由表进行维护的方法有几种, 大体上可分为以下两类
- 由人手动维护路由记录
- 根据路由协议机制, 通过路由器之间的信息交换由路由器自行维护路由表的记录(RIP、 OSPC、 BGP)
包在路由器传输中是有生命周期的
- TTL 字段表示包的有效期, 包每经过一个路由器的转发, 这个值就会减 1, 当这个值变成 0 时, 就表示超过了有效期, 这个包就会被丢弃
- 发送方在发送包时会将 TTL 设为 64 或 128。现在的互联网即便访问一台位于地球另一侧的服务器,最多也只需要经过几十个路由器
既然IP数据包有TTL跳数限制,那它是如何实现远距离(横跨大半个地球)通信的? - 知乎
https://www.zhihu/question/324367803
- 互联网是由多个AS(自治系统组成),AS之间像渔网一样连接,但是每个AS里面可能有几千个路由器,这些路由器通过MPLS组成骨干网,如果配置了no-propagate-ttl,那么经过一个AS,TTL才会-1,因为骨干网不应该对外暴露。如果没有配置,则MPLS的Lable switching跳数也会记入TTL。通常大部分地址都在3-5个AS范围内都可以达到
- 传统的网络结构,一般是设置国家级的骨干网,在几个区域中心大城市设置核心路由器,之间近似全互联,然后每个省里设置几台路由器连接国家级骨干网,然后每个市里设置几台路由器连接省里的路由器,然后每个区县设置业务路由器连接市里的路由器。比如,三亚天涯区一位用户访问在北京的服务器,可能的一种路径是天涯区的bras-三亚的路由器-海口的路由器1-海口的路由器2-广州的路由器-北京的路由器2-北京的路由器1-服务器所在数据中心路由器,然后就到服务器了。
所以路由器跳数完全够用。
通过分片功能拆分大网络包
分片之前,要检查IP 头部中的标志字段, 确认是否可以分片
注意这里的分片将TCP当做是数据
如果查询标志字段发现不能分片, 那么就只能丢弃这个包, 并通过ICMP 消息通知发送方
路由器的附加功能
地址转换
IPV4地址不够用,于是采用私有地址节省IP地址,但是私有地址只能在内部通信,访问互联网时候需要转换为公有地址
使用端口号的好处
- 端口号是一个 16 比特的数值, 总共可以分配出几万个端口, 因此如果用公有地址加上端口的组合对应一个私有地址, 一个公有地址就可以对应几万个私有地址, 这种方法提高了公有地址的利用率。
互联网访问公司内网
内网访问外网
- 从公司内网访问互联网的包, 即便其发送方私有地址和端口号没有保存在对应表中也是可以正常转发的, 因为用来改写的公有地址就是地址转换设备自身的地址, 而端口号只要随便选一个空闲的端口就可以了,这些都可以由地址转换设备自行判断
外网访问内网
- 对于从互联网访问公司内网的包, 如果在对应表中没有记录就无法正常转发。 因为如果对应表中没有记录, 就意味着地址转换设备无法判断公有地址与私有地址之间的对应关系。这意味着对于没有在访问互联网的内网设备, 是无法从互联网向其发送网络包的
- 一般来说, 用于外网访问的服务器可以放在地址转换设备的外面并为它分配一个公有地址, 也可以将服务器的私有地址手动添加到地址转换设备中, 这样就可以从互联网访问到这台具有私有地址的服务器了
包过滤
在对包进行转发时, 根据 MAC 头部、 IP 头部、 TCP 头部的内容,按照事先设置好的规则决定是转发这个包, 还是丢弃这个包。 我们通常说的防火墙设备或软件, 大多数都是利用这一机制来防止非法入侵的
其他知识
二层交换机
- 二层交换机工作于OSI模型的第2层(数据链路层),故而称为二层交换机
三层交换机:
- 三层交换(也称多层交换技术,或IP交换技术)是相对于传统交换概念而提出的。众所周知,传统的交换技术是在OSI网络标准模型中的第二层——数据链路层进行操作的,而三层交换技术是在网络模型中的第三层实现了数据包的高速转发。简单地说,三层交换技术就是:二层交换技术+三层转发技术,就是具有部分路由器功能的交换机
二层交换机与普通交换机
- 原理都是一样的,小型廉价的普及型产品一般叫交换机,大型的高性能产品一般叫二层交换机,改个名字,身价翻倍!
总览
信号在网线和集线器中传输
网络包中每个包都是独立传输的
网线中的信号会衰减信号在网线的传输过程中,能量会逐渐损失。 网线越长, 信号衰减就越严重
双绞线是为了抑制噪声
- 产生噪声的原因是网线周围的电磁波, 当电磁波接触到金属等导体时, 在其中就会产生电流
集线器将信号发送给所有连接在它上面的线路。(除了输入端口外)
交换机的包转发操作
交换机根据地址表进行转发
交换机端口的 MAC 模块不具有 MAC 地址
- 所以能够接收包
交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的端口
MAC 地址表的维护
反向查询
- 只要将这个包的发送方 MAC 地址写入地址表, 以后当收到发往这个地址的包时, 交换机就可以将它转发到正确的端口了
删除过时记录
- 终端设备可能会移动
这个时候只需要将一段时间不使用的过时记录从地址表中删除就可以了。这个删除时间为几分钟
几种特殊情况
交换机查询地址表之后发现记录中的目标端口和这个包的源端口是同一个端口
- 直接丢弃
地址表中找不到指定的 MAC 地址
- 这种情况下, 交换机无法判断应该把包转发到哪个端口, 只能将包转发到除了源端口之外的所有端口上, 无论该设备连接在哪个端口上都能收到这个包
全双工模式可以同时进行发送和接收
全双工模式不会发生碰撞
- 全双工模式是交换机特有的工作模式, 它可以同时进行发送和接收操作, 集线器不具备这样的特性。使用集线器时, 如果多台计算机同时发送信号, 信号就会在集线器内部混杂在一起, 进而无法使用, 这种现象称为碰撞, 是以太网的一个重要特征。 不过, 只要不用集线器, 就不会发生碰撞
- 而使用双绞线时, 发送和接收的信号线是各自独立的, 因此在双绞线中信号不会发生碰撞。 网线连接的另一端, 即交换机端口和网卡的 PHY( MAU) 模块以及 MAC 模块, 其内部发送和接收电路也是各自独立的, 信号也不会发生碰撞。
- 如果不存在碰撞, 也就不需要半双工模式中的碰撞处理机制了。 也就是说, 发送和接收可以同时进行
现在我们基本上不使用集线器了,而是将计算机直接连接到交换机上
路由器的包转发操作
路由器的基本知识
路由器包括转发模块和端口模块两部分
- 转发模块负责判断包的转发目的地
- 端口模块负责包的收发操作
- 通过更换网卡, 计算机不仅可以支持以太网, 也可以支持无线局域网,路由器也是一样。 如果路由器的端口模块安装了支持无线局域网的硬件,就可以支持无线局域网了
- 通过更换网卡, 计算机不仅可以支持以太网, 也可以支持无线局域网,路由器也是一样。 如果路由器的端口模块安装了支持无线局域网的硬件,就可以支持无线局域网了
路由器的各个端口都具有 MAC 地址和 IP 地址。但端口并不会成为 IP 的发送方和接收方。端口是按照以太网规范接收包的,即当端口的 MAC 地址和包的接收方MAC 地址一致时,端口才接受这个包,否则就丢弃包
查询电脑网卡
路由器工作过程
- 路由器在转发包时, 首先会通过端口将发过来的包接收进来, 这一步的工作过程取决于端口对应的通信技术。对于以太网端口来说, 就是按照以太网规范进行工作, 而无线局域网端口则按照无线局域网的规范工作, 总之就是委托端口的硬件将包接收进来。
- 接收过程中除了要检查FCS外,还要检查 MAC 头部中的接收方 MAC 地址, 看看是不是发给自己的包,如果是就放到接收缓冲区中, 否则就丢弃这个包。
- 完成包接收操作之后, 路由器就会丢弃包开头的 MAC 头部。 MAC 头部的作用就是将包送达路由器, 其中的接收方 MAC 地址就是路由器端口的 MAC 地址。 因此, 当包到达路由器之后, MAC 头部的任务就完成了,于是 MAC 头部就会被丢弃
- 接下来, 转发模块会根据接收到的包的 IP 头部中记录的接收方 IP 地址, 在路由表中进行查询, 以此判断转发目标。
- 查询路由表时,相同前缀的话,选择最长的记录,如果在路由表中无法找到匹配的记录, 路由器会丢弃这个包, 并通过ICMPA 消息告知发送方。但如果路由表中有默认路由的话,发送给默认路由器(只要将子网掩码设置为 0.0.0.0, 那么无论任何地址都能匹配到这一条记录)
- 找到匹配路由后, 转发模块将包转移到转发目标对应的端口, 端口再按照硬件的规则将包发送出去, 也就是转发模块委托端口模块将包发送出去的意思
- 发送操作与计算机相同,路由器也要查询ARP表,根据以太网规则发送
路由表中的信息
交换机是通过 MAC 头部中的接收方 MAC 地址来判断转发目标的, 而路由器则是根据 IP 头部中的 IP 地址来判断的。
子网掩码
- 路由器进行IP匹配时,会忽略主机号,只匹配网络号
- 路由表的子网掩码列只表示在匹配网络包目标地址时需要对比的比特数量
跃点数
- 跃点计数, 它表示距离目标 IP 地址的距离是远还是近。 这个数字越小, 表示距离目的地越近; 数字越大, 表示距离目的地越远
路由表进行维护的方法有几种, 大体上可分为以下两类
- 由人手动维护路由记录
- 根据路由协议机制, 通过路由器之间的信息交换由路由器自行维护路由表的记录(RIP、 OSPC、 BGP)
包在路由器传输中是有生命周期的
- TTL 字段表示包的有效期, 包每经过一个路由器的转发, 这个值就会减 1, 当这个值变成 0 时, 就表示超过了有效期, 这个包就会被丢弃
- 发送方在发送包时会将 TTL 设为 64 或 128。现在的互联网即便访问一台位于地球另一侧的服务器,最多也只需要经过几十个路由器
既然IP数据包有TTL跳数限制,那它是如何实现远距离(横跨大半个地球)通信的? - 知乎
https://www.zhihu/question/324367803
- 互联网是由多个AS(自治系统组成),AS之间像渔网一样连接,但是每个AS里面可能有几千个路由器,这些路由器通过MPLS组成骨干网,如果配置了no-propagate-ttl,那么经过一个AS,TTL才会-1,因为骨干网不应该对外暴露。如果没有配置,则MPLS的Lable switching跳数也会记入TTL。通常大部分地址都在3-5个AS范围内都可以达到
- 传统的网络结构,一般是设置国家级的骨干网,在几个区域中心大城市设置核心路由器,之间近似全互联,然后每个省里设置几台路由器连接国家级骨干网,然后每个市里设置几台路由器连接省里的路由器,然后每个区县设置业务路由器连接市里的路由器。比如,三亚天涯区一位用户访问在北京的服务器,可能的一种路径是天涯区的bras-三亚的路由器-海口的路由器1-海口的路由器2-广州的路由器-北京的路由器2-北京的路由器1-服务器所在数据中心路由器,然后就到服务器了。
所以路由器跳数完全够用。
通过分片功能拆分大网络包
分片之前,要检查IP 头部中的标志字段, 确认是否可以分片
注意这里的分片将TCP当做是数据
如果查询标志字段发现不能分片, 那么就只能丢弃这个包, 并通过ICMP 消息通知发送方
路由器的附加功能
地址转换
IPV4地址不够用,于是采用私有地址节省IP地址,但是私有地址只能在内部通信,访问互联网时候需要转换为公有地址
使用端口号的好处
- 端口号是一个 16 比特的数值, 总共可以分配出几万个端口, 因此如果用公有地址加上端口的组合对应一个私有地址, 一个公有地址就可以对应几万个私有地址, 这种方法提高了公有地址的利用率。
互联网访问公司内网
内网访问外网
- 从公司内网访问互联网的包, 即便其发送方私有地址和端口号没有保存在对应表中也是可以正常转发的, 因为用来改写的公有地址就是地址转换设备自身的地址, 而端口号只要随便选一个空闲的端口就可以了,这些都可以由地址转换设备自行判断
外网访问内网
- 对于从互联网访问公司内网的包, 如果在对应表中没有记录就无法正常转发。 因为如果对应表中没有记录, 就意味着地址转换设备无法判断公有地址与私有地址之间的对应关系。这意味着对于没有在访问互联网的内网设备, 是无法从互联网向其发送网络包的
- 一般来说, 用于外网访问的服务器可以放在地址转换设备的外面并为它分配一个公有地址, 也可以将服务器的私有地址手动添加到地址转换设备中, 这样就可以从互联网访问到这台具有私有地址的服务器了
包过滤
在对包进行转发时, 根据 MAC 头部、 IP 头部、 TCP 头部的内容,按照事先设置好的规则决定是转发这个包, 还是丢弃这个包。 我们通常说的防火墙设备或软件, 大多数都是利用这一机制来防止非法入侵的
其他知识
二层交换机
- 二层交换机工作于OSI模型的第2层(数据链路层),故而称为二层交换机
三层交换机:
- 三层交换(也称多层交换技术,或IP交换技术)是相对于传统交换概念而提出的。众所周知,传统的交换技术是在OSI网络标准模型中的第二层——数据链路层进行操作的,而三层交换技术是在网络模型中的第三层实现了数据包的高速转发。简单地说,三层交换技术就是:二层交换技术+三层转发技术,就是具有部分路由器功能的交换机
二层交换机与普通交换机
- 原理都是一样的,小型廉价的普及型产品一般叫交换机,大型的高性能产品一般叫二层交换机,改个名字,身价翻倍!