计算机网络总结

1 概述

网络的网络

网络将主机连接起来,互联网将网络连接起来。因特网是全球范围的互联网。

ISP

Internet Service Provider:从互联网管理机构获得IP地址,同时拥有通信线路及路由器等联网设备。

ISP根据覆盖面积分为:第一层ISP、区域ISP、接入ISP。互联网交换点IXP允许两个ISP直接相连而不用经过第三个ISP。

主机间的通信方式

C/S、P2P

电路交换与分组交换

时延

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

计算机网络体系结构

常见的有:OSI、五层协议、TCP/IP

alt text

五层协议

(由上到下)
应用层
运输层/传输层
网络层
数据链路层
物理层

OSI

(由上到下)
应用层
表示层
会话层
运输层
网络层
数据链路层
物理层

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

TCP/TP

(由上到下)
应用层
运输层
网际层
网络接口层

TCP/IP将物理层和数据链路层合并为网络接口层。

TCP/IP体系结构不严格遵循OSI分层概念,应用层可能直接访问网络层或传输层。

传递过程

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

路由器工作在网络层中。

2 物理层

通信方式

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

带通调制

模拟信号:连续的信号 数字信号:离散的信号 带通调制:将数字信号转化为模拟信号

3 链路层

3.1 基本问题

封装成帧

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

首部 + IP数据报 + 尾部

透明传输

如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误地判定。

解决方法:在数据部分中出现与首部尾部相同内容的前面插入转义字符。在接收端进行处理后可以还原出原始数据,该过程透明传输的内容是转义字符,用户觉感知不到转义字符的存在。

差错检测

通过循环冗余检验(CRC)来检查比特差错。

3.2 信道分类

广播信道

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

所有节点在同一广播上发送数据,可能会发生碰撞。解决方法:

点对点信道

一对一通信,不会发生碰撞,使用PPP协议进行控制。

3.3 信道复用技术

3.4 CSMA/CD协议

CSMA/CD:载波监听多点接入/碰撞检测。

发生碰撞时,站点要停止发送,等待一段时间后再继续发送,这个时间采用截断二进制指数退避算法决定。

3.5 PPP协议

用户计算机和ISP进行通信时所使用的数据链路层协议。

PPP的帧格式:

F + A + C + 协议 + IP数据报 + FCS + F

3.6 MAC地址

MAC地址是链路层地址,长度为6字节(48位),用于唯一标识网络适配器。一台主机有多少个网络适配器就有多少个MAC地址。

3.7 局域网

一种典型的广播信道,主要特点是网络为一个单位所拥有,且地理范围和站点数目均有限。

主要有以太网、令牌环网、FDDI、ATM等技术,目前以以太网为主

分类:星型、环型、直线型

3.8 以太网

一种星型拓扑结构局域网。

早期使用集线器连接,但可能发生碰撞。目前使用交换机连接,其根据MAC地址进行存储转发,不会发生碰撞。

以太网帧格式:

目的地址 + 源地址 + 类型 + IP数据报 + FCS
 6bit      6bit    2bit   46-1500    4

3.9 交换机

交换机具有学习能力,学习的是交换表的内容,交换表中存储着MAC地址到接口的映射。

主机A向主机B,传输数据时,如果主机B不在交换表中,则主机A发送广播帧,其它主机丢弃该帧,主机B接到帧后进行回应,并将自己的地址写入交换表。

3.10 虚拟局域网

虚拟局域网(VLAN)可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息。

网络层

网络层是整个互联网的核心,其向上提供灵活的、无连接的、尽最大努力交付的数据报服务。

网络层使用IP协议,可以把异构的物理网络连接起来,使得他们看起来好像是一个统一的网络。

与IP协议配套使用的协议:

4.1 IP数据报的格式

alt text

alt text

## 4.2 IP地址编址方式

分为三个阶段:

4.2.1 分类

将IP划分为网络号和主机号,不同分类具有不同的网络号长度,并且是固定的。

alt text

4.2.2 子网划分

通过在主机号字段中拿一部分作为子网号,把两级IP地址分为三级IP地址。

IP地址 ::= {<网络号>,<子网号>,<主机号>}

若要使用子网,必须配置子网掩码。

A类地址的默认子网掩码为255.0.0.0,B类为255.255.0.0。如果B类地址的子网占两个比特,则子网掩码为255.255.192.0。

4.2.3 无分类

无分类编址CIDR消除了分类地址及子网划分的概念,使用网络前缀和主机号IP对地址进行编码,网络前缀的长度可以根据需要变化。

IP地址 ::= {<网络前缀号>,<主机号>}

使用网络前缀来减少路由表项的方式称为路由聚合,也成为构成超网

4.3 地址解析协议ARP

ARP用于根据主机的IP地址得到MAC地址:

alt text

每个主机都有一个ARP高速缓存,用于存放本局域网上各主机和路由器的IP地址到MAC地址的映射表。

## 4.4 网际控制报文协议 ICMP

ICMP是为了更有效地转发IP数据报和提高交付成功的机会,它封装在IP数据报中,但不属于高层协议。

alt text

ICMP报文分为差错报告报文询问报文

alt text

ICMP的常见应用:

原理:发送不同size的TTL,直到目的主机接收到了数据报

## 4.5 虚拟专用网 VPN

使用公用的互联网作为本机构各专用网之间的通信载体。

## 4.6 网络地址转换 NAT

专用网内部的主机使用本地IP地址,同时又想和互联网上的主机通信时,可使用NAT将本地IP转换为公网IP。

alt text

4.7 路由器的结构

路由器从功能上可划分为:路由选择分组转发

分组转发结构分为:交换结构、输入端口、输出端口:

alt text

4.8 路由器分组转发流程

alt text

路由选择协议

路由选择协议可分为两大类:

### 内部网关协议 RIP (Routing Information Protocol)

RIP时一种基于距离度量的路由选择协议,这里的距离指的是跳数,直接相连的路由器跳数为1.跳数最多为15,超过15标识不可达。

RIP按固定时间间隔与相邻的路由器交换路由表,经过若干次交换后,所有路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。

优点:实现简单,开销小

缺点:最大距离为15,消息传播存在延迟

### 内部网关协议 OSPF (开放最短路径优先,Open Shortest Path First)

特点:向本自治系统(Automation System, AS)内的所有路由器采用洪泛法发送信息,内容为与相邻路由器的链路状态。只有当链路状态发生变化时,路由器才会发送信息。

优点:所有路由器都具有全网的拓扑结构图,并且是一致的。相较于RIP,OSPF收敛速度更快。

外部网关协议 BGP (边界网关协议,Border Gateway Protocol)

每个AS配置BGP发言人,通过在两个相邻BGP发言人之间建立TCP连接来交换路由信息。

alt text

5 传输层

5.1 UDP与TCP的特点

5.2 UDP首部格式

alt text

UDP首部只有8个字节,包括源端口、目的端口、长度、检验和。12字节的伪首部是为了计算检验和而临时添加的。

5.3 TCP首部格式

alt text

## 5.4 TCP的三次握手

alt text

设A为客户端,B为服务器端:

三次握手的原因:防止失效的连接请求到达服务器,从而导致服务器错误打开连接。

5.5 TCP的四次挥手

alt text

四次挥手的原因:客户端发送了FIN连接释放报文后,服务器收到了这个报文,就进入到了CLOSE-WAIT状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕后,服务器会发送FIN连接释放报文。

TIME_WAIT:客户端接收到服务器端的FIN报文后进入此状态,此时并不是直接进入CLOSED,还需要等待2MSL,原因如下:

5.6 TCP的可靠传输

实现机制为超时重传:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重新传送这个报文

往返时间RTT:一个报文段从发送到收到确认所经过的时间。 加权平均往返时间RTTs:

\[RTTs = (1-\alpha) * (RTTs) + \alpha * RTT\]

超时时间RTO:

\[RTO = RTT_{s} + 4 * RTT_{d}\]

其中, \(RTT_{d}\) 为偏差的加权平均值。

5.7 TCP的滑动窗口

接收方通过TCP报文段中的窗口字段告诉发送方自己窗口的大小,发送方根据窗口值和其它信息设置自己的窗口大小。

alt text

特点:

5.8 TCP的流量控制

目的:为了控制发送方的发送速率,保证接收方来得及接受。

接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送速率。字段值为0,则发送方不能发送数据。

5.9 TCP的拥塞控制

如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致拥塞程度更高。此时应该调整发送方的速率,以降低整个网络的拥塞程度。

alt text

TCP通过以下四个方法进行拥塞控制:

alt text

慢开始

发送的最初执行慢开始,令cwnd(拥塞窗口)=1,发送方只能发送一个报文段;当收到确认后,将cwnd加倍,后续每轮继续加倍。

拥塞避免

设置ssthresh(慢开始门限),当cwnd>=ssthresh时进入拥塞避免,每轮cwnd+=1。如果出现超时,令ssthresh = cwnd / 2,然后重新执行慢开始。

快重传

接收方要求每次对收到的有序报文段进行确认,例如已经收到了A1,A2,此时收到A4,应当发送对A2的确认。对于发送方,如果收到三个重复确认,那么可以知道下一个报文段丢失,此时执行快重传,立即重传下一个报文段。例如收到3个A2,则A3丢失,立即重传A3。

快恢复

快重传发生时只是丢失了个别的报文段,网络没有拥塞。因此执行快恢复,令ssthresh = cwnd / 2, cwnd = ssthresh,此时直接进入拥塞避免。

alt text

6 应用层

6.1 域名系统 DNS (Domain Name System)

DNS是一个分布式数据库,提供了主机名和IP地址之间相互转换的服务。分布式数据库指的是每个站点只保留它自己的那部分数据。

剧名具有层次结构:根域名、顶级域名、二级域名。

alt text

DNS可以使用TCP或者UDP进行传输,使用的端口号都为53。大多数情况下使用UDP进行传输,以下情况会使用TCP传输:

## 6.2 文件传输协议 FTP (File Transfer Protocol)

FTP使用TCP进行连接,它需要两个连接来传送一个文件:

根据数据连接是否是服务器主动建立,FTP有主动被动两种模式:

alt text

alt text

主动模式要求客户端开放端口号给服务器端,需要配置客户端防火墙。 被动模式只需要服务器端开放端口号即可,无需配置客户端防火墙。

然而,被动模式会导致服务器端的安全性减弱,因为开放了过多的端口。

## 6.3 动态主机配置协议 DHCP (Dynamic Host Configuration Protocol)

DHCP:用户不需要手动配置IP地址等信息,包括IP地址、子网掩码、网关IP地址等。

DHCP工作过程如下:

Step1: 客户端发送Discover报文,目的地址为255.255.255.255:67,源地址为0.0.0.0:68,其被放入UDP中,该报文被广播到同一子网的所有主机上。如果客户端和DHCP服务器不在同一子网,需要使用中继代理。 Step2: DHCP服务器收到Discover报文后,发送Offer报文给客户端。由于客户端可能收到多个DHCP服务器提供的信息,因此客户端需要选择。 Step3: 如果客户端选择了某个DHCP提供的信息,那么就发送Request报文给该DHCP服务器。 Step4: DHCP发送Ack报文,表示客户端此时可以使用提供给它的信息。

alt text

## 6.4 远程登录协议 TELNET

用于登录到远程主机上,并且返回远程主机的输出。可以适应不同计算机和操作系统的差异。(如换行符定义)

## 6.5 电子邮件协议

一个电子邮件系统由三部分组成:用户代理、邮件服务器、邮件协议

邮件协议包含发送协议和读取协议,发送协议常用SMTP,读取协议常用POP3和IMAP。

alt text

SMTP

SMTP只能发送ASCII码,而互联网邮件扩充MIME可以发送二进制文件。MIME定义了ASCII码的棉麻规则,是对邮件主机结构的补充,并非SMTP的替代。

alt text

POP3

POP3的特点是只要用户从服务器上读取了邮件,就把该邮件删除。最新版本的POP3可以不删除邮件。

IMAP

IMAP协议中客户端和服务器的邮件保持同步,如果不手动删除邮件,那么服务器上的邮件也不会被删除,这允许用户随时访问服务器上的邮件。

6.6 常用端口

应用 应用层协议 端口号 传输层协议 备注
域名解析 DNS 53 TCP/UDP 长度超过512字节时使用UDP
动态主机配置协议 DHCP 67/68 UDP  
简单网络管理协议 SNMP 161/162 UDP  
文件传输协议 FTP 20/21 TCP 控制连接21, 数据连接20
远程终端协议 TELNET 23 TCP  
超文本传送协议 HTTP 80 TCP  
简单邮件传送协议 SMTP 25 TCP  
邮件读取协议 POP3 110 TCP  
网际报文存取协议 IMAP 143 TCP  

6.7 Web页面请求过程

Step1: 通过DHCP配置主机信息,获取到本机的IP地址、默认网关IP及子网掩码等信息;

Step2: 通过ARP解析默认网关的MAC地址,方便离开局域网;

Step3: 通过DNS解析出服务器的IP地址;

Step4: 通过HTTP请求页面,首先三次握手建立连接,然后将数据回传至本机,本机进行渲染。