根据Github众大神精简整理的计算机网络相关知识。 持续跟进添加知识进度。 ing…. # 一、概述

网络的网络

网络把主机连接起来,而互联网是把多种不同的网络连接起来,因此互联网是网络的网络。

https://github.com/CyC2018/CS-Notes/raw/master/pics/network-of-networks.gif

ISP

互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。

https://github.com/CyC2018/CS-Notes/raw/master/pics/46cec213-3048-4a80-aded-fdd577542801.jpg

目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。

https://github.com/CyC2018/CS-Notes/raw/master/pics/168e893c-e4a0-4ba4-b81f-9d993483abd0.jpg

主机之间的通信方式

  • 客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。
  • 对等(P2P):不区分客户和服务器。

https://github.com/CyC2018/CS-Notes/raw/master/pics/2ad244f5-939c-49fa-9385-69bc688677ab.jpg

电路交换与分组交换

1. 电路交换

电路交换用于电话通信系统,两个用户要通信之前需要建立一条专用的物理链路,并且在整个通信过程中始终占用该链路。由于通信的过程中不可能一直在使用传输线路,因此电路交换对线路的利用率很低,往往不到 10%。

2. 分组交换

每个分组都有首部和尾部,包含了源地址和目的地址等控制信息,在同一个传输线路上同时传输多个分组互相不会影响,因此在同一条传输线路上允许同时传输多个分组,也就是说分组交换不需要占用传输线路。

在一个邮局通信系统中,邮局收到一份邮件之后,先存储下来,然后把相同目的地的邮件一起转发到下一个目的地,这个过程就是存储转发过程,分组交换也使用了存储转发过程。

时延

总时延 = 传输时延 + 传播时延 + 处理时延 + 排队时延

https://github.com/CyC2018/CS-Notes/raw/master/pics/3939369b-3a4a-48a0-b9eb-3efae26dd400.png

1. 传输时延

主机或路由器传输数据帧所需要的时间。

https://camo.githubusercontent.com/5fbb2567e91e2f2fc7a325e90f74fc6a70340e1f/68747470733a2f2f6c617465782e636f6465636f67732e636f6d2f6769662e6c617465783f64656c61793d5c667261637b6c28626974297d7b76286269742f73297d

其中 l 表示数据帧的长度,v 表示传输速率。

2. 传播时延

电磁波在信道中传播所需要花费的时间,电磁波传播的速度接近光速。

https://camo.githubusercontent.com/192f15a49dfcd9505b636df833b8e07a79223702/68747470733a2f2f6c617465782e636f6465636f67732e636f6d2f6769662e6c617465783f64656c61793d5c667261637b6c286d297d7b76286d2f73297d

其中 l 表示信道长度,v 表示电磁波在信道上的传播速度。

3. 处理时延

主机或路由器收到分组时进行处理所需要的时间,例如分析首部、从分组中提取数据、进行差错检验或查找适当的路由等。

4. 排队时延

分组在路由器的输入队列和输出队列中排队等待的时间,取决于网络当前的通信量。

计算机网络体系结构

https://github.com/CyC2018/CS-Notes/raw/master/pics/426df589-6f97-4622-b74d-4a81fcb1da8e.png

1. 五层协议

  • 应用层 :为特定应用程序提供数据传输服务,例如 HTTP、DNS 等。数据单位为报文。
  • 传输层 :为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。
  • 网络层 :为主机提供数据传输服务。而传输层协议是为主机中的进程提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组。
  • 数据链路层 :网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。
  • 物理层 :考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。

2. OSI

其中表示层和会话层用途如下:

  • 表示层 :数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。
  • 会话层 :建立及管理会话。

五层协议没有表示层和会话层,而是将这些功能留给应用程序开发者处理。

3. TCP/IP

它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。

TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。

https://github.com/CyC2018/CS-Notes/raw/master/pics/45e0e0bf-386d-4280-a341-a0b9496c7674.png

TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中占据举足轻重的地位。

https://github.com/CyC2018/CS-Notes/raw/master/pics/d4eef1e2-5703-4ca4-82ab-8dda93d6b81f.png

4. 数据在各层之间的传递过程

在向下的过程中,需要添加下层协议所需要的首部或者尾部,而在向上的过程中不断拆开首部和尾部。

路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要传输层和应用层。

https://github.com/CyC2018/CS-Notes/raw/master/pics/ac106e7e-489a-4082-abd9-dabebe48394c.jpg

二、物理层

通信方式

根据信息在传输线上的传送方向,分为以下三种通信方式:

  • 单工通信:单向传输
  • 半双工通信:双向交替传输
  • 全双工通信:双向同时传输

带通调制

模拟信号是连续的信号,数字信号是离散的信号。带通调制把数字信号转换为模拟信号。

https://github.com/CyC2018/CS-Notes/raw/master/pics/f0a31c04-6e26-408c-8395-88f4e2ae928b.jpg

三、数据链路层

基本问题

1. 封装成帧

将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。

https://github.com/CyC2018/CS-Notes/raw/master/pics/ea5f3efe-d5e6-499b-b278-9e898af61257.jpg

2. 透明传输

透明表示一个实际存在的事物看起来好像不存在一样。

帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。

https://github.com/CyC2018/CS-Notes/raw/master/pics/c5022dd3-be22-4250-b9f6-38ae984a04d7.jpg

3. 差错检测

目前数据链路层广泛使用了循环冗余检验(CRC)来检查比特差错。

信道分类

1. 广播信道

一对多通信,一个节点发送的数据能够被广播信道上所有的节点接收到。

所有的节点都在同一个广播信道上发送数据,因此需要有专门的控制方法进行协调,避免发生冲突(冲突也叫碰撞)。

主要有两种控制方法进行协调,一个是使用信道复用技术,一是使用 CSMA/CD 协议。

2. 点对点信道

一对一通信。

因为不会发生碰撞,因此也比较简单,使用 PPP 协议进行控制。

信道复用技术

1. 频分复用

频分复用的所有主机在相同的时间占用不同的频率带宽资源。

https://github.com/CyC2018/CS-Notes/raw/master/pics/c4c14368-519c-4a0e-8331-0a553715e3e7.jpg

2. 时分复用

时分复用的所有主机在不同的时间占用相同的频率带宽资源。

https://github.com/CyC2018/CS-Notes/raw/master/pics/fa2273c3-1b5f-48ce-8e8b-441a4116c1c4.jpg

使用频分复用和时分复用进行通信,在通信的过程中主机会一直占用一部分信道资源。但是由于计算机数据的突发性质,通信过程没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。

3. 统计时分复用

是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。

https://github.com/CyC2018/CS-Notes/raw/master/pics/5999e5de-7c16-4b52-b3aa-6dc7b58c7894.png

4. 波分复用

光的频分复用。由于光的频率很高,因此习惯上用波长而不是频率来表示所使用的光载波。

https://github.com/CyC2018/CS-Notes/raw/master/pics/21041ec2-babb-483f-bf47-8b8148eec162.png

5. 码分复用

为每个用户分配 m bit 的码片,并且所有的码片正交,对于任意两个码片 和 有

https://camo.githubusercontent.com/375366f321c81ac7e67837c3fce1f1bc6f8a427d/68747470733a2f2f6c617465782e636f6465636f67732e636f6d2f6769662e6c617465783f5c7665637b537d

https://camo.githubusercontent.com/858d1274c608f6d519d53b7cb436dc8f08149571/68747470733a2f2f6c617465782e636f6465636f67732e636f6d2f6769662e6c617465783f5c7665637b547d

https://camo.githubusercontent.com/c865e31d591fff6d3e40f0db755f42a3d0c7b067/68747470733a2f2f6c617465782e636f6465636f67732e636f6d2f6769662e6c617465783f5c667261637b317d7b6d7d5c7665637b537d5c63646f745c7665637b547d3d30

为了讨论方便,取 m=8,设码片 为 00011011。在拥有该码片的用户发送比特 1 时就发送该码片,发送比特 0 时就发送该码片的反码 11100100。

https://camo.githubusercontent.com/375366f321c81ac7e67837c3fce1f1bc6f8a427d/68747470733a2f2f6c617465782e636f6465636f67732e636f6d2f6769662e6c617465783f5c7665637b537d

在计算时将 00011011 记作 (-1 -1 -1 +1 +1 -1 +1 +1),可以得到

https://camo.githubusercontent.com/0c73e56917dca0ab8ecec4029a5811beeea55e6a/68747470733a2f2f6c617465782e636f6465636f67732e636f6d2f6769662e6c617465783f5c667261637b317d7b6d7d5c7665637b537d5c63646f745c7665637b537d3d31

https://camo.githubusercontent.com/a3a70b9617bfb5361021f4367d864a852a40df0b/68747470733a2f2f6c617465782e636f6465636f67732e636f6d2f6769662e6c617465783f5c667261637b317d7b6d7d5c7665637b537d5c63646f745c7665637b53277d3d2d31

其中 为 的反码。

https://camo.githubusercontent.com/a6ac16cdd1032e3879adb3216d357c68b506cf1d/68747470733a2f2f6c617465782e636f6465636f67732e636f6d2f6769662e6c617465783f5c7665637b53277d

https://camo.githubusercontent.com/375366f321c81ac7e67837c3fce1f1bc6f8a427d/68747470733a2f2f6c617465782e636f6465636f67732e636f6d2f6769662e6c617465783f5c7665637b537d

利用上面的式子我们知道,当接收端使用码片 对接收到的数据进行内积运算时,结果为 0 的是其它用户发送的数据,结果为 1 的是用户发送的比特 1,结果为 -1 的是用户发送的比特 0。

https://camo.githubusercontent.com/375366f321c81ac7e67837c3fce1f1bc6f8a427d/68747470733a2f2f6c617465782e636f6465636f67732e636f6d2f6769662e6c617465783f5c7665637b537d

码分复用需要发送的数据量为原先的 m 倍。

爱女友,爱生活
0
0
发表留言

文章
计算机网络笔记
根据Github众大神精简整理的计算机网络相关知识。 持续跟进添加知识进度。 ing…. # 一、概述网络的网络网络把主机连接起来,而互联...
扫描右侧二维码继续阅读
October 18, 2018
zlatanera
blogger
王誉睿
我是网站主理人Jackie·Wong,95后。热爱读书、电影和数码,喜欢旅游,对未知事物拥有无限的好奇心,脑洞随时大开。
我的其他网站:

Jackieの生活觀察(Notion主页)
逝去的武林
BBtime

此网站用RSSHub插件可以添加到RSS阅读器中方便查看哦

统计
文章:157 篇
分类:4 个
评论:26 条
运行时长:1年351天
by yoniu.
zlatanera