《网络是怎样连接的》(四)

本文主要取材于  《网络是怎样连接的》 第四章。

目录

4.1 互联网的基本结构

4.2光纤接入网(FTTH)

4.3 接入网中使用的PPP和隧道

4.4 网络运营商的内部

4.5 跨越运营商的网络包


简述:本文主要内容是解释 网络包是如何通过互联网接入路由器,最终进入互联网内部的。

首先,可以将网络看成两个部分,接入网和互联网;接入网有各种协议,例如ADSL(不对称数字用户线),FTTH(光纤接入网);接入网会汇总到互联网(此处狭义地把互联网看作标准的使用IP的网络)。

  • 用户接入互联网首先需要使用PPPoE或者PPPoA等进行拨号,BAS(Broadband Access Server)验证其登录名和密码后可以使用互联网。
  • 接通后,网络包已经通过接入网,接入网与用户签约的运营商设备相连,接下来包就到达了网络运营商的路由器POP(Point of Presence,接入点),网络包会从这里进入互联网内部。
  • 到达PoP之后,根据目标IP和客户端是否在同一运营商内,路由器会选择相应的路径转发(一般POP传来的网络包都会集中到NOC(Network Operation Center,网络运营中心),并从这里被转发到离目的地更近的POP,或者是转发到其他的运营商。)

4.1 互联网的基本结构

互联网的基本工作方式与家庭和公司网络一样 ,也是通过路由器来转发包的。不过在家庭和公司中,转发设备一般只有几十米到几百米,而互联网甚至要跨越国家和海洋,使用以太网线无法 完成这样的连接。另外,互联网也是根据路由表中的记录来判断转发目标的,但路由表记录的维护方式不同。互联网中的路由器上有超过10万条路由记录,而且这些记录还在不断变化,当出现线路故障时,或者新的公司加入互联网时,都会引发路由的变化。

互联网接入路由器发送网络包的操作和以太网路由器有一点不同,互联网接入路由器是按照接入网规则来发送包的。接入网,就是指连接互联网与家庭、公司网络的通信线路。一般家用的接入网方式包括ADSL、FTTH、CATV、电话线、ISDN等,公司则还可能使用专线。

 互联网接入路由器会在网络包前面加上MAC头部、PPPoE头部、PPP头部总共3种头部,然后发送给ADSL Modem (PPPoE方式下)。

4.1章节主要介绍了ADSL技术,是一种接入网技术,此处省略不讲。 

4.2 光纤接入网(FTTH)

FTTH,是一种基于光纤的接入网技术。光纤是由一种双层结构的纤维状透明材质(玻璃和塑料)构成的,通过在里面的纤芯中传导光信号来传输数字信息(图4.10)。ADSL信号是由多个频段的信号组成的,比较复杂,但光信号却非常简单,亮表示1,暗表示0。

 用户端的光纤收发器将以太网的电信号转换成光信号。这一步只进行电信号到光信号的转换,而不会像ADSL一样还需要将包拆分成信元,大家可以认为是将以太网包原原本本地转换成了光信号。接下来,光信号通过连接到光纤收发器的光纤直接到达BAS前面的多路光纤收发器。FTTH一般使用单模光纤,因此其纤芯中只有特定角度的光信号能够反射并前进。然后,多路光纤收发器将光信号转换成电信号,BAS的端口接收之后,将包转发到互联网内部。波长不同的光混合后可通过棱镜原理进行分离,因此光纤中的上行和下行信号即便混合起来也可以识别。像这样在一条光纤中使用不同的波长传输多个光信号的方式叫作波分复用

另一种光纤的接入方式是在用户附近的电线杆上安装一个名为分光器的设备,通过这个设备让光纤分路,同时连接多个用户。

FTTH可以分为直连和分路两种方式,这两种方式只是光信号的传输方式有一些区别,实际传输的网络包是相同的。

4.3 接入网中使用的PPP和隧道

随着接入网发展到ADSL和FTTH,接入网连接的路由器也跟着演进,而这种进化型的路由器就叫作BAS。首先是用户认证和配置下发功能。ADSL和FTTH接入网中,都需要先输入用户名和密码[插图],登录之后才能访问互联网,而BAS(Broadband Access Server)就是登录操作的窗口。BAS使用PPPoE方式来实现这个功能。PPPoE是由传统电话拨号上网上使用的PPP协议发展而来的,所以我们先来看一看PPP拨号上网的工作方式。

PPP是如图4.17这样工作的。首先,用户向运营商的接入点拨打电话(图4.17①-1),电话接通后(图4.17①-2)输入用户名和密码进行登录操作(图4.17②-2)。用户名和密码通过RADIUS[插图]协议从RAS[插图]发送到认证服务器,认证服务器校验这些信息是否正确。当确认无误后,认证服务器会返回IP地址等配置信息,并将这些信息下发给用户(图4.17②-3)。用户的计算机根据这些信息配置IP地址等参数,完成TCP/IP收发网络包的准备工作,接下来就可以发送TCP/IP包了(图4.17③)。

BAS除了作为用户认证的窗口之外,还可以使用隧道方式来传输网络包。所谓隧道,就类似于套接字之间建立的TCP连接。隧道有两种实现方式,一是TCP连接,首先需要在网络上的两台隧道路由器之间建立TCP连接,然后将连接两端的套接字当作是路由器的端口,并从这个端口来收发数据;另一种基于封装(encapsulation)的隧道实现方式,这种方式是将包含头部在内的整个包装入另一个包中传输到隧道的另一端。

接入网的整体工作过程 

接入网的工作从用户端的互联网接入路由器进行连接操作开始。首先,接入路由器中需要配置运营商分配的用户名和密码。然后,接入路由器会根据PPPoE的发现机制来寻找BAS。这一机制和ARP一样是基于广播来实现的,过程如下,很简单。用户询问:“BAS在不在?在的话请报告MAC地址。”BAS回答:“我在这里,我的MAC地址是xx:xx:xx:xx:xx:xx。”接下来,如图4.17②-1到②-4中所示,进入用户认证和下发配置的阶段。

用户名和密码如何发给BAS?

一种是将密码进行加密的CHAP(Challenge Handshake Authentication Protocol,挑战握手认证协议)方式,另一种是不加密的PAP(Password Authentication Protocol,密码验证协议)方式,在互联网接入路由器的设置画面中可以选择。

在校验密码之后BAS如何向用户下发TCP/IP配置信息?

BAS下发的TCP/IP参数会被配置到互联网接入路由器的BAS端的端口上,这样路由器就完成接入互联网的准备了。

 一对一连接的端口可以不分配IP地址,这种方式称为无编号。

4.4 网络运营商的内部

网络包已经通过接入网,到达了网络运营商的路由器。这里是互联网的入口,网络包会从这里进入互联网内部。ADSL、FTTH等接入网是与用户签约的运营商设备相连的,这些设备称为POP(Point of Presence,接入点),互联网的入口就位于这里。POP的结构根据接入网类型以及运营商的业务类型不同而不同,POP中包括各种类型的路由器,路由器的基本工作方式是相同的,但根据其角色分成了不同的类型。

  •  专线,这里用的路由器就是具有通信线路端口的一般路由器。专线不需要用户认证、配置下发等功能[插图],因此用一般的路由器就可以了。
  • 电话、ISDN等拨号方式的接入网,使用的路由器称为RAS。拨号接入需要对用户拨电话的动作进行应答,而RAS就具备这样的功能。此外,之前我们讲过通过PPP协议进行身份认证和配置下发的过程,RAS也具备这些功能。
  • PPPoE方式中,ADSL、FTTH接入服务商会使用BAS,运营商的路由器则与BAS相连。PPPoE中的身份认证和配置下发操作由接入服务商的BAS来负责,运营商的路由器只负责对包进行转发,因此这里也是使用一般的路由器就可以了。
  • 若ADSL采用PPPoA方式接入,DSLAM通过ATM交换机与ADSL的运营商的BAS相连,然后再连接到运营商的路由器。用户端传输的信号先经过ADSL Modem拆分成ATM信元并进行调制,然后DSLAM将信号还原成信元,通过ATM交换机转发到BAS,最后BAS将信元还原成网络包,再通过运营商的路由器转发到互联网内部。

NOC是运营商的核心设备,从POP传来的网络包都会集中到这里,并从这里被转发到离目的地更近的POP,或者是转发到其他的运营商。这里也需要配备高性能的路由器。面向运营商的高性能路由器中有些产品的数据吞吐量超过1 Tbit/s,而一般面向个人的路由器的数据吞吐量也就100 Mbit/s左右,两者相差1万多倍。

POP和NOC遍布全国各地,它们各自的规模有大有小,但看起来跟公司里的机房没什么太大区别,都是位于一幢建筑物中的,其中的路由器或者通过线路直接连接,或者通过交换机进行连接,这些和公司以及家庭网络都是相同的。

4.5 跨越运营商的网络包

网络包到达POP路由器之后,网络包是如何前往下一站的?

如果最终目的地Web服务器和客户端是连接在同一个运营商中的,那么POP路由器的路由表中应该有相应的转发目标。路由器根据路由表中的信息判断转发目标,这个转发目标可能是NOC,也可能是相邻的POP,无论如何,路由器都会把包转发出去,然后下一个路由器也同样根据自己路由表中的信息继续转发。经过几次转发之后,网络包就到达了Web服务器所在的POP的路由器,然后从这里被继续转发到Web服务器。

如果服务器的运营商和客户端的运营商不同网络包需要先发到服务器所在的运营商,这些信息也可以在路由表中找到,这是因为运营商的路由器和其他运营商的路由器也在交换路由信息。

运营商之间的路由信息交换

 只要让相连的路由器告知路由信息就可以了。只要获得了对方的路由信息,就可以知道对方路由器连接的所有网络,将这些信息写入自己的路由表中,也就可以向那些网络发送包了。这个路由信息交换的过程是由路由器自动完成的,这里使用的机制称为BGP(Border Gateway Protocol)。

根据所告知的路由信息的内容,这种路由交换可分为两类。一类是将互联网中的路由全部告知对方。例如图4.26中,如果运营商D将互联网上所有路由都告知运营商E,则运营商E不但可以访问运营商D,还可以访问运营商D后面的运营商B、A和C。然后,通过运营商D就可以向所有的运营商发送包。像这样,通过运营商D来发送网络包的方式称为转接

另一种类型是两个运营商之间仅将与各自网络相关的路由信息告知对方。这样,只有双方之间的网络可以互相收发网络包,这种方式称为非转接,也叫对等。

IX的核心是具有大量高速以太网端口的二层交换机(图4.28)。二层交换机的基本原理和一般交换机相同,大家可以认为IX的核心就是大型的、高速的交换机。

接下来就是将各个运营商的路由器连接到IX核心交换机上,连接方法有几种。首先,当运营商NOC和IX位于同一幢大楼里时,只要从NOC中将光纤延长出来接到IX交换机就可以了(图4.28①)。这种情况和公司、家庭网络中的路由器与交换机的连接方法是相同的。

如果NOC和IX不在同一幢大楼里又该怎么办呢?我们可以用通信线路将路由器和交换机连起来。这种情况下有两种连法,一种是从路由器延伸出一根通信线路并连接到IX交换机上(图4.28②),另一种是将路由器搬到IX机房里,用通信线路将路由器和NOC连起来,再将路由器连到IX交换机上(图4.28③)。

运营商之间通过谈判签订合约,然后按照合约来交换路由信息,实现网络包的收发。运营商之间可以直接连接,也可以通过IX连接,无论是哪种方式,最终网络包都会到达服务器所在的运营商,然后通过POP进入服务器端的网络。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/102534.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【0823作业】C++:实现类嵌套,以及其构造函数、析构函数和拷贝构造函数

要求&#xff1a; 设计一个Per类。类中包含私有成员&#xff1a;姓名、年龄、指针成员身高、体重&#xff1b; 再设计一个Stu类&#xff0c;类中包含私有成员&#xff1a;成绩、Per类对象 p1&#xff1b; 设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostr…

【广州华锐视点】AR配电所巡检系统:可视化巡检利器

随着科技的发展&#xff0c;人工智能、大数据等技术逐渐应用于各个领域&#xff0c;为人们的生活带来便利。在电力行业&#xff0c;AR(增强现实)技术的应用也日益广泛。AR配电所巡检系统作为一种新型的巡检方式&#xff0c;可以实现多种功能&#xff0c;提高巡检效率&#xff0…

如何在Windows、Mac和Linux操作系统上安装Protocol Buffers(protobuf)编译器

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Android类加载机制

要说Android的类加载机制 &#xff0c;就离不开 类加载器ClassLoader&#xff0c;它是一个抽象接口 下面这个图还是比较好表达了类加载流程&#xff0c;但如果不看我红色画的线&#xff0c;就会感觉有点乱&#xff0c;需要注意是采用的是双亲委派模式&#xff0c;class加载要先…

测试驱动开发(TDD)

测试驱动开发&#xff08;TDD&#xff09; 本篇文章简单叙述一下什么是测试驱动开发&#xff0c;以及怎么进行测试驱动开发&#xff01; TDD &#xff08;Test Driven Development&#xff09;&#xff1a;&#xff08;源于极限编程&#xff08;XP&#xff09;&#xff09;在不…

9.Sentinel哨兵

1.Sentinel Sentinel&#xff08;哨兵&#xff09;是由阿里开源的一款流量控制和熔断降级框架&#xff0c;用于保护分布式系统中的应用免受流量涌入、超载和故障的影响。它可以作为微服务架构中的一部分&#xff0c;用于保护服务不被异常流量冲垮&#xff0c;从而提高系统的稳定…

JavaSE 数组

定义&#xff1a; int []arr; int arr[]; 初始化 // 完整格式 int arr[] new int[]{1, 2, 3}; // 简单格式 int arr[] {1, 2, 3}; 数组的元素访问、遍历 按照下标访问即可。数组的长度函数为 arr.length()。idea快速生成遍历的方法&#xff1a;数组名.fori 静态初始化 &a…

element时间选择器el-date-picter使用disabledDate指定禁用的日期

需要的效果 <el-date-pickerclass"selectstyle"v-model"year"value-format"yyyy"type"year":picker-options"disabledCli"placeholder"选择年"> </el-date-picker>data() {return {disabledCli: {/…

5G+AI数字化智能工厂建设解决方案PPT

导读&#xff1a;原文《5GAI数字化智能工厂建设解决方案》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。数字化智能工厂定义 智能基础架构协同框架 - 端、边、云、网…

微信小程序手机号验证开发遇到问题

公司小程序项目中快速登录需要实现微信用户授权手机登录、注册功能。结果遇到了 invalid code hint: [zHkDmt0sf-MBjga] rid: 64e3259f-1091b953-7e10f1da 目录 服务端文档 文档描述 返回信息 服务端代码 遇到问题 排查问题 1.服务端用错了appid serect 2.小程序端用错…

C++(Qt)软件调试---gdb调试入门用法(12)

gdb调试—入门用法&#xff08;1&#xff09; 文章目录 gdb调试---入门用法&#xff08;1&#xff09;1、前言1.1 什么是GDB1.2 为什么要学习GDB1.3 主要内容1.4 GDB资料 2、C/C开发调试环境准备3、gdb启动调试1.1 启动调试并传入参数1.2 附加到进程1.3 过程执行1.4 退出调试 4…

Spark第二课RDD的详解

1.前言 RDD JAVA中的IO 1.小知识点穿插 1. 装饰者设计模式 装饰者设计模式:本身功能不变,扩展功能. 举例&#xff1a; 数据流的读取 一层一层的包装&#xff0c;进而将功能进行进一步的扩展 2.sleep和wait的区别 本质区别是字体不一样,sleep斜体,wait正常 斜体是静态方法…

vue3+elementPlus table里添加输入框并提交校验

<template><div><el-form :model"info" ref"forms"><el-tableref"tableRef":data"info.data"border><el-table-column align"center" property"name" label"*姓名"><…

springboot整合rabbitmq

添加依赖 <!--RabbitMQ 依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><dependency><groupId>org.springframework.boot</gro…

DFX概述 | Design For X | Design For Excellent

Design for X (DFX) Methods 什么是“Design for X”&#xff1f; Design for eXcellence是一种在设计和制造领域中的不断发展的原则哲学。它采用了全面和系统的设计方法&#xff0c;关注产品的各个方面——从概念生成到最终交付。 它提供了良好的实践和设计指南&#xff0c…

【RHEL】硬盘分区与格式化

fdisk命令 在linux中&#xff0c;fdisk是基于菜单的命令。对硬盘分区时&#xff0c;可以在fdisk命令后面直接加上要分区的硬盘作为参数(分区工具) 利用如下所示命令&#xff0c;打开fdisk操作菜单。 输入p,查看当前分区表。从命令执行结果可以到&#xff0c;/dev/mapper/rhel…

Python入门【原生字符串、边界字符、search函数、re模块中其他常用的函数 、贪婪模式和非贪婪模式、择一匹配(|)的使用、分组】(三十)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小王&#xff0c;CSDN博客博主,Python小白 &#x1f4d5;系列专栏&#xff1a;python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 &#x1f4e7;如果文章知识点有错误…

【算法系列篇】二分查找——这还是你所知道的二分查找算法吗?

文章目录 前言什么是二分查找算法1.二分查找1.1 题目要求1.2 做题思路1.3 Java代码实现 2.在排序数组中查找元素的第一个和最后一个位置2.1 题目要求2.2 做题思路2.3 Java代码实现 3.搜索插入位置3.1 题目要求3.2 做题思路3.3 Java代码实现 4.x的平方根4.1 题目要求4.2 做题思路…

锚定医学营养 健启星深耕不辍

在生命医学中&#xff0c;营养被称为维持患者生命的物质基础。医学营养&#xff0c;是结合了医学临床营养、营养素与疾病预防等方面&#xff0c;并根据患者的医疗记录、身体检查及心理情况&#xff0c;由医生及专业营养师给出配比完善的营养素&#xff0c;以此来增加患者身体的…

控制台实现家庭记账本功能

需求&#xff1a; 在控制台实现家庭记账本的小功能&#xff0c;功能如下 参考代码如下&#xff1a; import java.util.Scanner;/*** <p>家庭账本-综合案例</p>** author 波波老师(weixin : javabobo0513)*/ public class Demo24 {public static void main(Strin…