第一章 引言

Computer network(计算机网络):

  • 一组互联的计算机,通过同一种技术自主交换信息

  • 可看见实际的计算机情况,即可见,不透明

  • 计算机网络不是Internet因特网(因特网是一种特殊的覆盖全球的计算机网络)

  • 计算机网络不是WWW万维网(万维网是建立在因特网之上的分布式系统)

  • 计算机网络的组成:

    • 计算机/主机/端系统(数据通信的源端和数据端)

    • 通信链路(分为有线和无线)

    • 交换机/路由器,作为Node节点

Distributed system(分布式系统):

  • 一组独立的计算机,对外是一个统一的系统,是不可见,透明

  • 在计算机网络的基础上加入中间件(一种应用于分布式系统的基础软件),来实现这个模型

  • 典型的分布式系统:万维网

网络硬件

计算机网络的分类方式:

  • 以传输技术分类:

    • 广播网络: 向所有的目的地发送数据包,如果接收机器正确,那么接收机器就会处理数据包,否则不接收直接忽略。

      • 多播/组播:向一组机器发送数据包

      • 典型:局域网

    • 点到点网络: 通过访问多个中间设备,将数据包从源端传送到目的端,有时候也称为unicasting单播

      • 一个发送方,一个接收方

      • 路由选择很重要

      广播网络对比点到点网络

  • 以传输技术分类:

    • Personal area network(个域网): 允许设备围绕着一个人进行通信,例如蓝牙网络

    • Local area network(局域网): 将主机和边缘路由器链接起来,共享同一个通信链路,分为有线局域网和无线局域网

      • 在大多数情况下,每台计算机与安装在天花板上的一个设备通信,这个设备,称为接入点、无线路由器或者基站,它主要负责中继无线计算机之间的数据包,还负责中继无线计算机和Internet之间的数据包

        局域网

      • 拓扑结构:总线型或环型

      • 信道分配:
        • 静态:将时间划分成时间槽,并使用轮循算法,每台机器只能在分配给它的时间槽到来时广播。当一台机器在分配给它的时间槽到来时没有任何数据需要发送,这种静态分配算法就浪费了信道容量

        • 动态:按需分配,可以是集中式的,也可以是分散式的。在集中式的信道分配方法中,有一个中心实体,由这个中心实体决定接下来谁使用信道;在分散式信道分配方法中,没有一个中央实体,每台机器必须自行决定是否可以传输

    • Metropolitan area network(城域网): 范围可覆盖一个城市,例如有线电视网

      • 拓扑结构:树型
    • Wide area network(广域网): 覆盖范围较广泛的通信网,通常是一个国家、地区或者一个大陆

      • 专门运行用户程序的计算机称为主机;连接这些主机的网络其余部分称为通信子网,子网的工作是把信息从一个主机携带到另一个主机

        • 通信子网:
          • 传输线路:负责在机器之间移动比特,它们可以是铜线、光纤,甚至无线链路

          • 交换元素:简称为交换机,负责连接两条或两条以上的传输线路

          通信子网

      • 拓扑结构:网孔型

    • The Internet(互联网)

      • Internet和internet的区别:
        • internet互联网:网络与网络之间所串连成的庞大网络

        • Internet因特网:一种特殊的覆盖全球的互联网

          • 网关:在硬件和软件方面提供必要的翻译,将两个或多个不同的网络连接起来并提供必要转换的机器

子网,网络,互联网:

  • 子网:路由器通信链路的集合

  • 网络:子网和它的主机的结合

  • 互联网:不同的网络互联

网络软件

协议层次结构:

  • 网络体系结构: 层和协议的集合,实现的细节和接口的规范都不是体系结构的一部分

    • 为了降低网络设计的复杂性,绝大多数网络都组织成一个层次栈或分级栈

    • 每一层都是一个虚拟机,的目的是向更高的层提供特定服务,每层具体实现的细节对外不可见

  • 层,对等体,协议,接口

    协议层次结构

    • 协议: 通信双方就如何进行通信的一种约定

    • 对等体: 不同机器上构成对应层次相同的实体,可能是软件过程、硬件设备

    • 物理介质: 第1层的下面是物理介质,通过它进行实际的通信

    • 界面/接口: 定义了下层向上层提供哪些原语操作和服务

      层次举例

  • 5层网络

    5层网络

    • 第5层: 报文M由应用层产生,并交给第4层进行传输

    • 第4层: 在报文前面加上一个头部以识别消息,并将结果传递给第3层

      • 头部:控制信息,例如地址;在某些层中,Header还可以包含消息序号,消息大小、时间和其他控制字段
    • 第3层: 在第3层协议中传输的消息大小是有限制的,因此必须把入境消息分割成较小的单元,即数据包,并且在每个数据包前面加上第3层的头,决定使用哪条出站线路并将数据包传递到第2层

    • 第2层: 不仅要加上一个头部还要加上一个尾部用于差错检查,再将结果传输单元送给第1层以便进行物理传输

    • 第1层: 把信息加载到物理介质上进行传输

      实际例子

层次设计问题:

  • 可靠性: 差错检测和差错修正;路由选择

  • 网络演进: 协议分层;addressing(寻址)和naming(命名):识别发送者和接收者;internetworking(网络互联):对消息进行拆分、传输,然后重组;可拓展性:网络规模变大时仍能工作良好

  • 资源分配: 统计复用:根据主机的短期需求变化动态共享网络带宽;流量控制,拥塞控制

  • 服务质量QoS:
    QoS包含的参数是带宽、时延、抖动、丢包率

    • 带宽: 在单位时间(一般指的是1秒钟)内能传输的数据量
    • 时延: 一个报文或分组从一个网络的一端传送到另一个端所需要的时间。它包括了发送时延,传播时延,处理时延,排队时延。(时延=发送时延+传播时延+处理时延+排队时延)
    • 抖动: 如果网络发生拥塞,导致通过同一连接传输的分组延迟各不相同。抖动用来描述延迟变化的程度,也就是最大延迟与最小延迟的时间差
    • 丢包率: 丢包率是指在网络传输过程中丢失报文的数量占传输报文总数的百分比
  • 安全性

面向连接和无连接服务:

面向连接服务 无连接服务
参考 电话系统 邮政系统
特点 建立连接时分配资源,预先分配资源 分配仅当数据到达,动态分配资源,接收机不需要在线
Qos 可靠的传输 数据会丢失,乱序或重复
目的地址 只有建立连接时需要完整地址,后续不用 需要完整的目的地址
应用 大量数据在短时间内转送到目的地 少量数据
包含服务类型 Reliable message stream(可靠的报文流)
Reliable byte stream(可靠的字节流)
Unreliable connection(不可靠的连接)
Unreliable datagram(不可靠的数据报)
Acknowledged datagram(有确认的数据报)
Request-reply(请求-响应)

可靠的报文流和可靠的字节流的区别:
可靠的字节流没有边界,而可靠的报文流则有边界
例如:一个发送进程向一个连接中写入了1024字节数据,然后又写入了1024字节数据。对于可靠的报文流服务,接收进程将收到两个1024字节的数据;而对于可靠的字节流服务,接收进程将可能收到一个完整的 2048 字节的数据,即不能保证上层信息的边界

  • 接口和服务:

    • 服务提供者和服务用户: 第n层的实体向第n+1层提供了服务,第n层称为服务提供者,第n+1层称为服务用户

    • 服务访问点SAP: 第n层的SAP是第n+1层可以访问所提供服务的地方

    • 协议数据单元PDU: 对等体之间通信所传输的信息,平常所称的包就是PDU,PDU=SDU+PCI(协议控制信息)

服务原语: 同一个系统内相邻两层之间交互的信息

  • 例子:

    • CONNECT.request: 请求建立一个连接

    • CONNECT.indication: 通知被叫方有连接到达

    • CONNECT.response: 被叫方接收或拒绝呼叫

    • CONNECT.confirm: 告诉呼叫者是否被接受

    • DATA.request: 请求发送数据

    • DATA.indication: 通知有数据到达

    • DISCONNECT.request: 请求释放一个连接

    • ISCONNECT.indication: 通知有释放连接的请求到达

      服务原语示例

  • 简单的面向连接的服务:

    • 系统调用: 操作系统提供给用户的API
原语 实例
LISTEN 阻塞操作,等待入境连接请求
CONNECT 与等待中的对等实体建立连接
ACCEPT 接受来自对等实体的入境连接请求
RECEIVE 阻塞操作,等待入境报文
SEND 给对等实体发送一个报文
DISCONNECT 终止一个连接

服务和协议的关系:

  • 服务(垂直): 定义了某一层向它上一层提供的一组原语(操作),但完全没有说明这些操作是如何实现的;与两层之间的接口有关,下层向上层提供服务

  • 协议(水平): 规定了同一层上对等实体之间所交换的数据包或者报文的格式和含义;服务通过协议实现它的定义

  • 服务和协议是完全分开的,不更改服务的前提下,协议可以随意修改

参考模型

OSI参考模型:

OSI模型

  • 物理层: 在信道上传送原始的比特流

  • 数据链路层: 将一个原始的传输设施转变成一条没有漏检传输错误的线路

    • 发送方将输入的数据拆分成数据帧,然后顺序发送这些数据帧;如果服务是可靠的,则接收方必须给发送方发回一个确认帧

    • 流量控制:避免一个快速发送方用数据“淹没”一个慢速接收方

  • 网络层: 控制子网的运行

    • 路由选择:根据路由表决定转发到哪个链路

    • 拥塞控制
    • 异构网络互联:技术不同的网络互联

    • 在广播网络当中,路由问题比较简单

  • 传输层: 接收来自上一层的数据,在必要的时候把这些数据分割成较小的单元,然后把这些数据单元传递给网络层,并且确保这些数据单元正确地到达另一端

    • 传输层还决定了向会话层提供哪种类型的服务

      • 一个完全无错的点到点信道(最为常见)

      • 传输独立的报文但不保证传送的顺序

      • 将报文广播给多个目标节点

  • 会话层: 允许不同机器上的用户建立会话

    • 对话控制:记录该由谁来传递数据

    • 令牌管理:禁止双方同时执行同一个关键操作

    • 同步功能:在一个长传输过程中设置一些断点,以便在系统崩溃之后还能恢复到崩溃前的状态继续运行

  • 表示层: 规定传输信息的语法和语义

    • 交换的数据结构必须以一种抽象的方式来定义
  • 应用层: 包含了用户通常需要的各种各样的协议

    • 超文本传输协议HTTP

OSI模型的核心是如下3个概念:

  • 服务: 某层实体对于上一层实体的支持

  • 接口: 某层实体对于上一层实体提供的原语操作

  • 协议: 两个对等体之间进行通信所必须遵守的原则

TCP/IP参考模型:

两个参考模型对比

  • 链路层: 描述了链路必须完成什么功能才能满足无连接的互联网络层的需求;不是真正意义上的一个层,而是主机与传输线路之间的一个接口

  • 互联网层: 将整个网络体系结构贯穿在一起,是基于无连接互连层的分组交换网络

    • 因特网协议IP:正式的数据包格式和协议

    • 互联网层的工作是把IP包送到它们应该去的地方

      • 分组路由,转发IP包

      • 拥塞控制

  • 传输层: 允许源主机和目标主机上的对等实体进行对话,是在TCP/IP模型中位于互联网层之上的那一层

    • 定义了两个端到端的传输协议:

      • 传输控制协议TCP:可靠的、面向连接的协议,允许从一台机器发出的字节流正确无误地交付到互联网上的另一台机器

        • 把输入的字节流分割成离散的报文,并把每个报文传递给互联网层

        • 接收TCP进程把收到的报文重新装配到输出流中

        • 流量控制

      • 用户数据报协议UDP:不可靠的、无连接协议

        • 适用于那些不想要TCP的有序性或流量控制功能,而宁可自己提供这些功能的应用程序

        • 应用于及时交付比精确交付更加重要的应用,比如传输语音或者视频

  • 应用层: 包含了所有的高层协议,以及所需的任何会话和表示功能

TCP/IP模型

TCP/IP模型以及一些协议

……未完待续♬