Tips
【】是我的批注,非原文。
⭐3 2002
1
nothing
IP
因为互联网是一个范围遍布全球的计算机网络,每个接入互联网的计算机【为了能找到别的计算机,也为了让别的计算机找到自己,还不会找错】必须有一个独一无二的地址。互联网地址的格式是 nnn.nnn.nnn.nnn,nnn 取 0 - 255 之间的一个整数【包括 0 和 255。所以 IP 地址总数是 25 6 4 = 4 , 294 , 967 , 296 256^4=4,294,967,296 2564=4,294,967,296 个,约 42.9 亿个】。这个地址便是我们熟知的 IP 地址。(IP 是 Internet Protocol 的缩写。)
图中两台电脑连接到互联网,一台的 IP 地址是 1.2.3.4,另一台的 IP 地址是 5.6.7.8。中间用【像云朵一样的】抽象图案代表互联网,以略去细节。
如果你是通过互联网服务提供商(Internet Service Provider,常用其缩写 ISP)接入互联网【除非特殊情况,家里安宽带的都是这样】,在拨号(dial-up)上网的会话(session)持续期间,会分配一个临时 IP 地址。【现在几乎没有拨号上网了,都是光纤入户,但分给你的 IP 依旧是临时的,不定期就会改变。我们通常把这个 IP 叫做公网 IP 或外网 IP。】如果你是从一个局域网(local area network,常用其缩写 LAN)接入互联网,你的计算机可能拥有一个永久的 IP 地址【又叫静态 IP】,也可能从动态主机配置协议(Dynamic Host Configuration Protocol,常用其缩写 DHCP)服务器处获得一个临时 IP。【又叫动态 IP,无论动静,我们通常叫它内网 IP】【现在最普遍的接入互联网的方式是上述两种结合在一起,你到移动/联通/电信营业厅办理宽带业务,上门安装的工程师从楼道的集线箱里拉出一根光纤进入你家,接好光纤头,配置好光猫,插上,这就已经接入互联网了。这时你已经获得了一个临时外网 IP。现在的光猫一般自带路由器和 WiFi 功能,你的电脑连上 WiFi,就从光猫内置的 DHCP 服务器上得到了一个动态内网 IP。很多人不用光猫,用自己买的无线路由器,也都是一样的。】无论哪种方式,你的电脑都会获得一个独一无二的 IP 地址。
ping
如果你的电脑系统是 Windows 或 Unix 并且接入互联网,你可以使用 ping 命令测试网络是否连通。ping 这个名字取自潜艇声呐发出的声音【油管视频链接】。打开终端,输入ping www.yahoo.com
,会向目标主机发送一个“ping”(本质上是一段 ICMP(Internet Control Message Protocol【译为互联网控制报文协议】)回显请求(echo request)报文。)被 ping 到的电脑会回复请求。ping 程序会记录报文发出到接到回应(如果接到了的话)的时长。如果你输入的是域名而非 IP 地址,ping 还会解析域名,显示 IP。
协议栈、分组
现在你的电脑接入互联网并且有一个唯一地址了。【接下来的问题是】它如何与网络上的其他电脑“交谈”?举个例子:你的电脑 IP 地址是 1.2.3.4,你想给 IP 地址是 5.6.7.8 的电脑发送一句“Hello computer 5.6.7.8!”。很明显,这条消息要在互联网上传输,而不论传输介质是何。如果你向 ISP 拨号上网,消息会在电话线上传输。所以消息一定要从包含字母的文本转换成电信号,然后在互联网中传输,到达后再从电信号翻译回文本。这个过程怎么实现呢?**协议栈(protocol stack)**就此出现了。每台电脑都需要它来与互联网的他人交流,一般内置在操作系统。互联网最常用的是 TCP/IP 协议栈,用其包含的两个最主要的协议来命名。
协议层(Protocol Layer) | 备注 |
---|---|
应用协议层(Application Protocols Layer) | 具体到应用的协议,如 WWW,e-mail,FTP 等 |
传输控制协议层(Transmission Control Protocol Layer) | TCP 使用端口号(port number)把分组定向到计算机上的特定应用 |
互联网协议层(Internet Protocol Layer) | IP 使用 IP 地址把分组定向到特定计算机 |
硬件层(Hardware Layer) | 把二进制分组数据转换成网络信号,再转换回来(比如以太网卡,电话线的调制解调器等) |
整个过程大致如图:
- 在你的电脑上,消息从栈顶开始向下传递【如图所示】
- 如果消息太长,消息经过的每一层都会把消息分割成更小的数据块。这是因为在互联网中传输的数据都是便于管理的块。我们通常把这些块叫分组(packets)。
- 分组通过应用层,来到 TCP 层。每个分组被分配一个端口号(port number)。许多程序使用 TCP/IP 栈来发送消息。我们需要知道是目标电脑上的哪个程序接收消息,那个程序会在特定端口上监听(listening)。
- 通过 TCP 层后,来到 IP 层。在这里,每个分组获得一个目标地址,5.6.7.8。
- 现在我们的分组既有端口号,又有地址,已经准备好发送到互联网上。硬件层把分组从字母文本转变成电信号,通过电话线发出去。【这是以前的拨号上网,现在的光纤是硬件层把文本转换成光信号,通过光纤发出去】
- 在电话线的另一头,ISP 直接和互联网相连。ISP 的**路由器(router)**查看每个分组中的目标地址从而决定发向哪里。一般情况,分组的下一站是另一台路由器。
- 最后,分组到达 5.6.7.8。在目标机器上,分组从栈底向上传递【如图所示】。
- 分组逐层上传,所有与路由有关的,以及发送端添加的信息,比如 IP 地址、端口号等被剥离。
- 当数据到达栈顶,分组被重新组装成一整条消息文本,即“Hello computer 5.6.7.8!”
网络基础设施(Networking Infrastructure)
现在你已经知道数据是怎样从你的电脑传给另一台电脑的了,那中间发生了什么?是什么构成了互联网?
从你的电脑到猫再到 ISP 通过电话线【现如今是电脑到光猫到光纤到 ISP】连接。这部分你应该猜到了。
ISP 维护了一个猫池【对应光纤的什么不知道】,由某种形式的计算机管理,控制从猫池发往主干网络(backbone)或某一专用(dedicated)路由器的数据流。一般把这个计算机叫端口服务器(port server),管控着对网络的访问权。网费和用户使用数据通常都存在这台机器上。
当数据通过了 ISP 的本地设备,它们就被路由到 ISP 的主干网络或 ISP 购买了其上带宽的主干网络上【我的理解是前者是 ISP 自有,后者是第三方的,ISP 购买了使用权】。从这开始,分组就会经过若干路由器和若干主干网络,专有(用)线路(dedicated),或者其他网络,直到到达目的地——IP 为 5.6.7.8 的主机。那么我们有没有一种能知道具体路由路径的方法?答案是有:
traceroute
【顾名思义,trace追踪,循迹route路由。这和ping一样,也是一个命令行程序】traceroute会显示分组从本机到互联网某个目标位置的传输路径。tracert www.yahoo.com
它会显示出分组到达目的地必经的所有路由器,计算机,以及其他任何互联网实体(entities)。
互联网基础设施(Internet Infrastructure)
互联网主干由许多大型网络相互连接组成。这些大型网络叫网络服务提供商(Network Service Providers,缩写是 NSP)。这些 NSP **两两配对(peer)来交换分组流(packet traffic)。每个 NSP 要与三个网络接入点(Network Access Points,缩写是 NAP)相连。在 NAP 处,分组流从一个主干跳到另一个主干。NSP 还与城际区域交换点(Metropolitan Area Exchanges,缩写是 MAE)**相连。MAE 的作用和 NAP 一样,区别在于 MAE 是私有的。NAP 是原始互联网互连点。我们把 MAE 和 NAP 统称为 IX(Internet Exchange,互联网交换点)。NSP 还会向更小的网络——比如 ISP 和更小的带宽提供商出售带宽。如图所示:
这个图并不能反映互联网的真实情况。只是为了展示 NSP 如何互相连接以及与 ISP 连接。这张图里也没有体现任何网络物理元件。因为 NSP 主干基础设施是非常复杂的。大部分 NSP 的网络基础设施的地图?(map)在他们的网站上都能找到。一比一尺寸还原一个 NSP 的图是不可能的,因为规模太巨大了,结构又极其复杂且在变化中。
互联网路由层级(hierarchy)
所以分组是如何在互联网中找到路的?每台接入互联网的电脑都知道其他电脑在哪儿吗?分组在互联网上是被广播的吗?后两个问题的答案是“并不”。电脑并不能知道其他所有电脑的位置,分组也不是发给其他所有电脑。分组的寻路信息都存在路由器的路由表(routing tables)里。
路由器交换分组。路由器处在网络之间来路由分组。每个路由器都知道它的子网和它们的 IP 地址。路由器也不知道它们上级结构的 IP 地址。如图所示。黑盒就是路由器,上方的 NSP 主干由 NAP 连接,它们的下一级是一些子网络,子网络下一级是更多子网。最底层是两个局域网,连着若干电脑。
当分组到达网络,路由器检查由源计算机的 IP 层协议添加的目标计算机 IP 地址。它在自己的路由表找是否有这个 IP 地址信息。如果找到了包含这个 IP 地址的网络的信息,它会以默认路由发出这个分组,通常是发给主干上下一台路由,希望下一个路由知道这个分组该发到哪里。如果路由表里没有,分组会沿路由层级向上级(upward)发出,直到到达 NSP 主干。连接 NSP 的路由器维护着最大的路由表,这个分组会被路由到正确的主干,也就是再沿层级向下(downward),到达一个又一个子网,直到到达最终的目标电脑。
域名和地址解析(resolution)
可如果你不知道你想要连接的计算机的 IP 地址呢?如何从名叫 www.anothercomputer.com 的 web 服务器获取资源?你的 web 浏览器是如何知道这个计算机在互联网上的位置的?解决这些问题的答案都是一个——域名服务(Domain Name Service,缩写是 DNS)。DNS 本质上是一个分布式数据库,存储着计算机名字与它们的IP。
许多计算机都存储着 DNS 数据库的一部分以及访问 DNS 数据库的软件,我们称之为 DNS 服务器。没有任何 DNS 服务器存储着完整的 DNS 数据库,它们只存有子集。如果一个 DNS 服务器不包含某计算机要找的域名,它会把这个 DNS 请求重定向(redirect)到另一台 DNS 服务器。
DNS 的层级与 IP 路由层级相似。某计算机的域名解析请求会逐级向上直到有 DNS 服务器可以解析请求。如图所示。树的最顶端是域的根。更久的,更通用的域处在更上层。图里并不包括所有域。
当你的互联网连接建立起来时,一个主要 DNS 服务器以及一些次要 DNS 服务器就已经被安装启用了。这样,你电脑上所有互联网应用才得以正常运行。举个例子,当你在 web 浏览器里输入 web 地址,浏览器先连接主要 DNS 服务器,如果包含你想要的域名,计算机就连接到目标电脑,你获取到你想要的网页。
Windows上禁用 DNS
【略】
再谈互联网协议
具体功能有不同的具体协议,比如路由协议(routing),媒体访问协议(medium access)【剩余略】
应用协议:HTTP 和万维网
互联网最常见的一个应用是万维网(World Wide Web,缩写是WWW)。使 web 能正常工作的协议是超文本传输协议(Hypertext Trasfer Protocol,缩写是 HTTP)。不要与超文本标记语言(Hypertext Markup Language,缩写是HTML)搞混。后者是写 web 页面的语言。前者是 web 浏览器和 web 服务器交流的协议。它是一个应用层协议,因为在协议栈里它在 TCP 层之上,由特定应用使用。在 web 语境里就是 web 浏览器和服务器使用。
HTTP是一个基于文本(text-based)的无连接(connectionless)协议。客户端(浏览器)向 web 服务器发出请求,请求诸如 web 页面和图片这样的 web 资源。请求被服务器收到,客户端和服务器之间的连接就断开。所以每次请求都要建立新的连接。有些协议是面向连接的,也就是说在两台计算机通信期间,连接一直保持。但 HTTP 不是这样。在客户端发出请求之前,一定要先与服务器建立连接。
当你在浏览器中输入 URL 之后,发生了如下事情:
- 如果 URL 包含域名,浏览器先连接域名服务器,从而获取对应的 web 服务器的 IP 地址
- 浏览器连接服务器,发送某个 web 页面的 HTTP 请求(通过协议栈)
- 服务器收到请求并查找页面。如果页面存在,服务器发回。如果不存在,发送 HTTP 404 错误信息。(404 代表“页面未找到”)
- 浏览器收到页面,连接中断
- 浏览器 parse 页面,寻找组成完整页面的所有元素,比如图片,applet…
- 对于这些额外元素,建立新连接,发出 HTTP 请求
- 当浏览器加载完所有图片,applets,页面在浏览器中呈现
使用 telnet 客户端使用 HTTP 协议请求页面
【得不到它说的结果,我这边能连上但是 403 forbidden,可能是百度限制这种连接?windows 11 使用 telnet 需要开启功能,不能直接用。我的 local echo 也是默认关闭的,不知道怎么设置】
大多数互联网协议由叫做**请求商议(Request For Comments,缩写是 RFC)**这样的互联网文档来定义。RFC 可以在某些网站上找到。HTTP 1.0 由 RFC 1945定义。
应用协议:SMTP 和电子邮件
另一种常用的互联网服务是电子邮件。电子邮件使用一个叫做**简单邮件传输协议(Simple Mail Transfer Protocol,缩写是 SMTP)**的应用层协议。SMTP 也是一个基于文本的协议,但不像 HTTP, SMTP 是面向连接的。SMTP 也比 HTTP 更复杂。这里有很多命令,比 HTTP 涉及的多。
当你打开邮件客户端,阅读你的邮件时,会发生如下步骤:
- 邮件客户端(比如 Microsoft Outlook)打开与默认邮件服务器的连接。这个服务器的域名和 IP 已经在客户端安装时就已预装好。
- 服务器总是会发送第一条消息,以确认自己的身份
- 客户端发送一条 SMTP HELO 命令给服务器,服务器成功接收,确认没有问题,响应一条 250 OK 消息
- 取决于客户端时检查邮件,发送邮件还是干别的什么事情,会发送相应的命令给服务器,服务器也做出相对的响应
- 这种请求/响应事务(request/response transaction)会一直持续到客户端发送 SMTP QUIT 命令,服务器接收到后响应再见,继而连接断开。
如图所示,R 代表 receiver,也就是服务器,S 代表 sender,也就是客户端
SMTP 由 RFC 821 定义
传输控制协议
在应用层协议之下的是 TCP 层。当应用打开与互联网上另一台电脑的连接时,它们发送的消息被传下栈到 TCP 层。TCP 负责路由应用层协议到目标主机的正确应用上去。为了做到这一点,它使用端口号(port number)。端口可以被视作电脑的不同频道。举个例子,你可以边看网页边发邮件。这是因为二者使用不同的端口号。当分组到达沿栈向上时,TCP 层决定哪个应用会接收到这个分组,就是取决于端口号。
TCP大致按如下方式工作:
- 当 TCP 层从上层收到应用层协议数据,它把数据切段成便于管理的块,并把块加上 TCP 头(header),头中包含特殊的 TCP 信息,端口号就在这里。
- 反过来,当 TCP 层从下层收到 IP 层的分组时,它先去掉 TCP 头,并且进行一些必要重组数据的步骤,读取头中的端口号,把数据发往对应的应用。
这就是 TCP 如何路由的原理
TCP不是一个文本(textual)协议。**它是面向连接的,可靠的(reliable),字节流(byte stream)服务。**面向连接意味着两个应用必须先建立连接再交换数据。可靠表示当每一个分组到达,都会向对方返回一个确认信号(acknowledgement)【就像对讲机说完信息后说一个“收到/copy”】。TCP头还包含一个校验和(checksum)来确认收到的数据是否出错。头的结构如下:
注意 TCP 头里不包含 IP 地址,是因为 TCP 协议对 IP 一无所知。TCP 的职责只是为了应用层协议和应用数据服务。
常见端口
- FTP 20/21
- Telnet 23
- SMTP 25
- HTTP 80
IP
不像 TCP,IP 是一个不可靠,无连接的协议。IP 不关心分组到底到没到目的地。IP 也不知道什么端口和连接情况。它的唯一职责就是发送和路由分组到其他计算机上去。IP 分组是独立的实体(entities),可能并不会按序到达。顺序是 TCP 的职责。二者唯一相似之处是都有 header,IP 把自己的头加到 TCP 数据上去。如图所示:
而整个分组则如图所示:
总结
【略】IPv6从199x年就开始试验了。
资源
只有1,2,最后1可以访问,最后一个是导航,里面有很多有用的地图。
拓展阅读
6 2009
【部分略】
不同意用云彩表示互联网,而是用一根线。但这线也是抽象的,可以对应实际的光纤,铜线,手机信号(不是线)
原视频4:00:从一台源主机发出的分组,经过一个路由器,路由器就把自己的 IP 加上,即就加一层 IP header,到达目的主机,再返回,再一层层脱掉。和我最初理解的不同。
2 2015
什么是互联网?
起源于 1969 年的学术研究项目,在 20 世纪 90 年代发展成全球范围的商业网络。
互联网的初心是去中心化(decentralization)。没有任何人拥有它、控制它。而是,成千上万的组织维护自己的网络,然后再与其他网络,在某种协商与共识上相互连接。
纠正一点:web ≠ 互联网,web 是的互联网应用的一种,就像 email 和 BitTorrent 一样。
互联网在哪里?
最后一英里(The last mile)
指从互联网进入家庭或小公司网络的这一段。【就好比我们说下了地铁、公交,出了站到家这最后一公里,一个意思。】最常见的是光纤,还有电视电缆,极少数的遗留下来的从前的电话线,DSL。
除了这些有线线路,蜂窝网络,即信号塔和手机之间的无线传输也算。
数据中心
一个大厂房,里面全是服务器,服务器上一运行着互联网应用,二存储着用户数据。有些数据中心大公司自有,有些则是出租、售卖给小公司为其提供服务。传输速度快,遍布全球,通常在靠水(冷却方便),电费低的地方。
主干
由长距离网络组成,比如海底光缆。不同的主干运营商通过**互联网交换点(Internet Exchange Points,IX,IEP,IXP,**通常位于大城市)相连。
谁创造了互联网?
互联网从 APRANET 开始——由先进研究项目局(Advanced Research Project Agency,ARPA,现为 DARPA)资助的一个学术研究用网络。由 ARPA 的一个主管 Bob Taylor 领导,加上 Bolt、Beranek、Newman 等人提供的咨询帮助,建成。在 1969 年投入运行。
1973年,软件工程师 Vint Cerf 和 Bob Kahn 开始研究 ARPANET 的下一代标准。就是日后的 TCP/IP。在 1983 的第一天,十年后,ARPANET 开始采用。
在 1980 年代,互联网从军方项目变成国家科学基金会(National Science Foundation)管理。NSF 在 1981 到 1994 期间,资助了长距离网络,作为互联网主干网。1994 年,克林顿政府将主干转为私有化?
Al Gore 发明了互联网?
Al Gore曾是美国副总统,不是他发明的,但 Bob 和 Vint 提到,Al Gore 大力支持了互联网发展。他提出了高速电信的 idea。1980 年代敦促政府官员尽快把未接入互联网的网络接入。1991年,Gore 还赞助了高性能计算和通信提案(High Performance Computing and Communications Act),成为互联网比计算机科学发展更快的基石。
谁运行着互联网?
没人运行互联网。它的架构是网络构成的去中心化网络。成千上万的公司,大学,政府,各种实体都拥有自己的网络,它们以一个协商好的共识互相连接,共享。
制定大家都遵守的技术标准的组织叫互联网工程任务组(Internet Engineering Task Force,简称 IETF)。IETF 是一个公开组织,任何人都可以参加回忆,提出新标准,并且对已有标准提出推荐改动建议。但并没有人被强制要求遵守 IETF 指定的标准,但 IETF 基于共识和表决的流程使它的标准被大众所信服,广泛接受。
**互联网名称与数字地址分配机构(Internet Corporation for Assigned Names and Numbers,简称 ICANN)**有时被认为为互联网监管负责。正如其名,ICANN 负责分发域名和 IP 地址。但 ICANN 并不能控制谁可以联网。
什么是 IP 地址?
【部分略】
IP 地址由 ICANN 的互联网数字地址授权部门来分发,来保证两个不同的组织不会使用相同的 IP。
什么是 IPv6?
现在的 IP 标准,叫做 IPv4,最多只能 40 多亿个地址【前面我们算了】。在 1970 年代,这确实是个大数,但今天,IPv4地址已经耗尽。
所以开发了新的标准 IPv6。IPv6 本身 39 位长度【总长 128 位?到底多少位?】,允许更多地址,保证不会穷尽。
起初,IPv6 的推广使用很缓慢。1990 年代相关工作就已经完善,但因为大多数人已经习惯 IPv4,尝试新事物实在是很困难。
但随着地址耗尽,IPv6 开始越来越受人青睐。从2013年的1%到2015年中期的6%。
无线网络怎么工作?
【部分略】
有两种无线:wifi 和蜂窝网络。wifi 使用的是未被商业政府占用的频段:即人们不用付费的电磁频率。为了防止邻居之间的 wifi 互相干扰,对其功率有很大的限制。
蜂窝网络则更加集中。把服务区域分割成蜂房一样。在密集区,一个蜂窝网络单元格可以是一个街区那么大,在人稀疏的乡下,格子则有几英里见方那么大。每个格子里都有一座塔来为区域内设备提供服务。当一个设备跨越格子,网络会自动转手给下一个塔,允许用户不被中断通信。
蜂窝网络面积太大,没法像 wifi 一样提供免费,低功率的频段。所以,频段往往以拍卖形式出售,每年各国政府,组织,公司都要花很多钱。
什么是云?
【部分略】
早在 2000 年代,云的概念就已经很火。以前是文件存在服务器上,软件靠分发,用户自行下载。云计算允许用户把计算是做工具,而抛开技术细节。
比如,Office 软件你要下载到电脑里再用,但云时代的云文档,你可以在线就用。除此之外,还有云盘。
还有,从前的公司建立网站,要自己购入服务器,然而现在它们可以购买云服务器,建站变得更容易,快捷,大众化。
什么是分组?
【没啥说的,只强调两点】
分组貌似就是 IP 分组,上层协议不这么叫。
分组的核心思想有二:一是分割成小块,二是头(header)
分组最多可以装 64 KB 的数据,大约是 20 页纯文本。
路由器如果遇到故障或技术问题,或像塞车一样堵塞,允许抛弃(discard)分组。而检测分组是否被抛弃是发送主机的事情,路由器不管。
什么是万维网?
允许在互联网上发布信息的技术。由 Timothy Berners-Lee 发明,他是一个来自欧洲科研组织 CERN(欧洲原子能研究中心)的程序员,在 1991 他提出了一个比互联网应用更方便,强大的接口。web 支持超链接,允许用户只需点点鼠标,就访问到想要的信息。
过去的日子里,web 逐渐支持了图片,音频,视频和交互内容。1990 年代,电子商务出现,2000 年代,电子地图出现。
1994,Lee 建立了万维网联盟(WWW Consortium),作为 web 标准的指定组织。然而 web 本身是开放的,和 IETF 一样。因此 web 标准有很多,各大公司自己都推出。
什么是 SSL?
【部分略】
SSL 是安全套接字层,是一族加密技术,允许用户通过互联网传输个人隐私数据。
浏览器地址栏前面的小锁头就代表使用了 SSL,代表第三方无法读取你发送和接收的数据,比如网上银行。在背后,SSL 把你的数据变成加密的文本,只有接收方才知道如何解密。如果有不法分子监听对话,他们只能看到随机字符串,而非明文内容。
SSL 由网景公司在 1994 年提出。早期只有部分网站使用,比如银行。2010 年,大公司网站均开始使用 SSL。最近【这里是指2015年】,更广泛的 SSL 升级到来了。2015 之后,Firefox 浏览器会把没有 SSL 的网站视作危险网站。Chrome 也紧随其后。
什么是域名系统?
【部分略】
因为热门网站的域名都是完全公开的,所以 DNS 涉及到安全问题。很多黑客会进行 DNS 劫持或污染,把类似的名字转向恶意 IP 地址。DNSSEC 技术,但很少人用。【DNS on HTTPs 倒是推广开了】
谁决定某个域名存在,谁又拥有域名?
域名由 ICANN 监管。ICANN 监管的授权是美国商务部授权的,尽管它一直宣称自己独立于美国政府。
有两种域名:
- 一般顶级域名(generic top-level domains,简称 gTLDs)
- .com
- .org
- .edu
- .gov
- 国家代码顶级域名(country-code,ccTLDs),每个国家用两个字母代表:
- .us
- .uk
- .cn
除此之外,还有各种各样的域名。
4 2016
【这个更全】
延迟(latency):1 bit 数据从源到目标的传输时间
普通网线(RJ45)是铜线,虽然成本便宜,但长距离,超长距离传输信号是会有信号丢失。所以光纤(fiber optic cable)替代了它,极快,几乎没有信号损耗,但昂贵,不好制造。
无线是二进制数据——数字信号——调幅——调频,优点不用线,完全移动,缺点,距离短。
DNS spoofing DNS 欺骗
路由器传分组时,选择最优惠(cheapest)线路,并不是指时间最短,成本最小。而是指跨越不同组织的网络最少。所以一个分组的最佳传输路径并不一定是传输最快的路径。
Cookie 是服务器记得客户端信息的唯一手段?
snooping 监视
tampering 干涉
对称加密,发送者接收者有同一个密钥
非对称加密,公钥公开用于加密,私钥私有用于解密,举的这个例子很形象
⭐5 2019
【这个更全】
手机通话和上网
- 当你对着话筒说话,话筒接收你的声音,声音的本质是振动,振动是模拟信号,通过 MEMS(Micro-Electromechanical Systems) 传感器和有关 IC(Integrated Circuits,集成电路板)转换为数字信号。
- 传到手机天线,把数字信号转换为电磁波发出去。0 和 1 的差异由波的振幅 / 频率 / 相位,或三者共同表示。比如 1 是高频,0 是低频。
- 电磁波从你的手机传到你朋友的手机,通话就成功了。但电磁波在大气中有衰减,遇到障碍物也被阻挡,还会被其他电子设备,天气条件干扰,所以不适合长途传输。哪怕没有这些干扰因素,也传不了远距离,因为地球是圆的,一个点发出的电磁波没办法到达全球的任何地方。
- 人们发明了蜂窝网络(celluar)来让长距离传输电磁波成为可能。人们把地理区域分割成一块块邻接的六边形(因为六边形能平铺,不留缝隙),每个六边形内都有一座通信塔和自己的频隙(frequency slot),这样看起来就像蜂窝一样,因此得名。塔与塔之间可能由光纤或者电缆相连。而跨越大洲,则通过铺设在海底的光缆连接。
- 说回刚才,电磁波从你的手机传到通信塔,通信塔把电磁波转换为高频光脉冲(light pulses)。光脉冲传到塔底的基站收发器(base transceiver)做进一步信号处理,比如:控制通信链路、整合(combine)无线电频率,放大无线电振幅。
- 光脉冲发出之前要插一步:你所在区域的塔是怎么知道你朋友所在区域的塔的位置的呢?答案是有这样一个设施——移动交换中心(mobile switching center,MSC),当你购买 SIM 卡时,你就已经再 MSC 注册了,并且你注册所在的 MSC 叫做 home MSC,它存有你购买的资费套餐信息,位置信息,你的活动状态。当你旅游到某地,你所在的 MSC 相对于你叫做 foreign MSC,它会联系你的 home MSC,也就是 home MSC 会一直知道你的位置。
- 【?】那么 MSC 又是如何知道手机在哪一个 cell 里,即它的位置的呢呢?一种方法是在一定时间间隔更新订阅位置,叫做基于时间(time-based)。第二种基于位置变化(location area based)。最后一种,是在开机时自动更新(when phone turn on)。举个例子,Emma 给 John 打电话,电话拨出,信号到达 Emma 的 home MSC,按着 John 的电话号码,发到 John 的 home MSC,检查 John 现在是否在 home MSC 里。如果在,则立马发出信号。如果不在,home MSC 则转发信号给 foreign MSC。
- 然后光脉冲通过地下光缆到达下一座塔,直到到达你朋友所在网格的塔,光脉冲再从基站收发器到塔顶的转换设备,变成电磁波,发送到你朋友的手机上。你朋友的手机天线接收到电磁波,转换成数字信号,再通过 MEMS 和听筒,转化成振动,变成声音传到你朋友耳朵里。
- 值得注意的是,这整个过程,手机通话并非完全从头到尾都是无线的。
- 【?】我们再来谈一下频谱(frequency spectrum)。每个用户都被分配一个频率范围,但因为使用的人太多了,数十亿,所以频谱不够分,每个人只能分到一点点。那么如何解决这个问题呢?有二:一、频隙分布(frequency slot distribution),频隙被严格分配给各座塔;二、复用(multiple access),同频隙不同用户都可以用,但频隙优先分配给区域内活跃用户
- 那我们说的 1G、2G、3G、4G、5G 又是什么意思呢?1G 就是首次有线转无线,仍使用模拟信号,易被干扰、截获,所以通话质量不好,安全性也无法保证。还有个缺点它是**频分复用(Frequency Division Multiple Access)**这不是一个高效使用频谱的方法。
- 2G 改为数字信号,使用叫做**时分多址接入(Time Division Multiple Access)或码分多址接入(Code … … …)**的数字复用技术。2G 也开始支持短信(SMS)和网络浏览。
- 3G 技术上相对 2G 没大改变,只是加大通信带宽,提高数据吞吐量,也就是俗称速度。WCDMA(Wideband),高速支持视频、地图
- 4G 速度进一步提高 20-100 Mbps,使用正交频分复用(Orthogonal,OFDMA)和多入多出?(multiple input multiple output)
- 5G 使用加强多入多出和毫米波端,10 Gbps
互联网如何工作?
【部分略】
没啥说的,之前都说过了
光缆(optical cable)
光缆由一条条光纤(strand)组成,每根都比人的头发还细。
回顾一些基本的光学原理,光在穿越不同介质时速度发生变化,这个由折射率(refractive index)体现。
这个特性使得有趣的现象——折射(refraction)发生。
光纤利用了折射原理。通过使光折射界面的两侧介质折射率差异增大,加上改变光的入射角达到临界角(critical angle),使光射不出外侧介质,只能在内侧介质里传播。即发生全内反射(total internal reflection),这样光就可以一直在光纤里传播。
光纤的材料就是高折射率的玻璃纤维,这是内层,外层还包裹一层低折射率的玻璃,最后是最外面的保护层。这样的一条光纤可以传播达 100 km,因为还是有信号丢失,叫做衰减(attenuation)。衰减主要因为材料本身对光的吸收和散射。
防止衰减,就出现了中继放大器。
海底光缆为了加大强度,克服恶劣的海底环境。光缆在中央,外层由金属层包裹,然后包一层铜电磁屏蔽层,再包一层绝缘层。整条缆周围还要与钢缆同绞,最外层再用合成材料包覆。
天线如何工作?
我们都知道,以手机天线为例,接收电磁波,转换成数字信号;反过来把数字信号,转成电磁波发射(radiate)出去。
信号的本质是电压随时间的的变化,那么如何把这个转换成电磁波呢?先说下原理:闭合导体中电流变化 + 电磁感应(induction)会在导体周围产生不断变化(fluctuating)的磁场和电场。
然而这种场无法传输信号。因为磁场并没有传播(propaganda),只是保持在源(source),也就是通电导体周围。
而我们需要的天线(假想)要能制造离开源的,向远处传播的磁场。磁场分离(seperation)和磁场传播(propaganda)
再讲一些原理:一个正电荷和一个负电荷相距一定距离,构成偶极子(diople),它们可以产生一个电场。如果这两个电荷不是固定位置,而是在二者连线上振荡(oscillating),则二者相遇在路径中点时,电压最大【为啥不知道】,在两端时,电压最小。电压的变化又反过来影响电荷运动的加速,减速。那么电场是怎样变化的呢?
当电荷从两端向中间运动时,电场的形状会向运动反方向拉伸,就是从近圆变得椭圆一些。这叫做扭结效应(kink)。而当电荷相遇后,产生的电场便闭合并发出去。
如果按照这张图画随距离变化的电场强度曲线,你会发现它是个正弦曲线。
而波长恰好是电荷距离 L 的 2 倍
这种能发波的东西,正是我们天线需要的东西。只要我们让电荷振荡,并控制它就行。
取两根导体,分别在中点折成 90 度,再二者的端点处施加电压。
电压随左下角变化,在 T=0 时,负电荷向左侧移动,并聚集,意味着左端带负电,右端带正电。这样光看上方横着的导体的两端,就和刚才的偶极子同理了。这就是最简易的偶极天线。这时的天线,是一个发送器(tranmitter)。它发射的电磁波频率和施加的电压频率一样。而横导体部分长度,一般取所需波长的1/2【这个刚才讲偶极子时说过了】
那么接收器(receiver)天线又是怎样的呢?还是同样的导体,受电场变化,它的电荷也会在两端移动,只需把电压流换成某种被动计量的东西就行。
电视天线的一种——八木 - 宇田天线(yagi-uda),不光有主振子(dipole),旁边还有平行排布的**引向器(directors)比dipole 短 5%和反射器(reflectors)**比dipole长 5 %,
这是比较老的天线,现在一般是碟形天线(dish),就是俗称的大锅盖。由两部分组成,一个抛物面反射器,和低讯降频放大器(low-noise block downconverter,LNBF)。反射器接收电磁波,精确反射到LNBF中。LNBF由馈源(feedhorn)——收集信号的那个喇叭状头部,同时有匹配阻抗的功能,波导(waveguide)——把馈源收集的波/导向深处的导管,探针(probe)和电路板(PCB)组成。
你可以看到,波到了探针处,变成了偶极子一维振动的简单形式。接受到的电压变化,通过PCB的一系列处理——比如滤波(filtration)、高频转低频、放大,变成电视信号,通过同轴铜电缆传到电视。
一般探针有两个,互相垂直,接受法向不同的波。
而手机天线,则使用的是和电视天线完全不同的天线,叫做贴片天线(patch),一片特殊形状的金属贴在半导体上。金属贴片负责发射信号,宽度一般就是波长的1/2,但原理太复杂就不讲了。
讲讲电磁感应
接着上回书,有俩问题没解答:
- 电场是如何将自己与导体分离(detach)的呢?
- 又是如何在空间中传播(propagate)开来的呢?
想象一个电荷,先是以一个低速运动,然后突然加速到高速,那么加速过程中,它的电场是怎样的呢?
信息本身并不能以无限速度传输,而是光速。电荷加速这个信息,并不能让电场立马感知到。距离电荷近的电场可以早些感知到,而远处电场则不能并且还维持原来的状态。所以,**扭结(kink)**就产生了。
图中电荷从左向右运动
这种 kink 从整个全局视角看起来,就是电磁扰动(distrubance)或者电磁辐射(radiation)。
那么上一节说过的偶极子,是怎么发出正弦波的呢?
偶极子是持续进行加速,减速的循环的,两侧到中点加速,中点到两侧减速。而电场线在中点处闭合抛出,因为原来电场太慢,就像惯性一样,跟不上应由电场线的变化,“兜”出一个闭合的圈来。【说实话,感觉这里他也没讲明白,还是像上一节跳过去了】【黄线 0 以上,就是电场线向上!貌似明白了,然后加减速就是sin的导数!!!】
【接收这里没看懂,为啥又变成波状的了,不应该是一组一组闭合线吗?】
除了天线长是波长一半之外,还要考虑阻抗匹配(impedance matching)——源阻抗要和负载阻抗相同,如果负载阻抗小,那么信号多余的能量会反射出去,造成干扰?【这里我没仔细看,因为有点儿超纲了,我这里胡说的,不多说了…有点儿扯远了。
】
频谱(spectrum)
一种非常稀有的资源!早在2008年,美国政府一年就要花 190 亿美元拍得某些频谱。拍卖。这玩意儿是拍卖的。
回顾第一节,起初,一个 cell 里如果有 5 个用户,那么需要有 5 个不同的频率。手机也自带滤波电路(filter circuit),把不属于自己的频率电波滤掉。
更准确的说是频率范围(frequency range)或者频带(band)来代替频率。而二进制数据转换成频率需要调制(modulation),如果是频率调制(之前我们说过1G通信用的这个,已经废止了),我们需要两个频率,高频表示1,低频表示0。
手机信号一般是加密的,防止被窃听。
但全世界有数十亿移动设备,一机一频,频谱根本不够用,怎么办呢?
首先为啥不够用呢,我们知道,整个电磁波频谱包含可见光,紫外,红外,伽马射线,还有微波,x光。频太高,穿墙不好,频太低,能量太低,需要大功率天线,对人不好。
比低频高一点的无线电频率,需要依靠地球的电离层(ionosphere)。
所以能用的频率只有
1
0
6
10^6
106 到
1
0
10
10^{10}
1010,也就是 MHz 到 10 GHz
频谱资源本身由国家或地区政府组织控制,然后拍卖给商业公司。
在美国是 FCC 和 NTIA,在欧洲是 CEPT,我国就是工信部。
而全球就是 ITU(国际电信联盟)
4G 的调制用的是 Quadrature Amplitude Modulation,叫正交振幅调制。首先3bit一个串,低频,高频分别表示 4 个串,那么同频的4个串怎么区分呢?靠相位,低频每个相位分别是 45 135 225 315,高频是 0 90 180 270
每个运营商得到的频带很窄,一般只有50 MHz,如何高效使用?他把频带进一步分成时隙(frequency slot),在不同塔之间,进行时隙分配(distribution)。邻 cell 两塔时隙不同,你跨 cell 打电话,只是频率变了,电话并不会中断。
接下来就是同一区域多人同时打电话的问题,这里采用**多址接入(multiple access)**技术,这也分三种:可以分频,可以分时(不同时),可以不同编码,实际上每代通信技术最关键的区别,就是在与多址接入采用哪一种方式。
4G 的 OFDMA 就是把频带分成更小的频域,叫做子载波(sub-carrier),然后把不同的子载波进行数学正交化,再对每个子载波分别调制【根本不懂再说什么,意思意思得了。】
调制(modulation)
已知频率与波长呈反比,频率越低,波长越长,之前我们讲了,天线和波长成正比,所以受空间成本限制,我们不能传太低频的波。
所以我们要把各种各样的波,尽量调制成频率较高,适合天线的波。
信号没被调制前叫信波(message signal)。只加高频率叫做载波(carrier signal,可简称为carrier),调制后的波叫做调制信号(modulated signal),调制其实就是从波的三属性——振幅(amplitude)、频率、相位(phase)入手,对载波进行调制,注意,是载波!!!
那么如何将 0 1 与这三个属性对应呢?
第一种是幅移键控(amplitude shift keying),高振幅1,低振幅0。
频移键控
相移键控,变180
QAM技术,太复杂,没听懂,贴个图吧
4G使用的是 64 位 QAM,比普通调制快6倍
路由
静态路由(static):路径固定不变,手动设置
动态路由(dynamic):路径自动改变,更常用。
最常用的动态路由算法——链路状态路由算法(link state algorithm),分为两部分:
- 可靠泛洪(reliable flooding)
- 最短路径算法(dijkstra algorithm)
运行完最短路径算法后,每台路由器应该都有一个所处网络的完整拓扑,即知道自己到网络任一路由器路径信息。这是链路状态路由的第一步。它到相邻路由器的连接信息就是它的链路状态,包括:
- 邻居 IP 地址
- 到邻居家去的路径成本(权)
- 路径是否修路,封路?(dead or alive,health)
包含链路状态信息的分组就做链路状态分组(link state packet),一台路由器回向链路中所有路由器,像洪水泛滥一样连锁传递链路状态分组,所以叫做洪泛(flooding)。
所有路由器会根据收到的链路状态,更新路由表,然后使用最短路径算法,路由数据分组。
但洪范不是这么简单。网络中有环路(looping)时,链路状态分组会收发数次,浪费资源。解决办法是赋予分组唯一 ID,相同 ID 分组只接受一次。
全球网络规模巨大,在这么大范围里执行洪泛不现实,因此我们使用 OSPF 技术。一个大网络划分成一堆小网络(local),每个小网络取几个边缘路由器(border),作为这个大网络的主干区(backbone)。洪泛只在小网络里运行。如果分组要跨小网络,就要跨域主干网。具体原理没讲。
卫星
不看了,和互联网有些远
卫星电视
同上
GPS
同上
7 2021
传送门
【这个虽然之前也都讲过,但厘清了一些术语的意义。】
协议栈
- 物理层:网络线缆,线缆连接设备的接口,信号在线缆里传输的规范(specification)。
- 线缆
- 铜线:铜芯,塑胶皮。改变电压表示01。常用是双绞线(twisted-pair),美国标准是Cat5,Cat5e,Cat6,Cat是category,即类。Cat5就是俗称的5类线,依次是超5类,6类。类的不同体现在绞数,长度,传输率等物理属性上。现在一般用超5类替代老旧的5类,超5类解决了互扰(crosstalk)问题——即此线中电脉冲被其他线无意检测到。6类解决得更好,但成本也更高,铺设长度也有限制。
- 光纤:比铜线快,损耗小,传输距离更长;但也更贵,更易损。
- 集线器(hub):一种设备,允许同时连接多台电脑。 优点是比点对点连接(peer to peer)能连更多设备。缺点是会给不想通信的设备链路产生噪音和不必要的占用。并且造成冲突域(collision domain)
- 线缆
- 数据链路(date link)层:又叫网络接口(interface),网络接入层(network access layer)。解释物理层的信号,从而让设备使用。最常见的是以太网协议(Ethernet)
- 交换机:比hub,多了点儿智能,知道数据发给谁,只发给需要数据的机器。
- 网络层:又叫互联网层。允许不同网络通过路由器通信。通过路由器连接起来的网络组成互联网络(Internetwork),最有名的互联网络就是因特网(Internet)。本层协议是 IP。
- 路由器:比hub和switch,它不限于LAN。
- BGP 协议:Border Gateway Protocol,边界网关协议,不同于 OSPF 的另一种路由协议,但功能相似。路由器互相共享数据,让它们知道转发分组的最优路径。
- 路由器:比hub和switch,它不限于LAN。
- 传输层:分辨客户端和服务端,把数据分流给二者。本层最常用协议 TCP 和 UDP。
- 应用层
服务器和客户端统称为节点(node)
双工(duplex):信息在线缆中可以双向传播,全双工(full-duplex),同时双向;半双工(half-duplex),轮流双向
单工(simplex)
RJ45插口(port),RJ45插头(plug),Registered Jack。
插口有两个灯,黄灯指线两端设备都开机,绿灯指线中确实有数据在传输。
CSMA/CD:carrier sense multiple access with collision detection,带冲突检测的载波监听多路访问。用来检测通信信道何时清空可用,设备可以用它传输数据。
一个局域网协议。一个站传输前需要监听线路,检测到线路空闲时才开始发送,发送过程中检测到由多个同时传输引起冲突时就中止发送,并等待随机长度时间再尝试传输
Media Access Control Address,MAC 地址,全球范围内的唯一标识符,用来区分具体的网络接口。48 位数,12个十六进制,分成六组,六对。结构分为两部分:
- 头3个8进制,也就是 9 位,是OUI,结构化唯一标识符,Organizationally
【怎么图里跟说的不一样? 】
以太网使用的是 MAC 地址。
单播,多播,广播
unicast,multicast,broadcast
目标地址最高位 0 单播,1 多播
广播地址 ,全 F
数据分组:线路中传输的一组bit,不特指某层的东西,而是广义的传输数据。数据链路层的数据分组就是以太网帧。
以太网帧的结构:
Start Frame Delimnitor 分隔符
VLAN Virtual LAN:指在同一台物理设备上模拟 LAN
FCS:Frame Check Sequence,校验和,使用CRC,循环冗余校验(原理:多项式除法,得出一个值)。
1 2023
【看过了,略】