FTTH-光纤接入网
光纤的基本知识什么是光纤光纤的机构如下图,是一种双层结构的纤维状透明材质(玻璃和塑料)构成的。能够使用光纤中的纤芯传导光信号来传输数字信号。
单模与多模不同材质的光纤因为透光率、折射率,线芯直径等因会影响光的传导。其中线芯直径对光的传导影响很大。对于光纤我们首先需要知道两点:
入射角度过大的光线会在纤芯和包层的边界折射出去。这也就意味着光纤只能反射入射角较小的光信号;
光也是波,因此光也具备相位。由于反射角产生的相位变化。当朝反射面前进的光和被反射回来的光交会,如果两条光线相位不一致,就会彼此发生干涉抵消。也就是说只有相位一致的光纤才会继续在光纤中传导(想象朝平静的睡眠水面扔石头,如果两边都有墙壁,那么向墙壁前进的水波与从墙壁返回的水波相交,相位相同则加强,不同则抵消)。这样,对于从光纤中传播的光信号,只有几个特定的角度入射的光信号,前进的光和被反射的光相位一致,所以只有特定角度入射的光线才能朝对端前进。
线芯的直径就是根据这些角度确定的。纤芯会极大地改变光纤的特性。
光纤根据纤芯的直径大小会划分成几种类型,大体包括单模光纤和较粗的多模光纤。
单模光纤
直径:8~10 ...
ADSL 接入网
ADSL 接入网ADSL 接入网的构成(组件)
用户侧在整个网络连接的过程中,用户侧是上图中最右侧的部分,包含了:
用户计算机
互联网接入路由器
ADSL Modem(调制解调器)
分离器
电话机
各组件的功能互联网接入路由器提供拨号上网、NAT和路由的功能。
ADSL Modem(调制解调器)ADSL Modem 做了什么将路由器传输过来的以太网帧拆分为信元,并将信元调制成电信号传输到局端多路Modem。
什么是信元ATM 交换和多路复用的基本单位,由信头和信息段组成,信头中装有控制信息,信息段中装入被分解成数据块的用户信息或其他管理信息。
信元的构造
Component
Description
length(bytes)
Header
装有控制信息
5
...
交换机和路由器
什么是交换机交换机是根据地址表进行包转发工作的设备。在传统交换机上(二层设备)交换机端口是不需要有MAC 地址的,所以交换机接到数据包后,无需检查目的MAC 地址是否是自己,而是在MAC 模块校验过数据包FCS 完整后直接将数据放到缓冲区。
接下来交换机需要查询这个包的接收方MAC 地址是否已经存在与MAC 表中。MAC表包含两个信息:连接设备的MAC 地址和该设备连接的是哪个端口。这样接收方MAC 地址匹配到MAC 表中的地址信息后,交换机就知道将数据包从哪个接口发送出去。(如果目的MAC 地址不存在与MAC 表中,则交换机会将包原封不动的泛洪到其他端口,注意这里不是广播,广播会改变数据包的目的地址为全F;而收到泛洪报文的设备通常是PC,会检查目的MAC 地址是否是本机网卡的,不是的话直接丢失,是的话会进行对应的处理,从而保证数据发送到了正确的目的地)
交换机交换电路的设计思路:交换机的输入端和输出端连接起来。其中信号线排列成网格状,每一个交叉点都有一个交换开关,交换开关是电子控制的,通过切换开关的状态就可以改变信号的流向。
交换机可以同时执行多个转发操作,如上图,2号端口到7 ...
信号在网线中传输
每个包都是独立传输的 两个终端间的数据传输,依赖于两个设备间的集线器、交换机、路由器等转发设备将终端发出的包转发,最终抵达对端。
这个过程中,交换机、路由器等转发设备使用数据包的控制信息(可以是MAC,也可以是IP),在设备内部的一个记录转发规则的表中查询,从而判断数据包的去向(下一跳)。
所以转发设备只关心数据包的头部控制信息而不关心数据包的数据内容。
这可以与快递员进行类比,快递员在派送快递时只关心快递的面单,而不关心包裹内装的是什么。
防止网线中的信号衰减此处只探讨电信号的问题,光纤的光信号衰减是另一个话题。
为什么会产生信号衰减(失真)
信号在网线的传输过程中,能量会逐渐损失。网线越长,信号衰减越严重
电信号的频率越高(频率高,意味着速度快),能量的损失也越大(高频信号会释放更多的电磁波,这些电磁波带走了一部分能量,也造成了能量的损失)
线路噪音:网线周围的电磁波,当电磁波接触到金属等导体时,其中就会产生电流。因此,双绞线周围存在电磁波就会对网线中原有的信号产生干扰
衰减对数据的传输有什么影响信号在传输过程中不断衰减,波形就会失真,导致接收方难以辨别信号的实际意义。(在双 ...
将IP 包发送出去
前言这个系列的博客是针对阅读《网络是怎样连接的》([日] 户根勤, 译 [中] 周自恒, ISBN: 9787115441249)一书的记录与思路整理。有些概念是做纯路由交换的网络工程师很少接触但又很重要的部分,因此整理到这里以做分享。
将IP 包发送出去IP 生成的网络包只是存放在计算机内存中的一串数字信息,没有办法直接发送给接收方。因此,需要将数字信号转换成电或光信号,才能在网线或光纤上传输。
负责这一操作的是网卡,在操作系统中需要配置网卡需要的网卡驱动程序,操作系统才能够正确地调度网卡的硬件资源来完成电或光信号的转换。
硬件设备初始化网卡和其它硬件一样,并非通电后就可以直接工作的。在设备开机之后,网卡驱动程序会对硬件进行初始化操作,然后硬件才进入可以使用的状态。
操作包括了:
硬件错误检查(通用硬件操作)
初始设置(通用硬件操作)
在控制以太网收发操作的MAC (Media Access Control)模块中设置MAC 地址(网卡独有)
网卡的ROM 中保存着全世界唯一的MAC 地址,这是在生产网卡时写入的,将这个值读取并写入MAC 模块的设置中,MAC 模块就知道自 ...
包的基本知识
前言这个系列的博客是针对阅读《网络是怎样连接的》([日] 户根勤, 译 [中] 周自恒, ISBN: 9787115441249)一书的记录与思路整理。有些概念是做纯路由交换的网络工程师很少接触但又很重要的部分,因此整理到这里以做分享。
包的基本知识在前期一系列的讲解中我们谈到了应用程序(浏览器)如何调用操作系统协议栈来使用TCP 协议与远程服务器去建立连接、传输数据和关闭连接的过程。其中我们多次说到了TCP包头、IP包头的概念。
那么什么是包呢?
这是一个抽象的概念,它概括了数据在网络中传输的一种形态。逻辑上,我们认为包是由头部和数据两部分构成。
头部包含了控制信息,例如IP 头部包含了源目IP 地址;TCP 头部包含了序列号,ACK 号,SYN、ACK、FIN 等控制位。可以将其理解为快递包裹的面单(指明了谁是发件人,是收件人,是航空件还是陆运件,是加急件还是普通件)。
数据就是头部后面委托方要发送给对方的数据,也就相当于快递包裹内部的货物。
如上图,对于TCP 来说,上层应用数据委托的数据块就是TCP 的数据;对于IP 头部来说,整个TCP 包就是其数据。
包的转发发送方负 ...
协议栈 - 套接字断开
前言这个系列的博客是针对阅读《网络是怎样连接的》([日] 户根勤, 译 [中] 周自恒, ISBN: 9787115441249)一书的记录与思路整理。有些概念是做纯路由交换的网络工程师很少接触但又很重要的部分,因此整理到这里以做分享。
协议栈 - 套接字断开TCP 连接断开顺序 - 四次挥手
无论是服务器或者是客户端在发送/接收完数据后都有可能主动发起连接关闭的请求(具体由谁发起,是根据更上层协议决定的;例如在HTTP 1.0 中,服务器在数据传输完成后主动发起连接关闭;而在HTTP 1.1 中,服务器在传输完数据后,客户端仍然可以继续请求,关闭连接的请求只能由客户端主动发起的)。连接关闭请求的本质是在TCP 包头中将控制位的FIN 比特设置为1。
以服务器优先发起断开连接为例
服务器一方的应用程序在完成数据传输后,调用Socket 库的close 程序。
服务器协议栈生成包含断开信息的TCP 头部,即将TCP头部的控制位的FIN 设置为1
协议栈委托IP模块向客户端发送数据。同时,服务器的套接字中会记录下断开操作的相关信息。
客户端收到服务器发来的控制位FIN为1 ...
协议栈 - 数据收发
前言这个系列的博客是针对阅读《网络是怎样连接的》([日] 户根勤, 译 [中] 周自恒, ISBN: 9787115441249)一书的记录与思路整理。有些概念是做纯路由交换的网络工程师很少接触但又很重要的部分,因此整理到这里以做分享。
协议栈 - 数据收发当控制流程从connect回到应用程序之后,接下来就进入数据的收发阶段了。数据收发操作是从应用程序调用write组件将要发送的数据交给协议栈开始的。
数据类型无关性协议栈并不关心应用程序传递的数据是什么内容。应用程序调用write时指定发送数据的长度,在协议栈看来,要发送的数据就是一定长度的二进制字节序列而已。
数据发送协议栈并非一收到数据就马上发送出去,而是将数据存放在内部的发送缓冲区中,等待一段时间再发送。这样做的理由是,应用程序交给协议栈发送的数据长度是由应用程序本身决定的,不同的应用程序在实现上不同,有些程序会一次性传递所有的数据,有些程序会逐字节或逐行传递数据。这是协议栈不能控制的行为,在这样的情况下,如果协议栈一收到来自应用程序的数据就立即发送,就可能会发送大量的小包,导致网络效率下降。因此积累到一定的数量再发送出去 ...
协议栈 - 套接字连接
前言这个系列的博客是针对阅读《网络是怎样连接的》([日] 户根勤, 译 [中] 周自恒, ISBN: 9787115441249)一书的记录与思路整理。有些概念是做纯路由交换的网络工程师很少接触但又很重要的部分,因此整理到这里以做分享。
连接的本质是什么?以网页访问为例,我们知道,客户端和服务器刚创建的套接字中只包含了本端通信对象的信息,IP、端口、协议等等。客户端和服务器双方都无法在不知道对端信息的情况下通信,这就需要连接这个步骤来帮助客户端和服务器交换双方的信息。
客户端:应用程序将服务器的IP地址、端口号等信息告诉协议栈,协议栈以此为目的去连接远程的服务器。
服务器:等待客户端主动向自己告知客户端的IP地址、端口号等信息。
所以连接实际上是通信双方交换控制信息,在套接字中记录通信所需的必要信息并准备数据收发的一连串操作。像上面提到的客户端将IP地址和端口号告知服务器这样的过程就属于交换控制信息的一个具体的示例。所谓的控制信息,就是用来控制数据收发操作所需要的一些信息,IP地址和端口号是典型的例子。除此之外,还有其它一些控制信息,我们暂且按下不表。
同时连接要为数据收发作准备, ...
协议栈 - 创建套接字
前言这个系列的博客是针对阅读《网络是怎样连接的》([日] 户根勤, 译 [中] 周自恒, ISBN: 9787115441249)一书的记录与思路整理。有些概念是做纯路由交换的网络工程师很少接触但又很重要的部分,因此整理到这里以做分享。
协议栈的内部结构协议栈的工作我们从表面上是看不见的,可能比较难想象。因此,我们先来对协议栈做个解剖,看看里面到底有什么。
协议栈的内部上图,分为几个部分,分别承担不同的功能。在这张图中,上面的部分会向下面的部分委派工作,下面的部分接收委派的工作并实际执行。
对照上图我们从上到下捋一遍。
最上面的部分是网络应用程序,例如:浏览器、电子邮件客户端、web 服务器、电子邮件服务器等,它们会将收发数据等工作委派给下层来完成。可以说,尽管不同的应用程序收发的数据内容不同,但收发数据的操作是共通的。
应用程序下面是Socket 库,Socket 库中的应用程序,例如gethostbyname、socket、connect等开放给上层应用程序,可以由应用程序直接调用来获取相应的能力。
再下面就是操作系统内部了,其中包括协议栈。协议栈的上半部分分为两块(OSI ...