计算机网络(自顶向下方法 第7版)(中科大视频笔记)(2024.7.11每日更新若干小节,15天左右学完)
计算机网络
一、计算机网络概述
1.1 什么是Internet
-
从具体构成角度
- 节点:
- 主机(端系统)及其上运行的应用程序(如网络应用程序)
- 主节点(服务器)、数据交换节点(路由器、交换机)
- 路由器、交换机等网络交换设备
- 边:通信链路
- 接入网链路:主机连接到互联网的链路
- 主干链路:路由器间的链路
- 比如:光纤、卫星
- 传输速率:带宽(bps)(bit per second)
- 协议
- 对等层的实体在通信的过程当中应当遵守的规则结构
- 协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及在报文传输和/或接收其他事件方面所采取的动作
- 内容:格式、次序和动作
- 控制发送、接受消息:如TCP,IP,HTTP,FTP,PPP等
- Internet:网络的网络
- 松散的层次结构,互联的ISP
- 实际上是网际网络,就是网络与网络的关系,就是一堆的网络通过一些设备关联在一起实现的一个网络集群。
- 公共网络Internet vs. 专用Intranet
- Internet标准
- RFC:评测书
- IETF:互联网工程任务组
- 节点:
-
从服务角度看
-
如果从服务角度看,互联网由分布式的应用进程以及为这些应用进程提供通信服务的基础设施(从应用往下看都是基础设施,包括个人PC机内的网卡之类的)
-
使用通信设施进行通信的分布式应用:Web、mail、游戏等等
-
通信基础设施为apps提供编程接口(通信服务):无连接不可靠服务UDP、面向连接的可靠服务TCP
-
1.2 网络边缘
-
网络结构:
- 网络边缘:提供服务
- 主机
- 应用程序(客户端和服务器)
- 网络核心:大规模数据交换
- 互联着的路由器
- 网络的网络
- 网络接入
- 有线或无线的通信链路
- 网络边缘:提供服务
-
网络边缘
- 端系统(主机):
- 运行应用程序
- 如Web,mail
- 在网络的边缘
- 端系统(主机):
-
应用和进程的通讯模式
- C/S模式:客户端服务器模式
- 客户端向服务器请求、接收服务
- 如:Web浏览器/服务器;email客户端/服务器
- 非常典型的主从模式:主是服务器,从是客户端,因为所有的资源都在服务器上
- 存在的问题:可扩展性和可靠性问题
- B/S模式:浏览器服务器模式
- 适用于Web应用,可以实现跨平台
- 比如咱们开发的各种网页,网站都是这种的
- P2P模式:对等(peer-peer)模式
- 很少,没有专门的服务器
- 如一些文件共享系统,比如迅雷
- 可扩展,且速度很快
- C/S模式:客户端服务器模式
-
采用网络设施的面向连接服务(TCP)
- 目的:在端系统之间传输数据
- 握手:在数据传输之前做好准备
- 人类协议中:比如打招呼,建立两个人的连接
- 两个通信主机之间为连接建立状态
- TCP—传输控制协议(Transmission Control Protocol)
- Internet上面向连接的服务(注意面向连接和有连接不是一个东西,面向连接针对的是主机端维护的通讯协议,而有连接是指网络核心维护主机之间的通讯状态)
- 握手:在数据传输之前做好准备
- TCP服务
- 可靠的、按顺序地传送数据
- 可靠的定义:不重复,不失序,不出错
- 确认和重传
- 流量控制
- 发送方不会淹没接收方
- 拥塞控制
- 当网络拥塞时,发送方降低发送速率
- 可靠的、按顺序地传送数据
- 目的:在端系统之间传输数据
-
采用基础设施的无连接服务(UDP)
-
目标:在端系统之间传输数据
-
无连接服务,发送数据端只负责把数据扔出去,不负责数据传输是否正确,接收方是否拿到数据
-
UDP—用户数据报协议(User Datagram Protocol)
- 无连接
- 不可靠数据传输
- 无流量控制
- 无拥塞控制
-
1.3 网络核心
-
网络核心
- 网络核心:路由器的网状网络
- 基本问题:数据怎么通过网络进行传输?
- 电路交换:为每个呼叫预留一条专有电路:如电话网
- 分组交换:
- 将要传送的数据分成一个个单位:分组
- 将分组从一个路由器传到相邻路由器(hop),一段段最终从源端传到目标端
- 每段:采用链路的最大传输能力(带宽 )
-
电路交换:端到端的资源被分配给从源端到目标端的呼叫"call"
-
注意,采取此方法是独享链路资源,不会共享,且每个呼叫一旦建立起来就能够保证性能
- 好处:性能保障
- 坏处:浪费资源
-
且这种交换方式,如果建立却不传输数据,被分配的资源会被浪费
-
通过信令系统建立连接
-
通常被传统电话网络采用
-
网络资源(带宽)被分成片(piece)
- 为呼叫分配片
- 如果某个呼叫 没有数据,则其资源片处于空闲状态,但不共享
分解方式:
- 频分FDM、时分TDM、波分WDM、码分CDMA
-
电路交换不适合计算机之间的通信:建立时间长;浪费资源多;可靠性一般
-
-
分组交换(packet swtich):
- 以分组为单位存储—转发方式
- 网络带宽资源不再分为一个片,传输时使用全部带宽
- 主机之间传输的数据被分为一个个分组
- 资源共享,按需使用:
- 存储—转发:分组每次一定一跳(hop)
- 在转发之前,节点必须收到整个分组
- 延迟比线路交换要大
- 排队时间
- 按照有无网络层的连接,分为:
- 1.数据报网络
- 分组的目标地址决定下一跳
- 在不同的阶段,路由可以改变
- 类似于投石问路
- Internet
- 2.虚电路网络
- 在呼叫建立时绝额定路径,在整个呼叫中路径保持不变
- 路由器维持每个呼叫的状态信息
- 1.数据报网络
- 在一个速率为R bps的链路,一个长度为L bits的分组的一跳存储转发延时:L/R s
- 例如:L = 7.5 Mbits,R = 1.5Mbits,3跳需要多久?
- 答:15s
- 存储—转发:分组每次一定一跳(hop)
- 排队延迟与丢失(分组交换的代价)
- 如果 到达速率 > 链路的输出速率
- 分组将会排队,等待传输
- 如果路由器的缓存用完了,分组将会被抛弃
- 以分组为单位存储—转发方式
-
网络核心的关键功能
- 路由:决定分组采用到的源到目标的路径
- 转发:将分组从路由器的输入链路转移到输出链路
- 路由和转发互相配合实现一次完整的数据交换
-
分组交换:统计多路复用,没有固定的模式,时分复用链路资源
-
分组交换允许更多用户使用网络(在网络通信有较多突发性的情况下)
-
分组交换 vs 电路交换
- 分组交换是”突发数据的胜利者“
- 适合于对突发式数据进行传输
- 资源共享
- 简单,不必建立呼叫
- 适合于对突发式数据进行传输
- 过度使用会造成网络拥塞:分组延时和丢失
- 对可靠数据传输需要协议来约束:拥塞控制
- 分组交换是”突发数据的胜利者“
-
数据报(datagram)的工作原理
- 在通信之前,无需建立起一个连接,有数据就传输
- 每一个分组都独立路由(路径不一样,可能会失序)
- 路由器根据分组的目标地址进行路由
- 路由器不维护主机之间的通讯状态,只负责接受分组并进行转发
-
虚电路(virtual circuit)的工作原理
虚电路表分左右两边,左右两边各携带一个字母和数字,字母代表源电路表或目的电路表,数字代表走几号端口?或者几号线路。也就是说中间的路由是要维持主机之间的通讯状态的。
-
网络分类:
1.4 接入网和物理媒体
1.5 Internet结构和ISP
-
ISP(Internet Service Providers)连接互联网
-
端系统通过接入ISPs连接互联网
-
将每两个ISPs直接相连 不可行,复杂度为O(n2),可扩展性太差。
-
将每个接入ISP都连接到全局ISP中
-
全局ISP和全局ISP之间利用网络交换节点实现互相通讯
-
互联网内容提供商(ICP,Internet Content Providers),比如百度、谷歌等等。为了解决ISP收费高服务质量差的问题,ICP在全世界各地设置网络数据中心(通常离地区主要ISP附近)并铺设或租用光缆搭建自身的专网,在末端再利用ISP提供服务。
-
Internet结构
- 松散的层次模型
- 中心:第一层ISP,国家/国际覆盖,速率极高
- 第二层ISP:更小些,通常是区域ISP
- 第三层:地方或其他小ISP
- 补充:ICP补充的网络
-
ISP之间的互联
- POP:高层ISP面向客户网络的接入点,涉及费用结算
- 对等接入:2个ISP对等互联,不涉及费用结算
- IXP:多个对等ISP互联互通之处,通常不涉及费用
- ICP自己部署的专用网络,同时和各级ISP连接
1.6 分组延时、丢失和吞吐量
-
丢失和延时原因?
-
在路由器缓冲区的分组队列
- 分组到达链路的速率超过了链路输出的能力(说明要开始积攒不能及时发送的)
- 分组等待排到队头被传输
-
四种分组延时产生原因
-
节点处理延时:检查bit级差错,检查分组首部和决定将分组导向何处。
-
排队延时:在输出链路上等待传输的时间,依赖于路由器的拥塞程度
-
传输延时
- R=链路带宽(bps)
- L=分组长度(bits)
- 将分组发送到链路上的时间=L/R
- 存储转发延时
-
传播延时
- d=物理链路的长度
- s=在媒体上的传播速度~200000000m/s
- 传播延时=d/s
-
-
节点延时
-
排队延时
-
-
Internet的延时和路由
- ICMP:互联网控制报文协议
- windows测试方法:Tracert host
- 最多30跳说明每一条报文的TTL最大不超过30
- 遍历TTL1~30递增数据报,每次发送3条报文,监控ICMP返回的,直到请求超时(目标IP不可达)
-
分组丢失
- UDP不传,TCP重传;重传由谁执行又取决于链路可靠性
-
吞吐量
- 瓶颈链路:端到端路径上,限制端到端吞吐的链路
1.7 协议层次及服务模型
1.7.1 协议层次
网络是一个非常复杂的系统。问题是该如何组织和实现这个复杂的系统功能?
层次化方式实现复杂网络功能:
- 将网络复杂的功能分成功能明确的层次,每一层实现了其中一个或一组功能,功能中有其上层可以使用的功能:服务。
- 本层协议实体相互交互执行本层的协议动作,目的是实现本层功能,通过接口为上层提供更好的服务。
- 在实现本层协议的时候,直接利用了下层所提供的服务。
- 本层的服务:借助下层服务实现的本层协议实体之间交互带来的新功能(上层可以利用的)+更下层所提供的服务。
注:
- 协议是对等层次的水平关系,服务是不同层次的垂直关系
- 层次存在的意义不仅仅是在垂直层面发挥承上启下的作用,还包括水平层面与其他实体的同层次通过交互所实现的新功能。如果一个层次仅仅存在垂直层面的意义,则其没有单独存在的必要。
- 最底层就物理传输每一个bit(物理层)
服务(Service):低层实体向上层实体提供它们之间的通信能力
- 服务用户
- 服务提供者
原语:上层使用下层服务的形式,高层使用低层提供的服务,以及低层向高层提供服务都是通过服务访问原语来进行交互的形式
服务访问点SAP(Service Access Point):上层使用下层提供的服务通过层间的接口—地点,例如电子邮箱等
- 地址(address):下层的一个实体支撑着上层的多个实体,SAP有标志不同上层实体的作用
- 可以有不同的实现,队列
- 例如:传输层的SAP:端口(Port)
1.7.2 服务模型
服务的类型:
- 面向连接的服务(如TCP)
- 连接:两个通信实体为进行通信而建立的一种结合(如握手,分配资源,为通信做好准备等)
- 通信过程:建立连接、通信、拆除连接
- 例子:网络层的连接变成虚电路
- 适用范围:对于大的数据块要传输,不适合小零星报文
- 特点:保守
- 服务类型:
- 可靠的信息流:传送页面(可靠的获得接收方的确认)
- 可靠的字节流:远程登录
- 不可靠的连接:数字化声音
- 面向无连接的服务(如UDP)
- 无连接服务:两个对等层实体在建立通信前不需要建立一个连接,不预留资源,不需要通信双方都是活跃的
- 特点:不可靠,可能重复,可能失序
- 例子:IP分组,数据包;
- 使用范围:适合传输零星数据
- 服务类型:
- 不可靠的数据报,电子方式的函件
- 有确认的数据报,挂号信
- 请求回答,信息查询
服务与协议的区别:
- 服务:低层实体向上层实体提供它们之间的通信能力, 是通过原语来操作的,垂直;
- 协议:对等层实体之间的相互通信过程中需要遵循的规则的集合,水平
服务与协议的联系:
- 本层协议的实现要靠下层提供的服务来实现。
- 本层实体通过协议为上层提供更高级的服务。
数据单元(DU):注意交换的是n层的PDU,即某一层的协议数据单元,当然如果还要往下传递,则该PDU作为本层次的SDU,并拼接上n和n-1的接口控制等信息形成第n层的IDU
可能会存在三种对应关系:上一层要传输的信息比较小,可能会将多个信息拼接在一起;上一层要传输的信息比较大,本层再往下传输时可能会将单条信息拆分成为多条;最后一种就一对一咯。
分层处理和实现复杂系统的好处?
对付复杂系统
- 概念:结构清晰,便于标示网络组建,以及描述其相互关系
- 分层参考模型
- 结构化:模块化更易于维护和系统升级
- 改变某一层服务的实现不影响系统中的其他层次
- 但注意是实现,不能改变其上下层次间通讯形式或者说原语结构发生变化
缺点?
- 效率低,一个功能的实现需要多个模块协同配合
- 等等。。。。
1.7.3 Internet协议栈
- 应用层:网络应用
- 为用户或者其他应用进程提供网络应用服务
- FTP,SMTP,HTTP,DNS
- 传输层:主机之间的数据传输
- 在网络层提供的端到端通信基础上,细分为进程到进程(区分进程),将不可靠的通信变成可靠的通信
- TCP/UDP
- 网络层:为数据报从源到目的选择路由(以分组为单位)
- 主机主机之间的通信,端到端通信,不可靠
- IP(转发),路由协议(rip等)
- 链路层:相邻网络节点间的数据传输
- 2个相邻2点的通信,点到点通信,可靠或不可靠(以帧为单位)
- 点对点协议PPP,802.11(wifi),Ethernet
- 物理层:在线路上传送bit,相邻两点电磁波承载
ISO/OSI参考模型还有2层:
- 表示层:允许应用解释传输的数据,比如加密、压缩等
- 会话层:数据交换的同步,检查点,恢复
封装和解封装
各层次的协议数据单元
- 应用层:报文(message)
- 传输层:报文段(message segment):TCP段、UDP段数据报
- 网络层:分组packet(如果是无连接方式,数据报datagram)
- 数据链路层:帧(frame)
- 物理层:位(bit)
1.8 历史
Cerf and Kahn(互联网之父)网络互联原则:
- 极简、自治
- 尽力而为(best effort)服务模型
- 无状态的路由器
- 分布控制
1.9 总结
- Internet
- 网络边缘、网络核心、接入网
- 分组交换 vs 电路交换
- Internet/TSP结构
- 性能:丢失、延时、吞吐量
- 层次模型和服务模型