1.1 什么是因特网
1.1.1 具体构成描述
主机(host)端系统(end system)
端系统通过通信链路(communication link)和分组交换机(packet switch)连接到一起。
链路的传输速率以比特/秒(bit/s或bps)度量。
1 byte = 8 bit, bps是bit per second
当一台端系统要向另一台端系统发送数据时, 发送端系统将数据分段, 并为每段加上首部字节。 由此形成的信息包用计算机网络的术语来说称为分组(packet)。这些分组通过网络发送到目的端系统, 在那里被装配成初始数据。
分组交换机:路由器(router),链路层交换机(link-layer switch)
端系统通过因特网服务提供商(Internet Service Provider, ISP)接入因特网
端系统、 分组交换机和其他因特网部件都要运行一系列协议(protocol) ,这些协议控制因特网中信息的接收和发送。 TCP (Transmission Control Protocol,传输控制协议) 和IP(Internet Protocol,网际协议) 是因特网中两个最为重要的协议。
IP协议定义了在路由器和端系统之间发送和接收的分组格式。
因特网的主要协议统称为TCP/IP
1.1.2 服务描述
除了诸如电子邮件和Web冲浪等传统应用外, 因特网应用还包括移动智能手机和平板电脑应用程序, 其中包括即时讯息、 与实时道路流量信息的映射、 来自云的音乐流、 电影和电视流、 在线社交网络、 视频会议、 多人游戏以及基于位置的推荐系统。
这些应用程序涉及多个相互交换数据的端系统, 故它们被称为分布式应用程序(distributed application)。
与因特网相连的端系统提供了一个套接字接口( socket interface),该接口规定了运行在一个端系统上的程序请求因特网基础设施向运行在另一个端系统上的特定目的地程序交付数据的方式。
因特网套接字接口是一套发送程序必须遵循的规则集合, 因此因特网能够将数据交付给目的地。
1.1.3 什么是协议
协议(protocol)定义了在两个或多个通信实体之间交换的报文的格式和顺序, 以及报文发送和/或接收一条报文或其他事件所采取的动作。
1.2 网络边缘
通常把与因特网相连的计算机和其他设备称为端系统。因为它们位于因特网的边缘, 故而被称为端系统。端系统也称为主机(host),因为它们容纳(即运行) 应用程序 。主机有时又被进一步划分为两类: 客户(client)和服务器(server) 。
1.2.1 接入网**
接入网是指将端系统物理连接到其边缘路由器(edge router)的网络。边缘路由器是端系统到任何其他远程端系统的路径上的第一台路由器 。
1.2.2 物理媒体**
1.3 网络核心
网络核心, 即由互联因特网端系统的分组交换机和链路构成的网状网络。
网络核心的关键功能:
- 路由(决定分组采用的源到目标的路径)
- 转发(将分组从路由器的输入链路转移到输出链路)
1.3.1 分组交换
在各种网络应用中, 端系统彼此交换报文(message)。
为了从源端系统向目的端系统发送一个报文, 源将长报文划分为较小的数据块, 称之为分组(packet)。在源和目的地之间, 每个分组都通过通信链路和分组交换机(packet switch)传送。
分组以等于该链路最大传输速率的速度传输通过通信链路。如果某源端系统或分组交换机经过一条链路发送一个L比特的分组, 链路的传输速率为R比特/秒, 则传输该分组的时间为L/R秒。
- 存储转发传输
多数分组交换机在链路的输入端使用存储转发传输(store-and-forward transmission)机制。 存储转发传输是指在交换机能够开始向输岀链路传输该分组的第一个比特之前, 必须接收到整个分组。
路由器在转发前需要接收、 存储和处理整个分组。
通过由N条速率均为R的链路组成的路径(所以,在源和目的地之间有N-1台路由器), 从源到目的地发送一个分组。 端到端时延是 :d端到端=N*L/R
P个分组经过N条链路序列的时延:d=NL/R +(P-1)L/R ??
- 排队时延和分组丢失
每台分组交换机有多条链路与之相连。 对于每条相连的链路, 该分组交换机具有一个输出缓存(output buffer,也称为输出队列(output queue)) ,它用于存储路由器准备发往那条链路的分组。
如果到达的分组需要传输到某条链路, 但发现该链路正忙于传输其他分组, 该到达分组必须在输出缓存中等待。 因此, 除了存储转发时延以外, 分组还要承受输岀缓存的排队时延(queuing delay)。
因为缓存空间的大小是有限的, 一个到达的分组可能发现该缓存已被其他等待传输的分组完全充满了。 在此情况下, 将出现分组丢失(丢包)(packet loss),到达的分组或已经排队的分组之一将被丢弃 。
- 转发表和路由选择协议
当源主机要向目的端系统发送一个分组时, 源在该分组的首部包含了目的地的IP地址。
当一个分组到达网络中的路由器时, 路由器检查该分组的目的地址的一部分, 并向一台相邻路由器转发该分组。 更特别的是, 每台路由器具有一个转发表(forwarding table),用于将目的地址(或目的地址的一部分)映射成为输岀链路。
路由器使用分组的目的地址来索引转发表并决定适当的出链路。
数据报(datagram)
- 在通信之前,无需建立起一个连接,有数据就传输
- 每一个分组都独立路由(路径不一样,可能会失序)
- 路由器根据分组的目标地址进行路由
- 路由器不维护主机和主机之间的通信状态,无状态路由器
虚电路(virtual circuit)
有网络层连接,不仅仅体现在源主机和目标主机,还体现在中间经过的所有交换机上。
如果是“面向连接”,就是只体现在源主机和目标主机,不体现在中间经过的所有交换机上。
1.3.2 电路交换
通过网络链路和交换机移动数据有两种基本方法:
- 电路交换(circuit switching)
- 分组交换(packet switching)
当两台主机要通信时, 该网络在两台主机之间创建一条专用的端到端连接(end-to-end connection)
创建一个独享的线路。每个呼叫一旦建立起来就能够保证性能。如果呼叫没有数据发送,被分配的资源就会被浪费。通常被传统电话网络采用。
为呼叫分片;网络资源(如带宽)被分成片。(频分FDM、波分WDM、时分TDM、码分CDMA)
电路交换不适合计算机之间的通信:
1、建立时间长
2、计算机之间的通信具有突发性,如果使用线路交换,则浪费的片较多;即使这个呼叫没有数据传递,其所占据的片也不能被别的呼叫使用。
3、可靠性不高(例如某一个节点损毁,便无法通信)
1.3.3 网络的网络
端系统通过接入ISP连接到互联网
接入ISPs相应的必须是互联的,因此任何两个端系统可互相发送分组到对方
Internet结构:松散的层次模型
- 中心:第一层ISP
- 第二层:更小些的(通常是区域性的)ISP
- ……
1.4 分组交换网中的时延、丢包和吞吐
1.4.1 分组交换网中的时延概述
主要是:节点处理时延;排队时延;传输时延和传播时延,这些时延总体累加起来是节点总时延(tolal nodal delay)。
dnoda = dproc + dqueue + dtran + dprop
- 处理时延 dproc
检查分组首部和决定将该分组导向何处所需要的时间是处理时延的一部分。
- 排队时延 dqueque
在队列中, 当分组在链路上等待传输时, 它经受排队时延。 一个特定分组的排队时延长度将取决于先期到达的正在排队等待向链路传输的分组数量。 如果该队列是空的, 并且当前没有其他分组正在传输, 则该分组的排队时延为0。 另一方面, 如果流量很大, 并且许多其他分组也在等待传输, 该排队时延将很长。
- 传输时延 dtrans
传输时延是L/R。 这是将所有分组的比特推向链路(即传输, 或者说发射)所需要的时间。 实际的传输时延通常在毫秒到微秒量级。
- 传播时延 dprop
从该链路的起点到路由器B传播所需要的时间是传播时延。 该比特以该链路的传播速率传播。 该传播速率取决于该链路的物理媒体(即光纤、 双绞铜线等) ,等于或略小于光速 。
传输时延是路由器推出分组所需要的时间, 它是分组长度和链路传输速率的函数, 而与两台路由器之间的距离无关。 另一方面, 传播时延是一个比特从一台路由器传播到另一台路由器所需要的时间, 它是两台路由器之间距离的函数, 而与分组长度或链路传输速率无关 。
1.4.2 排队时延和丢包
排队时延:
令a表示分组到达队列的平均速率(a的单位是分组/秒, 即pkt/s),假定所有分组都是由L比特组成的,则比特到达队列的平均速率是La bps,比率La/R被称为流量强度(traffic intensity)。 I=La/R
如果La/R>1,则比特到达队列的平均速率超过从该队列传输岀去的速率。 在这种不幸的情况下, 该队列趋向于无限增加, 并且排队时延将趋向无穷大! 因此, 设计系统时流量强度不能大于1。
丢包:
一条链路前的队列只有有限的容量。到达的分组发现一个满的队列, 由于没有地方存储这个分组, 路由器将丢弃(drop)该分组, 即该分组将会丢失(lost)。
1.4.3 端到端时延**
1.4.4 计算机网络中的吞吐量**
吞吐量不仅取决于沿着路径的传输速率, 而且取决于干扰流量
瓶颈链路:端到端路径上,限制端到端吞吐的链路
1.5 协议层次及其服务模型
1.5.1 分层的体系结构
分层处理和实现复杂系统的好处?
对复杂的系统:
- 概念化:结构清晰,便于标示网络组件,以及描述其相互关系
- 结构化:模块更易于维护和系统升级;改变某一层服务的实现不影响系统中的其他层次
分层思想被认为有害的地方?
- 层间信息交换、分层实现效率低(老师讲的)
- 层与层之间会有冗余(书里说的)
协议分层:
各层的所有协议被称为协议栈(protocol stack)。因特网的协议栈由5个层次组成: 物理层、 链路层、 网络层、 运输层和应用层

(1)应用层
- 为人类用户或其他应用进程提供网络应用的服务
- 因特网的应用层包括许多协议, 例如HTTP (它提供了 Web文档的请求和传送) 、 SMTP (它提供了电子邮件报文的传输)、FTP (它提供两个端系统之间的文件传送)和DNS(域名解析)等。
- 应用层是网络应用程序及它们的应用层协议存留的地方。 应用层协议分布在多个端系统上, 而一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息分组。
- 把位于应用层的信息分组称为报文(message)。
(2)运输层
- 一方面,在网络层提供的端到端通信基础上,细分为进程到进程。另一方面,把网络层提供的不可靠的通信处理为可靠的通信(不重复、不丢失、不失序)。
- TCP,UDP
因特网的运输层在应用程序端点之间传送应用层报文。 在因特网中, 有两种运输协议, 即TCP和UDP,利用其中的任一个都能运输应用层报文。
TCP向它的应用程序提供了面向连接的服务。 这种服务包括了应用层报文向目的地的确保传递和流量控制(即发送方/接收方速率匹配) 。 TCP也将长报文划分为短报文, 并提供拥塞控制机制, 因此当网络拥塞时, 源抑制其传输速率。
UDP协议向它的应用程序提供无连接服务。 这是一种不提供不必要服务的服务, 没有可靠性, 没有流量控制, 也没有拥塞控制。
把运输层的分组称为报文段 (segment) 。
(3)网络层 IP层
网络层在链路层(点到点传输)的基础上,实现源主机到目标主机的端到端的分组的传输,为数据报从源到目的选择路由。
- 主机主机之间的通信,端到端通信,不可靠。
- IP、路由协议
因特网的网络层负责将称为数据报(datagram)的网络层分组从一台主机移动到另一台主机。 在一台源主机中的因特网运输层协议(TCP或UDP)向网络层递交运输层报文段和目的地址 。
因特网的网络层包括著名的网际协议IP,该协议定义了在数据报中的各个字段以及端系统和路由器如何作用于这些字段。 IP仅有一个, 所有具有网络层的因特网组件必须运行IP。
(4)链路层
- 链路层提供的是相邻两个网络节点之间的数据传输。
- 点对对协议PPP,802.11(wifi),Ethernet
在每个节点, 网络层将数据报下传给链路层, 链路层沿着路径将数据报传递给下一个节点。 在该下一个节点, 链路层将数据报上传给网络层。
把链路层分组称为帧(frame)。
(5)物理层
- 在线路上传送bit
链路层的任务是将整个帧从一个网络元素移动到邻近的网络元素, 而物理层的任务是将该帧中的一个个比特从一个节点移动到下一个节点。
OSI模型
开放系统互连模型
OSI参考模型的7层是: 应用层、表示层、 会话层、 运输层、 网络层、 数据链路层和物理层。
表示层:使通信的应用程序能够解释交换数据的含义。 这些服务包括数据压缩和数据加密(它们是自解释的) 以及数据描述(这使得应用程序不必担心在各台计算机中表示/存储的内部格式不同的问题) 。
会话层:建立及管理会话。
数据交换的定界和同步功能, 包括了建立检查点和恢复方案的方法。(比如cookie)
五层协议没有表示层和会话层,而是将这些功能留给应用程序开发者处理。
服务和服务访问点
服务(Service):低层实体向上层实体提供它们之间的通信的能力
原语(primitive):上层使用下层服务的形式,高层使用底层提供的服务,以及低层向高层提供服务都是通过服务访问原语来进行交互的。——形式
服务访问点(SAP Services Access Point):使用下层提供的服务通过层间的接口。——地点
面向连接的服务和无连接的服务——方式
服务和协议
- 服务和协议的区别
服务:低层实体向上层实体提供它们之间的通信的能力,是通过原语来操作的,垂直
协议:对等实体之间在互相通信的过程中,需要遵守的规则的集和,水平
- 服务与协议的联系:
本层协议的实现要靠下层提供的服务来实现
本层实体通过协议为上层提供更高级的服务
1.5.2 封装
在发送主机端:
(1)一个应用层报文(application-layer message)被传送给运输层。
(2)在最简单的情况下,运输层收取到报文并附上附加信息(所谓运输层首部信息),该首部将被接收端的运输层使用。 应用层报文和运输层首部信息一道构成了运输层报文段(transport-layer segment)。运输层报文段因此封装了应用层报文。 附加的信息也许包括了下列信息:允许接收端运输层向上向适当的应用程序交付报文的信息; 差错检测位信息, 该信息让接收方能够判断报文中的比特是否在途中已被改变。
(3)运输层向网络层传递该报文段, 网络层增加了如源和目的端系统地址等网络层首部信息,生成了网络层数据报(network-layer datagram)。
(4)该数据报接下来被传递给链路层, 链路层增加它自己的链路层首部信息并生成链路层帧(link layer frame)。
在每一层, 一个分组具有两种类型的字段: 首部字段和有效载荷字段(payload field)。有效载荷通常是来自上一层的分组。

视频里的一个内容:
SDU(Service Data Unit)
PDU(Protocol Data Unit)

各个层次的协议数据单元
(1)应用层:报文 message
(2)传输层:报文段 segment:TCP段,UDP数据报
(3)网络层:分组 packet(如果像ip网络那样是无连接方式:数据报datagram)
(4)数据链路层:帧 frame
(5)物理层:位 bit
