网络是怎样连接的?(三)

1,832 阅读11分钟

前言

笔记补充上篇 网络是怎样连接的?(二)

大家都了解TCP 协议,它应用广泛,场景繁多。但是设计复杂,开篇先聊一下为啥TCP为什么要设计得如此复杂?以及 UDP 适合做哪些你之前不知道的事情?

TCP为什么要设计得如此复杂

可靠性

需要将数据可靠的发送给对方。为了实现可靠性,我们就需要确认对方是否收到了发送的数据,如果没有还需要再发一遍。

高效

这种模式怎么看都很低效,为啥说高效能?为了实现高效的传输,我们要避免重发已经送达的包,而是只重发那些出错的或者未送达的包。TCP之所以复杂,就是因为要实现这一点。

了解了TCP的优点后,来康康UDP,UDP协议没有其他功能,遇到错误或者丢包也一概不管。因为UDP只负责单纯地发送包而已。所以它很

UDP协议的常见场景

控制用的短数据

网络是怎样连接的?(一)提到的

像DNS查询等交换控制信息的操作基本上都可以在一个包的大小范围内解决,这种场景中就可以用UDP来代替TCP

音频和视频数据

这个方面是不是没想到?<{=....(嘎嘎~)

音频和视频数据必须在规定的时间内送达,一旦送达晚了,就会错过播放时机,导致声音和图像卡顿

如果像TCP一样通过接收确认响应来检查错误并重发,重发的过程需要消耗一定的时间,因此重发的数据很可能已经错过了播放的时机。一旦错过播放时机,重发数据也是没有用的,因为声音和图像已经卡顿了,这是无法挽回的

我们可以用高速线路让重发的数据能够在规定的时间内送达,但这样一来可能要增加几倍的带宽才行。

此外,音频和视频数据中缺少了某些包并不会产生严重的问题,只是会产生一些失真或者卡顿而已,一般都是可以接受的。在这些无需重发数据,或者是重发了也没什么意义的情况下,使用UDP发送数据的效率会更高

本篇想聊的点

  1. 信号在网线和集线器中传输
  2. 交换机的包转发操作
  3. 路由器的包转发操作
  4. 路由器的附加功能

信号在网线和集线器中传输

概念

从计算机发送出来的网络包会通过集线器、路由器等设备被转发,最终到达目的地。

转发设备会根据包头部中的控制信息,在转发设备内部一个写有转发规则的表中进行查询,以此来判断包的目的地,然后将包朝目的地的方向进行转发。

邮递员在送信的时候只看信封不看里面的内容,同样地,转发设备在进行转发时也不看数据的内容。因此,无论包里面装的是应用程序的数据或者是TCP协议的控制信息,都不会对包的传输操作本身产生影响。

换句话说,HTTP请求的方法,TCP的确认响应和序号,客户端和服务器之间的关系,这一切都与包的传输无关。因此,所有的包在传输到目的地的过程中都是独立的,相互之间没有任何关联。

信号衰减

我在10米外喊一声跟 在50米外喊一声 声音是会逐步衰减的

同理网线越长,信号衰减就越严重。

除了网线长度外,噪声对于电信号的影响也是很大的。

原因

以太网中的信号波形是方形的,但损失能量会让信号的拐角变圆,这是因为电信号的频率越高,能量的损失率越大。信号的拐角意味着电压发生剧烈的变化,而剧烈的变化意味着这个部分的信号频率很高。高频信号更容易损失能量,因此本来剧烈变化的部分就会变成缓慢的变化,拐角也就变圆了。

后果

即便线路条件很好,没有噪声,信号在传输过程中依然会发生失真,如果再加上噪声的影响,失真就会更厉害。噪声根据强度和类型会产生不同的影响,但如果本来就已经衰减的信号再进一步失真,就会出现对0和1的误判,这就是产生通信错误的原因。

聪明的设计师如何解决 这个问题能?

局域网网线使用的是双绞线,其中双绞的意思就是以两根信号线为一组缠绕在一起,这种拧麻花一样的设计是为了抑制噪声的影响。

那么双绞线为什么能够抑制噪声呢?

首先,我们来看看噪声是如何产生的。产生噪声的原因是网线周围的电磁波,当电磁波接触到金属等导体时,在其中就会产生电流。因此,如果网线周围存在电磁波,就会在网线中产生和原本的信号不同的电流。由于信号本身也是一种带有电压变化的电流,其本质和噪声产生的电流是一样的,所以信号和噪声的电流就会混杂在一起,导致信号的波形发生失真,这就是噪声的影响。

(a)通过两根信号线的缠绕抵消外源性噪声;

(b)通过改变节距抑制内源性噪声。

看到这里应该解决了 为啥淘宝上的网线价格浮动这么大。 9.9包邮上百的也有,因为种类、做工以及使用的材质不一样。

以后在拼夕夕买网线,主要看下这个大类 就了解喽~

有的时候网慢不一定是运营商的问题

也有可能是劣质网线的问题

集线器将信号发往所有线路

当信号到达集线器后,集线器将信号发送给所有连接在它上面的线路。

这些设备在收到信号之后会通过MAC头部中的接收方MAC地址判断是不是发给自己的,如果是发给自己的就接受,否则就忽略

快递员师傅: 身份证号是110xxxx, 你的快递麻烦拿一下

所有公司的人员都听到了,我不叫张三我就忽略了,叫张三的这个人 听到后 就直接拿走了包裹。就是这个过程。这就是集线器的原理了。

交换机

交换机与集线器两个词放在一起,很明显 交换机更为人所熟知

交换机是什么?

大家可以认为交换机的每个网线接口后面都是一块网卡。

网线接口和后面的电路部分加在一起称为一个端口,也就是说交换机的一个端口就相当于计算机上的一块网卡。但交换机的工作方式和网卡有一点不同。网卡本身具有MAC地址,并通过核对收到的包的接收方MAC地址判断是不是发给自己的,如果不是发给自己的则丢弃;相对地,交换机的端口不核对接收方MAC地址,而是直接接收所有的包并存放到缓冲区中。因此,和网卡不同,交换机的端口不具有MAC地址

交换机是怎么工作的

交换机根据MAC地址表查找MAC地址,然后将信号发送到相应的端口。

MAC地址表的维护

维护操作分为两种

  1. 写的操作,收到包时将发送方MAC地址以及其输入端口的号码写入MAC地址表中。

  2. 删除、更新的操作,防止设备移动时产生问题(比如我抱走电脑去办公室了)

错误、过时记录从地址表中删除的时间一般为几分钟,因此在过时记录被删除之前,依然可能有发给该设备的包到达交换机。这时,交换机会将包转发到老的端口,通信就会发生错误,这种情况尽管罕见,但的确也有可能发生。不过大家不必紧张,遇到这样的情况一般

必然得到 重启的解决办法,没错就是这个办法

只要重启一下交换机,地址表就会被清空并更新正确的信息,然后网络就又可以正常工作了。

路由器

总有一款你见过

网络包经过集线器交换机之后,现在到达了路由器,并在此被转发到下一个路由器。这一步转发的工作原理和交换机类似,也是通过查表判断包转发的目标。不过在具体的操作过程上,路由器和交换机是有区别的。

因为路由器是基于IP设计的,而交换机是基于以太网设计的

首先,路由器会接收网络包。路由器的端口有各种不同的类型,这里我们只介绍以太网端口是如何接收包的。

以太网端口的结构和计算机的网卡基本相同,接收包并存放到缓冲区中的过程也和网卡几乎没有区别。首先,信号到达网线接口部分,其中的PHY(MAU)模块和MAC模块将信号转换为数字信息,然后通过包末尾的FCS进行错误校验,如果没问题则检查MAC头部中的接收方MAC地址,看看是不是发给自己的包,如果是就放到接收缓冲区中,否则就丢弃这个包。如果包的接收方MAC地址不是自己,说明这个包是发给其他设备的,如果接收这个包就违反了以太网的规则。

路由器的端口都具有MAC地址,只接收与自身地址匹配的包,遇到不匹配的包则直接丢弃

包的有效期

从路由表中查找到转发目标之后,网络包就会被转交给输出端口,并最终发送出去,但在此之前,路由器还有一些工作要完成。

第一个工作是更新IP头部中的TTL(Time to Live,生存时间)字段 ,TTL字段表示包的有效期,包每经过一个路由器的转发,这个值就会减1,当这个值变成0时,就表示超过了有效期,这个包就会被丢弃

这个机制是为了防止包在一个地方陷入死循环。如果路由表中的转发目标都配置正确,应该不会出现这样的情况,但如果其中的信息有问题,或者由于设备故障等原因切换到备用路由时导致暂时性的路由混乱,就会出现这样的情况。发送方在发送包时会将TTL设为64或128,也就是说包经过这么多路由器后就会寿终正寝

现在的互联网即便访问一台位于地球另一侧的服务器,最多也只需要经过几十个路由器,因此只要包被正确转发,就可以在过期之前到达目的地。

路由器的发送操作和计算机相同

到这里,发送前的准备工作就完成了,接下来就会进入包的发送操作。

这一步操作取决于输出端口的类型

如果是以太网端口,则按照以太网的规则将包转换为电信号发送出去

如果是ADSL则按照ADSL的规则来转换,以此类推。

在家庭网络中,路由器后面一般连接ADSL等线路接入互联网,因此路由器会根据接入网的规则来发送包。不过,要理解具体的操作过程,需要先理解相应的通信线路,比较复杂,因此我们先挖坑~~。

这里,我们假设路由器位于公司等局域网的内部,即输出端口也是以太网,看看这种情况是如何操作的。

为了判断MAC头部中的MAC地址应该填写什么值,我们需要根据路由表的网关列判断对方的地址。

路由器怎么判断下一个转发目标的?

如果路由表的网关列内容为IP地址,则该地址就是下一个转发目标

如果路由表的网关列内容为空,则IP头部中的接收方IP地址就是下一个转发目标。路由器也会使用ARP来查询下一个转发目标的MAC地址。

路由器也有ARP缓存,因此首先会在ARP缓存中查询,如果找不到则发送ARP查询请求。

如果输出端口为以太网,则发送出去的网络包会通过交换机到达下一个路由器。由于接收方MAC地址就是下一个路由器的地址,所以交换机会根据这一地址将包传输到下一个路由器。接下来,下一个路由器会将包转发给再下一个路由器,经过层层转发之后(递归重复),网络包就到达了最终的目的地

路由器与交换机的关系

IP协议本身没有传输包的功能,因此包的实际传输要委托以太网来进行。路由器是基于IP设计的,而交换机是基于以太网设计的,因此IP以太网的关系也就是路由器交换机的关系。

IP(路由器)负责将包送达通信对象这一整体过程,而其中将包传输到下一个路由器的过程则是由以太网(交换机)来负责的。

路由器的附加功能

地址转换

为啥要有内网? 为啥不能公司每一台电脑都对接外网?

互联网原本是这样设计的

Bug不对不对 是But

互联网逐步向公众普及,接入互联网的设备数量也快速增长,如此一来,情况就发生了变化。如果还用原来的方法接入,过不了多久,可分配的地址就用光了。如果不能保证每台设备有唯一不重复的地址,就会从根本上影响网络包的传输,这是一个非常严重的问题。如果任由这样发展下去,不久的将来,一旦固定地址用光新的设备就无法接入了,互联网也就无法继续发展了。

解决办法

A公司的内部100台电脑没必要与B公司内部的100台相互通信,只要在每家公司自己的范围内通信,原本需要200个外网地址,现在不需要那么多了。

公司内部设备就不需要分配固定地址了,从而大幅节省了IP地址。

当然,就算是公司内网,也不是可以随便分配地址的,因此需要设置一定的规则规定某些地址是用于内网的,这些地址叫作私有地址,而原来的固定地址则叫作公有地址

私有地址的规则其实并不复杂,在内网中可用作私有地址范围仅限以下这些。


      10.0.0.010.255.255.255
      172.16.0.0172.31.255.255
      192.168.0.0192.168.255.255

私有地址本身并没有什么特别的结构,只不过是将公有地址没分配的一部分拿出来规定只能在内网使用它们而已。

这个范围中的地址和其他公司重复也没关系,所以对于这些地址不作统一管理,不需要申请,任何人都可以自由使用。当然,如果在公司内部地址有重复就无法传输网络包了,因此必须避免在内网中出现重复的地址。

A公司与B公司通信怎么办? 都是相同的IP怎么交互?

即将公司内网分成两个部分,一部分是对互联网开放的服务器,另一部分是公司内部设备。其中对互联网开放的部分分配公有地址,可以和互联网直接进行通信,这一部分和之前介绍的内容是一样的。相对地,内网部分则分配私有地址,内网中的设备不能和互联网直接收发网络包,而是通过一种特别的机制进行连接,这个机制就叫地址转换

路由器的包过滤功能

包过滤功能 你可能不太懂,我说一个词 防火墙,应该都懂了。

完结撒花 ✿✿ヽ(°▽°)ノ✿