Open tomoya06 opened 4 years ago
数据传输经过以下流程:源点aka源站/信源 - 发送器 - 传输系统 - 接收器 - 终点aka目的站/信宿
信号是数据的电气或电磁的表现。分为:模拟信号aka连续信号;数字信号aka离散信号
信道一般表示想某一个方向传送信息的媒体。一条通信电路往往包含一条发送信道和一条接收信道
从通信双方信息交互的方式来看,可以有以下三种通信类型:
使用这两种技术进行通信,在通信的过程中主机会一直占用一部分信道资源。信道利用率不高。
来自信源的信号称为基带信号。
调制:基带信号中的低频或直流成分不能被信道传输,因此需要对基带信号进行调制。分为:
链路层使用的信道主要有两种类型:
内容:
就是在数据前后分别添加首部和尾部,这样就构成了一个帧。
透明表示一个实际存在的事物看起来好像不存在一样。”在数据链路层透明传送数据“表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。
帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。
奇偶校验位(英語:parity bit)或校验比特(英語:check bit)是一个表示给定位数的二进制数中1的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检测码。
奇偶校验位有两种类型:偶校验位与奇校验位。
以偶校验位來說,如果一组给定数据位中1的个数是奇数,補一個bit为1,使得总的1的个数是偶数。例:0000001, 補一個bit为1, 00000011。
以奇校验位來說,如果给定一组数据位中1的个数是奇数,補一個bit为0,使得总的1的个数是奇数。例:0000001, 補一個bit为0, 00000010。
偶校验实际上是循环冗余校验的一个特例,通过多项式 x + 1 得到1位CRC。
点对点协议(Point-to-Point Protocol)。互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议。
典型的广播信道。主要特点:网络为一个单位所拥有,且地理范围和站点数目均有限。
按网络拓扑分类:星形网、环形网、总线网
以太网(Ethernet)是一种计算机局域网技术,它规定了包括物理层的连线、电子信号和介质访问控制的内容。以太网是目前应用最普遍的局域网技术。
概述:以太网实现了网络上无线电系统多个节点发送信息的想法,每个节点必须获取电缆或者信道才能传送信息,有时也叫作以太(Ether)。 每一个节点有全球唯一的48位MAC地址,以保证以太网上所有节点能互相鉴别。
标准拓扑结构为总线型拓扑,目前的快速以太网使用交换机来进行网络连接和组织,因而拓扑结构变成星形,但在逻辑上仍然使用总线型拓扑和CSMA/CD协议。
以上资讯参考维基百科
MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标识网络适配器(网卡)。
一台主机拥有多少个网络适配器就有多少个 MAC 地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因此就有两个 MAC 地址。
网络交换机 aka. 交换机(Network switch)是一种网络硬件,是一种多端口的网桥,在数据链路层使用MAC地址转发数据。
交换机可以自主形成一份MAC地址转发表。形成过程:
虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息。
使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。
全称:载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Detection)。协议要点如下:
在使用该协议时不可能同时进行发送和接收,但必须边发送边监听信道,因此使用CSMA/CD协议的网络只能进行半双工通信。
记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 争用期 。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 截断二进制指数退避算法 来确定。从离散的整数集合 {0, 1, .., (2^k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
IP协议配套的三个协议:
将网络互联起来需要使用一些中间设备,按所在层次分类:
IP地址的编址方式经过了三个历史阶段:分类地址、子网划分、无分类/超网
将IP地址划分为若干固定类,每一类由网络号和主机号两部分组成,也就是两级IP地址。
网络号在整个护粮网范围内必须是唯一的、主机号在网络号指明的网络范围内必须是唯一的,因此一个IP地址在整个互联网范围内是唯一的。
不同分类的网络号长度不一样。A类、B类、C类地址的网络号分别1、2、3个字节长,且网络号字段最前面分别有1、2、3位的类别位,分别为0、10、110。D类、E类如图。
路由器的路由表每项内容:目标网络、下一跳地址
分类地址aka两级地址的缺点:空间利用率地、路由表大、不够灵活
通过在主机号字段中拿一部分作为子网号,把两级 IP 地址划分为三级 IP 地址。
由于32位IP地址本身以及数据报的首部都没有包含任何有关子网划分的信息,因此使用子网还必须要使用子网掩码。
路由表每项内容:目的网络地址、子网掩码、下一跳地址。
全称无分类域间路由选择CIDR (Classless Inter-Domain Routing)。主要特点:
CIDR 的记法上采用在 IP 地址后面加上网络前缀长度的方法,例如 128.14.35.7/20 表示前 20 位为网络前缀,则:
CIDR 使用32位的地址掩码,同样aka子网掩码,由一串1+一串0组成,1 的个数为网络前缀的长度;斜线记法中斜线后面的数据就是地址掩码中1的个数。
一个 CIDR 地址块中有很多地址,一个 CIDR 表示的网络就可以表示原来的很多个网络,并且在路由表中只需要一个路由就可以代替原来的多个路由,减少了路由表项的数量。把这种通过使用网络前缀来减少路由表项的方式称为路由聚合,也称为构成超网 。
路由表每项内容:网络前缀、下一条地址
最长前缀匹配:查找路由表时可能会得到不止一个匹配结果,应当采用最长前缀匹配来确定应该匹配哪一个。
IP地址 | BIN |
---|---|
206.0.68.0/22 | 11001110000000000100010000000000 |
206.0.71.128/25 | 11001110000000000100011110000000 |
206.0.71.130 - 目的IP地址 | 11001110000000000100011110000010 |
各字段介绍详见这里
IP地址 vs MAC地址:IP地址是一种逻辑地址,是软件实现的;MAC地址aka物理地址
协议作用:已经知道一个机器的IP地址,需要找到其相应的硬件地址。
每一台主机都有一个ARP高速缓存(ARP Cache),里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。
同一局域网内,如果主机A想要知道主机B的MAC地址MAC:此时主机 A 通过广播的方式发送 ARP 请求分组,主机 B 收到该请求后会发送 ARP 响应分组给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。
跨局域网,则需要由局域网的路由器帮忙转发。
为什么不直接用硬件地址通信?不同的网络使用不同的硬件地址,要使这些异构网络能够互相通信就必须进行非常负责的硬件地址转换工作,几乎不可能完成。
ICMP 是为了更有效地转发 IP 数据报、提高交付成功的机会。ICMP允许主机或路由器报告差错情况、提供有关异常情况的报告。
但,ICMP不是高层协议,ICMP报文装在IP数据报中,作为其中的数据部分。
ICMP 报文分为差错报告报文和询问报文。具体类型值和类型含义参考这里
全称:分组网间探测 (Packet InterNet Groper),测试两台主机之间的连通性。使用ICMP回送请求与回送回答报文,应用层直接使用网络层ICMP,没有通过传输层的TCP或UDP。
用来跟踪一个分组从源点到终点的路径。 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报。操作过程:
路由选择协议的核心是路由算法,即需要何种算法来获得路由表中的各项目。理想的路由算法的关键特点:能适应通信量和网络拓扑的变化 aka. 自适应性
互联网采用分层次的路由选择协议。可以把整个互联网划分成许多较小的自治系统(autonomous system, AS)。自治系统是在单一技术管理下的一组路由器。一个大的ISP就是一个自治系统。这样,路由选择协议就分为两大类:
RIP是一种分布式的基于距离向量的路由选择协议。
距离是指跳数,直接相连的路由器跳数为 1。跳数最多为 15,超过 15 表示不可达。
每台路由器按固定的时间间隔仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。
更新路由表算法:收到相邻路由器(其地址为 X)的一个 RIP 报文之后:
特点:实现简单,开销小;最大距离15限制了网络的规模,网络故障时要经过较长时间才能传送到所有路由器
为了克服RIP的缺点而开发出来的协议。使用了Dijkstra提出的最短路径算法SPF。
所有路由器都具有全网的拓扑结构图,并且是一致的。相比于 RIP,OSPF 的更新过程收敛的很快。
AS之间的路由选择困难之处在于:
因此BGP只能力求寻找一条能到达目的网络且比较好的路由、而并非最佳路由。配置BGP时,每个AS至少要选择至少一个路由器作为该AS的”BGP发言人(BGP speaker)“,通过在两个相邻 BGP 发言人之间建立 TCP 连接、建立BGP会话、来交换路由信息。使用TCP连接交换路由信息的两个BGP发言人彼此成为对方的邻站。
BGP所交换的网络可达性的信息就是要到达某个网络(用网络前缀表示)索要经过的一系列自治系统。每个BGP发言人可以构造出树形结构的自治系统连通图,不存在回路。
路由器是一种具有多个输入端口和输出端口的专用计算机,其任务是转发分组。
划分为两大部分:路由选择部分+分组转发部分。
分组转发部分由三部分组成:交换结构+输入端口+输出端口
交换结构aka交换组织,其作用就是根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。一般来说转发表=路由表。
从数据报的首部提取目的主机的 IP 地址 D,得到目的网络地址 N。
具有更大地址空间的新版本IP协议。完整参考维基百科
地址格式:地址长度128位(vs IPv4 32位),以16位为一组,以":"隔开,每组以4位十六进制方式表示。eg. : 2001:0db8:86a3:08d3:1319:8a2e:0370:7344
。更多缩写规则参考维基百科
由于 IP 地址的紧缺,一个机构能申请到的 IP 地址数往往远小于本机构所拥有的主机数。并且一个机构并不需要把所有的主机接入到外部的互联网中,机构内的计算机可以使用仅在本机构有效的 IP 地址(专用地址)。有三个专用地址块:
在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。采用这样的专用IP地址的互联网络称之为专用互联网aka本地互联网aka专用网。
使用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网称为虚拟专用网VPN(Virtual Private Network)。
下面以两个场所为例说明如何使用IP隧道技术实现VPN:
下图中,场所 A 和 B 的通信经过互联网,如果场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信,IP 数据报的源地址是 10.1.0.1,目的地址是 10.2.0.3。数据报先发送到与互联网相连的路由器 R1,R1 对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为 10.2.0.3,就交付给 Y。
IP隧道是指一种可在两网络间用网际协议进行通信的通道。在该通道里,会先封装其他网络协议的数据包,之后再传输信息。参考百科、
专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用 NAT (Network Address Translation)来将本地 IP 转换为全球 IP。
VPN vs NAT:参考CSDN博客:VPN协议和NAT协议都是通过重新构建一个IP首部来实现的,但他们的实现又有区别:
- VPN是将内部IP数据报加密后打包成外部IP数据报的数据部分,它的主要目的是为了数据的保密性,
- NAT是纯进行地址转换,它的目的是为了解决本地编址的内部网络与外网通信的问题。
网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。
协议端口号(Protocol Port Number) aka. 端口,指软件端口,是应用层的各种协议进程与运输实体进行层间交互的一种地址。
首部字段只有8个字节,12字节的伪首部是为了计算检验和临时添加的,不是UDP用户数据报真正的首部。
TCP把连接作为最基本的抽象。每一条TCP连接有两个端点 aka. 套接字(socket) aka. 插口。有:
简述:假设 A 为客户端,B 为服务器端:
最后还需要再发送一次确认的原因:为了防止失效的连接请求到达服务器,让服务器错误打开连接。
客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。
简述:以下描述不讨论序号和确认号,且ACK始终为1。
A进入TIME-WAIT状态原因:
- 确保A发的最后一个确认报文能够到达。如果 B 没收到 A 发送来的确认报文,那么就会重新发送连接释放请求报文,A 等待一段时间就是为了处理这种情况的发生。
- 让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。
TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段。
TCP使用自适应算法来设置超时重传时间。计算方法如下。其中:
窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中的窗口字段告诉发送方自己的窗口大小,发送方根据这个值和其它信息设置自己的窗口大小。
发送窗口内的字节都允许被发送,接收窗口内的字节都允许被接收。如果发送窗口左部的字节已经发送并且收到了确认,那么就将发送窗口向右滑动一定距离,直到左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向右滑动接收窗口。
接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。
A未收到确认的部分在超时之后就会重传,直到收到B的确认为止。
流量控制是为了控制发送方发送速率,保证接收方来得及接收。
接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。
拥塞(congestion):在某段时间内,对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就会变坏,这种情况就叫拥塞。
如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度。
TCP的拥塞控制算法:慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)、快恢复(fast recovery)。下面假设:
也叫基于窗口的拥塞控制,发送方需要维护一个叫做拥塞窗口(coggestion window, cwnd)的状态变量,注意拥塞窗口与发送窗口的区别:拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送窗口。
控制拥塞窗口的原则:如果没有拥塞,窗口就可以增大一些,一旦出现或可能出现拥塞,就必须把窗口减小一点。判断网络拥塞的依据是出现了超时。
由小到大逐渐增大拥塞窗口数值。开始发送时设 cwnd = 1,发送方只能发送 1 个报文段;当收到确认后,将 cwnd 加倍。
注意到慢开始每个轮次都将 cwnd 加倍,这样会让 cwnd 增长速度非常快,从而使得发送方发送的速度增长速度过快,网络拥塞的可能性也就更高。设置一个慢开始门限 ssthresh,当 cwnd >= ssthresh 时,进入拥塞避免,每个轮次只将 cwnd 加 1。
如果出现了超时,则令 ssthresh = cwnd / 2,如上图点2,ssthresh = 24 / 2 = 12,然后重新执行慢开始。
在接收方,要求每次接收到报文段都应该对最后一个已收到的有序报文段进行确认。例如已经接收到 M1 和 M2,此时收到 M4,应当发送对 M2 的确认。
在发送方,如果收到三个重复确认(如上图点4),那么可以知道下一个报文段丢失,此时执行快重传,立即重传下一个报文段。例如收到三个 M2,则 M3 丢失,立即重传 M3。
在这种情况下,只是丢失个别报文段,而不是网络拥塞。因此执行快恢复(如上图点5),令 ssthresh = cwnd / 2 ,cwnd = ssthresh,注意到此时直接进入拥塞避免。
慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh。
可以看到,拥塞与报文段丢失的差别在于,拥塞时已经收不到确认回复;报文段丢失时能收到确认回复,但并不是已发送的最新一个报文段。
主要介绍一些应用层协议和应用
DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转换的服务。这里的分布式数据库是指,每个站点只保留它自己的那部分数据。
域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名、三级域名等。
DNS 可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53。大多数情况下 DNS 使用 UDP 进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。
在两种情况下会使用 TCP 进行传输:
FTP 使用 TCP 进行连接,它需要两个连接来传送一个文件:
根据数据连接是否是服务器端主动建立,FTP 有主动和被动两种模式:
主动模式要求客户端开放端口号给服务器端,需要去配置客户端的防火墙。被动模式只需要服务器端开放端口号即可,无需客户端配置防火墙。但是被动模式会导致服务器端的安全性减弱,因为开放了过多的端口号。
提供了即插即用的连网方式,用户不再需要手动配置 IP 地址等信息即可加入新的网络。DHCP 配置的内容不仅是 IP 地址,还包括子网掩码、网关 IP 地址。
一个电子邮件系统由三部分组成:用户代理(aka. 电子邮件客户端软件)、邮件服务器以及邮件协议。邮件协议包含发送协议和读取协议,发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。
用于登录到远程主机上,并且远程主机上的输出也会返回。TELNET 可以适应许多计算机和操作系统的差异,例如不同操作系统系统的换行符定义。
独立成章参考这里
计算机网络概述
什么是互联网
网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。
如何接入互联网
ISP(Internet service provider, 网络服务提供商) 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。
IXP (Internet exchange point, 互联网交换点) 允许两个 ISP 直接相连而不用经过第三个 ISP。
目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。
互联网的组成
边缘的端系统之间的通信方式:
数据交换方式:
下图,起点A经过B-C传送数据到终点D,三种数据交换方式的比较如下:
网络性能指标
delay = l(bit) / v(bit/s)
,其中其中 l 表示数据帧的长度,v 表示速率。delay = l(m) / v(m/s)
,其中 l 表示信道长度,v 表示电磁波在信道上的传播速度。计算机网络体系结构
层次化的好处,1是方便替换其中某个部分,2是每层的应用可以只考虑分配给自己的任务。
数据流动
利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往应用层往上走。
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。这种把数据信息包装起来的做法称为封装。
各层概述
应用层
* 表示层:数据压缩、加密以及数据描述,使得应用程序不必关心在各台主机中数据内部格式不同的问题
* 会话层:建立及管理会话
传输层
网络层
数据链路层
物理层
总结图示