美文网首页
计算机网络 - 4

计算机网络 - 4

作者: Super曲江龙Kimi | 来源:发表于2020-02-20 16:06 被阅读0次

    转发设备

    信号从网卡发出进入网线后,就通过网线进入了网络,网线是双绞线(拧在一起防止噪声干扰),通过网线传入转发设备,最终到达目的地。


    image.png

    一般局域网内会通过一个或多个集线器或者交换机相连,集线器和交换机都是一种转发设备。然后通过路由器转发到外界网络中。

    集线器:能将信号发送到所有与他相连的设备上。
    集线器是简单粗暴的将信号全部广播出去。如果一条线路中正在发送信号,此时接收信号就会和发送信号发生碰撞。导致信号混乱。这就是半双工模式,此时半双工模式就会有碰撞处理机制,具体说就是发送信号前先看网线中有没有接收信号过来,如果有就等待收到信号之后再发送。

    交换机:交换机中有个地址表能将信号发送到特定的目标上。
    交换机采用的是全双工模式,发送和接收时相互独立的处理电路,所以不需要处理碰撞情况,可以同时发送。而且交换机中有一个mac地址表。每次一个设备向交换机发送信号后就会在表中添加一个记录,长时间不使用一个端口(是交换机的接口不是应用程序端口)就会删除。交换机就是通过这个地址表将包发送给固定的设备的。如果mac表中没有记录,那么第一次发送就不知道发送给哪个端口,这是就会广播发送给除自己以为所有端口。接收的设备会检查,如果目标mac地址是自身就接收否则丢弃。等到交换机收到接收确认的响应时就会在mac表中添加一条信息。重启交换机会清空mac表

    交换机和集线器是没有mac地址和ip的,只是个转发设备。而路由器中是有mac、ip地址的

    image.png

    路由器:路由器中也有ip的地址表,转发到下一个最近的路由器中。

    image.png
    路由器转发包时,首先路由器端口会接收发给自己的以太网包 ,然后查询转发目标,再由相应的端口作为发送方将以太网包发送出去。这一点和交换机是不同的,交换机只是将进来的包转发出去而已,它自己并不会成为发送方或者接收方

    交换机是通过 MAC 头部中的接收方 MAC 地址来判断转发目标的,而路由器则是根据 IP 头部中的 IP 地址来判断的。现代路由器已经包含了交换机和集线器的功能了

    路由器接收包过程

    首先,信号到达网线接口部分,其中的 PHY(MAU)模块和 MAC 模块将信号转换为数字信息,然后通过包末尾的 FCS 进行错误校验,如果没问题则检查 MAC 头部中的接收方 MAC 地址,看看是不是发给自己的包,如果是就放到接收缓冲区中,否则就丢弃这个包,完成包接收操作之后,路由器就会丢弃包开头的 MAC 头部

    接下来路由器会根据 MAC 头部后方的 IP 头部中的内容进行包的转发操作。转发操作分为几个阶段,首先是查询路由表判断转发目标

    路由表:路由器会忽略主机号,只匹配网络号
    目标地址和子网掩码都是0.0.0.0是默认网关,如果其他匹配不上就发送到此处
    接口就是路由器连接的端口,跃点数就是距离目标的距离,越小就越近

    image.png

    假设地址为 10.10.1.101 的计算机要向地址为 192.168.1.10 的服务器发送一个包,这个包先到达图中的路由器。判断转发目标的第一步,就是根据包的接收方 IP 地址查询路由表中的目标地址栏,以找到相匹配的记录。这个匹配并不是匹配全部 32 个比特,而是根据子网掩码列中的值判断网络号的比特数,并匹配相应数量的比特 A。例如3行,子网掩码列为 255.255.255.0,就表示需要匹配从左起 24 个比特。网络包的接收方 IP 地址和路由表中的目标地址左起 24 个比特的内容都是192.168.1,因此两者是匹配的,该行记录就是候选转发目标之一。按照这样的规则,我们可能会匹配到多条候选记录。在这个例子中,第 3、4、5 行都可以匹配 B。其中,路由器首先寻找网络号比特数最长的一条记录。网络号比特数越长,说明主机号比特数越短,也就意味着该子网内可分配的主机数量越少,即子网中可能存在的主机数量越少,这一规则的目的是尽量缩小范围,所以根据这条记录判断的转发目标就会更加准确。第三行192.168.1.0/255.255.255.0 表示一个子网,第四行192.168.1.10/255.255.255.255 表示一台服务器。相比服务器所属的子网来说,直接指定服务器本身的地址时范围更小,因此这里应该选择第 4 行作为转发目标。按照最长匹配原则筛选后,如果只剩一条候选记录,则按照这条记录的内容进行转发。然而,有时候路由表中会存在网络号长度相同的多条记录。这时,需要根据跃点计数的值来进行判断。跃点计数越小说明该路由越近,因此应选择跃点计数较小的记录,如果在路由表中无法找到匹配的记录,路由器会丢弃这个包,并通过ICMPA 消息告知发送方。找不到匹配路由时选择默认路由

    设置TTL
    从路由表中查找到转发目标之后,网络包就会被转交给输出端口,这是要做的工作是更新 IP 头部中的 TTL,TTL 字段表示包的有效期,包每经过一个路由器的转发,这个值就会减 1,当这个值变成 0 时,就表示超过了有效期,这个包就会被丢弃。这个机制是为了防止包在一个地方陷入死循环

    IP分片
    不同的线路和局域网类型各自能传输的最大包长度也不同,所以有可能遇到包的大小大于端口输出的大小,这时候就需要进行分片。可以使用 IP 协议中定义的分片功能对包进行拆分,缩短每个包的长度。需要注意的是,这里说的分片和 TCP 对数据进行拆分的机制是不同的。TCP 拆分数据的操作是在将数据装到包里之前进行的,换句话说,拆分好的一个数据块正好装进一个包里。从 IP 分片的角度来看,这样一个包其实是一个未拆分的整体,也就是说,分片是对一个完整的包再进行拆分的过程

    image.png

    发送过程
    路由器发送过程和协议栈中的 IP 模块发送包的过程是相同的,即在包前面加上 MAC 头部,设置其中的一些字段,然后将完成的包转换成电信号并发送出去

    为了判断 MAC 头部中的 MAC 地址应该填写什么值,我们需要根据路由表的网关列判断对方的地址。如果网关是一个 IP 地址,则这个IP 地址就是我们要转发到的目标地址;如果网关为空 ,则 IP 头部中的接收方 IP 地址就是要转发到的目标地址。知道对方的 IP 地址之后,接下来需要通过 ARP 根据 IP 地址查询 MAC 地址,并将查询的结果作为接收方MAC 地址。路由器也有 ARP 缓存,因此首先会在 ARP 缓存中查询,如果找不到则发送 ARP 查询请求,接下来是发送方 MAC 地址字段,这里填写输出端口的 MAC 地址,网络包完成后,接下来会将其转换成电信号并通过端口发送出去。

    路由器和交换机的关系
    IP 协议本身没有传输包的功能,因此包的实际传输要委托以太网来进行,路由器是基于 IP 设计的,而交换机是基于以太网设计的,因此 IP 与以太网的关系也就是路由器与交换机的关系。
    IP(路由器)负责将包发送给通信对象这一整体过程,而其中将包传输到下一个路由器的过程则是由以太网(交换机)来负责的

    网络并非只有以太网一种,还有无线局域网,以及接入互联网的通信线路,它们和 IP 之间的关系又是什么样的呢?其实只要将以太网替换成无线局域网、互联网线路等通信规格就可以了。也就是说,如果和下一个路由器之间是通过无线局域网连接的,那么就委托无线局域网将包传输过去;如果是通过互联网线路连接的,那么就委托它将包传输过去。除了这里列举的例子之外,世界上还有很多其他类型的通信技术,它们之间的关系也是一样的,都是委托所使用的通信技术将包传输过去。

    IP 本身不负责包的传输,而是委托各种通信技术将包传输到下一个路由器,这样的设计是有重要意义的,即可以根据需要灵活运用各种通信技术,这也是 IP 的最大特点。

    路由器地址转换

    随着设备的增多,可分配的IP地址在慢慢耗尽。,一旦固定地址用光,新的设备就无法接入了,互联网也就无法继续发展了。
    有种解决方案是:假如有 A、B 两家公司,它们的内网是完全独立的。这种情况下,两家公司的内网之间不会有网络包流动,即使 A 公司的某台服务器和 B 公司的某台客户端具有相同的 IP 地址也没关系,因为它们之间不会进行通信。只要在每家公司自己的范围内,能够明确判断网络包的目的地就可以了

    解决地址不足的问题,利用的就是这样的性质,即公司内部设备的地址不一定要和其他公司不重复。这样一来,公司内部设备就不需要分配固定地址了,从而大幅节省了 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

    但是公司内网还是需要和互联网进行通信的,所以就需要用到地址转换

    image.png

    地址转换的基本原理是在转发网络包时对 IP 头部中的 IP 地址和端口号进行改写

    image.png

    如果地址表中没有记录,互联网就不能访问公司内网。但是如果手动添加进去就可以了

    相关文章

      网友评论

          本文标题:计算机网络 - 4

          本文链接:https://www.haomeiwen.com/subject/gnuzfhtx.html