计算机网络原理 杂记(一)

此为摘抄杂记,仅供个人查阅。

计算机网络基本概念

计算机网络是互连的、自治的计算机的集合。

  • 自治:指互连的计算机系统彼此独立,不存在主从或者控制与被控制的关系。
  • 互连:指利用通信链路连接相互独立的计算机系统。

网络协议是网络通信实体之间在数据交换过程中需要遵循的规则或约定。

协议三要素:语义、语法、时序。

  1. 语法:语法定义实体之间交换信息的格式与结构。
  2. 语义:语义就是定义实体之间交换的信息中需要发送控制信息。
  3. 时序:时序也称为同步,定义实体之间交换信息的顺序以及如何匹配或适应彼此的速度。

计算机网络的功能:

  • 硬件资源共享:云计算, 云存储
  • 软件资源共享:SaaS
  • 信息资源共享:信息检索
计算机网络的分类:
  1. 按覆盖范围分类:
  • 个域网(PAN):个域网通常覆盖范围在 1~10m。
  • 局域网(LAN):局域网通常覆盖范围在 10m~1km。
  • 城域网(MAN):覆盖范围通常在 5~50km。
  • 广域网(WAN):广域网覆盖范围在几十到几千千米,通常跨越更大的地理空间,
    可以实现异地城域网或局域网的互连。
  1. 按拓扑结构分类:
  • 星形拓扑结构:局域网、个域网
  • 总线型拓扑结构:早期局域网
  • 环形拓扑结构:早期局域网、城域网
  • 网状拓扑结构:广域网、核心网络
  • 树形拓扑结构:目前的局域网
  • 混合拓扑结构:绝大数实际网络
  1. 按交换方式分类:
  • 电路交换网络
  • 报文交换网络
  • 分组交换网络
  1. 按网络用户属性分类:
  • 公用网:公用网是指由国家或企业出资建设,面向公众提供收费或免费服务的网络。例如电信网络。
  • 私有网:私有网是指由某个组织(如政府部门或企业等)出资建设,专门面向该组织内部业务提供网络传输服务,不向公众开放的网络。例如银行、军事,铁路专用网。
计算机网络结构

大规模现代计算机网络的结构包括网络边缘、接入网络与网络核心三部分。

  1. 网络边缘:连接到网络上的计算机、服务器、智能手机、智能传感器、智能家电等称为主机或端系统。
  2. 接入网络:
  • 电话拨号接入:利用电话网络接入。
  • 非对称数字用户线路 ADSL。特点:1.利用电话网络接入。2.基于频分多路复用技术。3.非对称。4.独享式接入。
  • 混合光纤同轴电缆 HFC 接入网络。1.利用有线电视网络接入的技术。2.基于频分多路复用技术。3.非对称。4.共享式接入。
  • 局域网:典型的局域网技术是以太网、Wi-Fi 。
  • 移动接入网络:移动接入网络主要利用移动通信网络,如 3G/4G/5G 网络,实现智能手机、移动终端等设备的网络接入。
  1. 网络核心:由通信链路互连的分组交换设备构成的网络。作用:实现网络边缘中主机之间的中继与转发。
数据交换技术

数据交换:实现在大规模网络核心上进行数据传输的技术基础。常见的数据交换技术包括电路交换、报文交换和分组交换。

  1. 电路交换:在通信时需要先建立电路连接,在通信过程中独占一个信道,通信结束后拆除电路连接。电路交换是最早出现的一种交换方式,电话网络则是最早、最大的电路交换网络。利用电路交换进行通信包括建立电路、传输数据和拆除电路 3 个阶段。优点:实时性高。缺点:不适用于突发性数据传输;信道利用率低,且传输速率单一。电路交换主要适用于语 音和视频这类实时性强的业务。

  2. 报文交换也称为消息交换。存储-转发式交换方式。适用于电报通信。

  3. 分组交换:是目前计算机网络广泛采用的技术,也称包交换。分组交换需要将待传输数据(即报文)分割成较小的数据块,每个数据块附加上地址、序号等控制信息构成数据分组,每个分组独立传输到目的地,目的地将收到的分组重新组装, 还原为报文。采取存储-转发交换方式。分组交换的优点:1.交换设备存储容量要求低。2.交换速度快。3.可靠传输效率高。4.更加公平。

ARPAnet 是第一个分组交换计算机互连的网络,也是当今因特网的祖先。

计算机网络性能

速率:

指网络单位时间内传送的数据量,用以描述网络传输数据的快慢,也称为 数据传输速率或数据速率。计算机网络传输的数据是以位为信息单位的二进制数据,速率的基本单位是 bit/s(位每秒),因此有时也称速率为比特率(bit rate)。单位的换算:1Tbit/s=10³Gbit/s=10⁶Mbit/s=10⁹Kbit/s=10¹²bit/s

带宽:

  • 在通信和信号处理领域,指的是信号的频带宽度(最高和最低频率之差),单位:Hz(赫兹)。
  • 在计算机网络中,指的是一条链路或信道的最高数据速率,单位:bit/s(位每秒)。

时延:

也称为延迟。指数据从网络中的一个结点(主机或交换设备等)到达另一结点所需要的时间。在计算机网络中,通常将连接两个结点的直接链路称为一个“跳步”,简称“跳”。分组的每跳传输过程主要产生 4 类时间延迟:结点处理时延、排队时延、传输时延和 传播时延。

image.png

时延带宽积:

一段物理链路的传播时延与链路带宽的乘积,称为时延带宽积,记为 G,单位为bit。时延带宽积的物理意义在于:时延带宽积表示一段链路可以容纳的数据位数,也称为以 位为单位的链路长度。公式:G = 传播时延 × 链路带宽。

丢包率:

丢包率常被用于评价和衡量网络性能的指标,在很大程度上可以反映网络的拥塞程度,因为引发网络丢包的主要因素是网络拥塞。

丢包率可以定义为:

image.png

吞吐量:

在单位时间内源主机通过网络向目的主机实际送达的数据量,记为 Thr。单位:bit/s 或 B/s(字节每秒)(1B=8bit)。吞吐量受网络链路带宽、网络连接复杂性、网络协议、网络拥塞程度等因素影响。

image.png
计算机网络体系结构

计算机网络所划分的层次以及各层协议的集合就称为计算机网络体系结构。

OSI(Open System Interconnection)参考模型(7 层)

image.png
  • 由于对等层通信并不是直接进行,因而称为虚拟通信。
  • 数据在垂直的层次中自上而下地逐层传递直至物理层,在物理层的两个端点进行物理通信,这种通信称为实通信。
  • OSI 参考模型的传输层、会话层、表示层和应用层称为端到端层,物理层、 数据链路层和网络层称为结点到结点层。

在层的实体之间传送的比特组称为数据单元。在对等层数据单元称为协议数据单元 (PDU)。PDU在不同层往往有不同的叫法:物理层称为位流或比特流;数据链路层称为帧;网络层中称为分组或包;传输层中称为数据段或报文段;应用层中称为报文。

服务访问点(SAP):相邻层的服务是通过其接口上的服务访问点进行的,N 层 SAP 就是 (N+1)层可以访问 N 层的地方。

服务原语:OSI 参考模型中的每一层的真正功能是为其上一层服务的,第 N 层向(N+1) 层提供服务,或第(N+1)层提供服务,都是一组原语描述的。OSI 参考模型有四类:请求;指示;响应;证实。

TCP 参考模型:

  • TCP/IP 参考模型的核心层是网络互联层(相当于 OSI 模型的网络层)。
  • TCP/IP 参考模型传输层主要包括面向连接、提供可靠数据流传输的传输控制协议 TCP 和无连接不提供可靠数据传输的数据报协议 UDP。

五层参考模型:

  • 应用层:报文
  • 传输层:段
  • 网络层:数据报
  • 链路层:帧
  • 物理层:比特流

网络应用

计算机网络体系结构
  1. 客户/服务器(C/S)结构网络应用。

客户/服务器(C/S)结构是最典型、最基本的网络应用。www 应用,文件传 输,电子邮件等。特点:客户和客户之间不直接通信;客户主动发起,服务器被动接受;服务器为了能被动接受通信,必须先运行,做好通信准备。

  1. P2P 结构网络应用

P2P (Peer to Peer):通信双方没有传统意义上的客户服务器之分,‘地位’对等,通信双方都具备客户与服务器的特征。

  1. 混合结构网络应用

将 C/S 应用和 P2P 应用相结合。

网络应用的基本通信过程:就是运行在不同主机上的应用进程间以 C/S 方式 进行的通信。

  • 典型的网络应用编程接口是套接字(Socket)。
  • 对于一个传输层协议,需要为其接口的每个套接字分配特定的编号,标识该 套接字,该编号称为端口号。
域名系统

域名系统(DNS)将域名映射为 IP 地址。实现映射的过程,称为域名解析。

域名解析的原理:为了实现域名解析,域名系统会建立分布式数据库,存储域名与 IP 地址的映射关系数据。

层次化域名空间。域名的命名方式:层次树状结构命名方式。每个域名由不同级别的域名构成,各个层级域名之间用点分隔。

顶级域名分类:

  1. 国家顶级域名:cn,us,uk。
  2. 通用顶级域名:com,org,gov。
  3. 基础结构域名:只有一个,arpa。

域名服务器:根据其主要保存的域名信息以及在域名解析过程的作用,可以分为根域名服 务器、顶级域名服务器、权威域名服务器、中间域名服务器。

  1. 根域名服务器:根域名服务器是最重要的服务器,全球有 13 个,保存所有顶级域名服务器的域名和 IP 地址。
  2. 顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名。
  3. 权威域名服务器:负责一个区的域名服务器,保存该区中的所有主机域名和 IP 地址。
  4. 中间域名服务器:不是以上三种的域名服务器。
  5. 本地域名服务器:是主机进行域名查询时首先被查询的域名服务器。

域名解析

  • 递归解析:代替查询主机或其他域名服务器,进行进一步的域名查询,并将最终解析结果发送给查询主机或服务器。
  • 迭代解析:不会代替查询主机或其他域名服务器,进行进一步的域名查询,只是将下一步要查询的服务器告知查询主机或服务器。
万维网应用

万维网应用结构

万维网应用主要包括浏览器、web 服务器、HTTP 协议。

  • Web 服务器:Web 应用的服务器软件,存储并管理供用户请求浏览的 Web 页面(Web 文档)。
  • 浏览器:Web 应用客户端软件,即 Web 应用的客户代理。
  • 超文本传输协议(HTTP):客户和服务器间的交互基于应用层的协议 HTTP。

URL:统一资源定位符

URL 地址主要两个部分组成:存放对象的主机域名(或 IP 地址)和对象的路径名称。
URL 的寻址方式确保万维网上的每个 Web 页面或对象都有一个唯一的标识符。

HTTP 概述

HTTP(HyperText Transfer Protocol)是 Web 应用的应用层协议,定义 浏览器如何向 Web 服务器发送请求以及 Web 服务器如何向浏览器进行响应。 目前主要使用的 HTTP/1.0 和 HTTP/1.1,尤其以 HTTP/1.1 为主流。

浏览器在向服务器发送请求之前,首先需要建立 TCP 连接,然后才能发送 HTTP 请求报文,并接收 HTTP 响应报文。

根据 HTTP 使用 TCP 连接的策略不同,可以分为非持久连接的 HTTP 和持久连接的 HTTP。

非持久连接:指 HTTP 客户与 HTTP 服务器建立 TCP 连接后,通过该连接发送 HTTP 请求报文,接收 HTTP 响应报文,然后断开连接。

并行连接:通过建立多条并行 TCP 连接,并行发送 HTTP 请求和并行接收 HTTP 响应。

持久连接:客户在请求了 Web 页后,继续传输引用的图像文件,这些图像文件多数情况下位于与 Web 页所在的服务器相同的服务器(站点局部性特点)。 在这种情况下,可以不断开已建立的 TCP 连接,继续利用连接请求传输图像。根据使用持久连接传输多个对象的策略不同:非流水方式持久连接和流水方式持久连接。

非流水方式持久连接:也称为非管道方式持久连接,客户端在通过持久连接收到 前一个响应报文后,才能发出对下一个对象的请求报文。

流水方式持久连接:也称为管道方式持久连接,客户端在通过持久连接收到前一 个响应报文后,才能发出对下一个对象的请求报文。

  • HTTP/1.0 默认的是非持久连接。
  • HTTP/1.1 默认使用流水方式持久连接。HTTP/1.1 持久连接默认是激活的。
  • HTTP/1.1 代理服务器不应该与 HTTP/1.0 客户端建立持久连接。
image.png

HTTP 报文:请求报文和响应报文

报文格式:

image.png

请求报文和响应报文最大的不同在于起始行。起始行在请求报文中又名请求行,在响应报文中又名状态行。

请求报文的请求方法:

image.png

响应报文的状态码:

image.png

常见的状态码:

image.png
Cookie:

HTTP 服务器并不保存关于客户的任何信息,所以又被称为无状态协议。 为了记录保存客户信息,Web 应用引入 Cookie 机制,用于用户跟踪。

Cookie(小型文本文件):某些网站为了辨别用户身份、进行会话跟踪而存储在用户本地终端上的数据。

Cookie 技术主要包括 4 部分内容:

  • HTTP 响应报文中的 Cookie 头行:Set-Cookie。
  • 用户浏览器在本地存储、维护和管理的 Cookie 文件。
  • HTTP 请求报文中的 Cookie 头行:Cookie。
  • 网站在后台数据库中存储、维护 Cookie 信息:分配给用户 ID、每个 ID 用户在本网站的访问特征等。
Internet 电子邮件:

电子邮件系统结构:

  • 邮件服务器
  • 简单邮件传输协议(SMTP)
  • 用户代理
  • 邮件读取协议(POP3,IMPA,HTTP)
  1. 邮件服务器:发送和接收邮件,向发信人报告邮件传送情况(已交付、被拒绝、丢失等), 是电子邮件体系结构的核心。
  • 用户注册
  • 分配存储空间
    例如:zhangsan @ 163.com
  1. 用户代理是电子邮件应用的客户端软件。
  • Outlook,Apple Mail,Fox Mail 等支持用户撰写、显示、处理和收发邮件。为用 户阅读、回复、转发、保存和撰写邮件提供编辑与操作环境。

简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP):

  1. SMTP 是 Internet 电子邮件中核心应用层协议。实现邮件服务器之间或用户代理到邮件服务器之间的邮件传输。

  2. SMTP 通过 3 个阶段的应用层交互完成邮件的传输:握手阶段;邮件传输阶段;关闭阶段。

  • SMTP 定义了 14 条命令,每条命令用 4 个字母组成。例如:HELO:标识发件人自己的身份;DATA:通知服务器准备开始发送邮件内容;QUIT:命令退出;
  • SMTP 定义了 21 种应答信息,一般只有一行,由 3 位数字的代码开始,后面附上(也可不附)简单的文字说明。

SMTP 的特点:

  • SMTP 只能传送 7 位 ASCII码文本内容,包括 SMTP 命令、应答消息以及邮件内容。
  • SMTP 传送的邮件内容中不能包含“CRLE.CRLF”,因为该信息用于标识邮件内容的结束。
  • SMTP 是“推动”协议。(HTTP 是“拉动”协议)
  • SMTP 使用 TCP 连接是持久的。

一封邮件不是简单的一段文本内容,要按照一定格式结构进行组织的。包括:首部;空白;行主体。邮件中常见的首部行内容:

image.png

互联网邮件扩展(Multipurpose Internet Mail Extensions,MIME)。MIME 主要包括的内容:

  • 5 个 MIME 邮件首部字段。
  • 定义了多种邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
  • 定义了邮件传送编码,可对任何内容格式进行转换,从而适合通过 SMTP 进行传送。

邮件读取协议:1. 第三版邮局协议: (Post Office Protocol - Version 3,POP3)。2. 互联网邮件访问协议: ( Internet Message Access Protocol,IMAP)。3. Web 邮件系统的邮件读取协议:(HyperText Transfer Protocol,HTTP)

POP3:

image.png
  • 用于请求服务器传送第几封邮件:retr 邮件号
  • 结束会话,并更新操作:quit
  • 用于向服务器传送用户名:user xxxx
  • 用于向服务器发送用户密码:pass xxxx
  • 用于将邮件标记为删除:dele 邮件号
  • 用于请求所有的邮件序号和邮件长度:list

IMAP:

IMAP 服务器将每个邮件与一个文件夹进行关联,当邮件第一次到达服务器时,与收件人的收件箱文件夹相关联。通过 IMAP,收件人可以在服务器上创建新的文件夹,并可以对邮件进行移动、查询、阅读、删除等操作。

POP3 和 IMAP 的相同点:邮件读取协议。
POP3 和 IMAP 的不同点:IMAP对邮件的操作会反映在服务器上。POP3操作不会反映在服务器上。

文件传送协议(File Transfer Protocol,FTP):

在互联网的两个主机间实现文件互传的网络应用,其应用层协议称为 FTP。FTP 的服务器进程由两大部分组成:主进程,负责接受新的客户请求;若干从属进程,负责处理单个客户请求,与具体客户进行交互。

应用结构:

image.png
  • 控制连接:客户和服务器之间传输控制信息。如用户标识、口令、改变远程目录,上传下载文件命令等。
  • 数据连接:实际传送文件内容。
  • 由于 FTP 专门使用一个独立的控制连接传输控制信息,与传输文件信息进行分离,所以将 FTP 这种控制信息的传送方式称为带外控制。

FTP 是有状态的协议:服务器将用户账户和控制连接关联起来。

FTP 命令:

  • 用于从 FTP 服务器的当前目录下载文件:RETR filename
  • 用于向 FTP 服务器的当前目录上传文件:STOR filename
  • 用于向服务器传送用户名:USER usename
  • 用于向服务器发送用户密码:PASS password
  • 用于请求服务器目录中的所有文件列表:LIST

不需要专门的用户名和口令就可以登录的 FTP 服务器称为匿名服务器

P2P

Peer to peer。例如,BitTorrent、PPLive 和 PPstream 等。

P2P 应用特点:

  • 应用的对等方是用户控制的桌面计算机
  • 具有很强的应用规模伸缩性
  • 应用都是动态地在对等方之间进行
  • 应用充分聚集利用了端系统的计算能力以及网络传输宽带
Socket 编程基础
  1. 创建套接字:socket( )。

参数:

  • 流式:SOCK_STREAM;(UDP)
  • 数据报:SOCK_DGRAM;(TCP)
  • 原始:SOCK_RAW;
  1. 绑定地址和端口号:bind( )
  2. 设置监听:listen( )
  3. 建立连接:TCP 客户端:connect( );TCP 服务端:accept( )

传输层

传输层的核心任务:应用进程之间提供端到端的逻辑通信服务。

只有主机才有传输层;网络核心中的路由器结点等只用到下三层的功能。

传输层的功能:

  1. 对应用层报文进行分段和重组
  2. 面向应用层实现复用与分解
  3. 实现端到端的流量控制
  4. 拥塞控制
  5. 传输层寻址
  6. 对报文进行差错检测
  7. 实现进程间的端到端可靠数据传输控制

传输层寻址和端口

单个计算机中,不同应用进程用进程标识符(进程 ID)来区分。在全网范围内利用“IP 地址+端口号”唯一标识一个通信端点。应用层和传输层间抽象的协议端口是软件端口。

传输层端口号为 16 位整数,可以编号 65536 个(2 的 16 次方)

  1. 0-1023:熟知端口号
  2. 1024-49151:登记端口号
  3. 49152-65535:客户端口号或短暂端口号
  • 服务器端使用的端口号:熟知端口号和登记端口号
  • 客户端使用的端口号:临时性,在客户进程运行是由操作系统随机选取唯一未被使用的端口号。
  • 端口号小于 256 的端口为常用端口

无连接服务:数据传输之前无需与对端进行任何信息交换,直接构造传输层报文段并向接收端发送。类似于信件通信。

面向连接服务:数据传输之前需要双方交换一些控制信息,建立逻辑连接,然后再传输数据,传输结束后还需要拆除连接,类似于电话通信。

多路复用与多路分解:支持众多应用进程共用同一个传输层协议,并能够将接收到的数据准确交付给不同的应用进程,是传输层需要实现的一项基本功能,称为传输层的多路复用与多路分解(简称为复用与分解,也称为为复用与分用)。

多路复用:在源主机,传输层协议从不同的套接字收集应用进程发送的数据块,并为每个数据块封装上首部信息(包括用于分解的信息)构成报文段,然后将报文段传递给网络层。

多路分解:在接收端,传输层协议读取报文段中的这些字段,标识出接收套接字,进而通过该套接字,将传输层的报文段中的数据交付给正确的套接字。

无连接的多路复用与多路分解:

  1. Internet 传输层提供无连接服务的传输层协议是 UDP。UDP (User Datagram Protocol):用户数据报协议。
  2. UDP 将应用层的数据块封装成一个 UDP 报文段。包括应用数据,源端口号,目的端口号等。
  3. UDP 套接字二元组:<目的 IP 地址,目的端口号>

面向连接的多路复用与多路分解:

  1. Internet 传输层提供面向连接服务的是 TCP。TCP(Transmission Control Protocol):传输控制协议)
  2. TCP 套接字四元组:<源 IP 地址,源端口号,目的 IP 地址,目的端口号>

不可靠传输信道在数据传输中可能发生的错误:

  1. 比特差错。
  2. 乱序。
  3. 数据丢失

基于不可靠信道实现可靠数据传输采取的措施:

  1. 差错检测:利用差错编码实现数据包传输过程中的比特差错检测。
  2. 确认:接收方向发送方反馈接收状态。ACK(肯定确认);NAK(否定确认)
  3. 重传:发送方重新发送接收方没有正确接收的数据。
  4. 序号:确保数据按序提交。
  5. 计时器:解决数据丢失问题。
停-等协议:

停-等协议综合应用了差错检测,确认,重传,序号,计时器等措施,简单,所需缓冲空间小。但是,信道利用率低。

停-等协议工作原理:

image.png
  1. 发送方发送经过差错编码和编号的报文段,等待接收方的确认;
  2. 接收方差错检测无误且序号正确,则接收报文段,并向发送方发送 ACK;否则丢弃报文段,并向发送方发送 NAK;
  3. 发送方收到 ACK,则继续发送后续报文段,否则重发刚刚发送的报文段。
流水线协议

为了解决信道利用率低这个问题,一个简单的办法是不使用停等协议停止等待运行方式,允许发送方在没有收到确认前连续发送多个分组,这就是流水线协议(管 道协议)。典型的流水线协议:滑动窗口协议。流水线协议实现可靠数据传输需要:1. 必须增加分组序号;2. 协议的发送方和接收方必须缓存多个分组;

滑动窗口协议
  1. 分组连续编号
  2. 以流水线方式依次发送分组
  3. 接收方接收分组,按分组序号向上有序提交
  4. 通过确认向发送方通告正确接收的分组序号
  5. 发送方根据收到的 ACK 的序号以及计时器的,重新发送或者继续发送新分组。

滑动窗口协议工作流程图

发送方:

image.png
  1. 发送窗口 WS=5
  2. 1、2、3、4(发送窗口左侧)收到 ACK
  3. 5、6、7、8、9(发送窗口中)当前可以发送的
  4. 10、11、12(发送窗口右侧)当前不可以发送的

接收方:

image.png
  1. 1、2、3、4、5、6(接收窗口左侧)正确接收,并提交给协议用户的序号
  2. 7、8、9 期望接收但未收到的
  3. 10、11、12 暂时不能接收的
GBN 协议和 SR 协议

滑动窗口协议根据采用的确认、计时、窗口大小等机制的不同,可以设计不同的滑动窗口。 两种最具代表的滑动窗口协议:

  1. 回退 N 步(Go-Back-N,GBN)协议
  • 发送方(Ws≥1)缓存能力比较高,可以在未接到确认前连续发送多个分组。 接收方(Wr=1)缓存能力很低,只能接收一个按序到达的分组,不能缓存未按序到达的分组。未按序到达的分组丢弃,并让发送方重传。
  • GBN 发送方必须响应 3 个事件:上层调用;收到 ACKn;计时器超载;
  1. 选择重传(Selective Repeat,SR)协议

  2. 发送方(Ws≥1)可以在未接到确认前连续发送多个分组。接收方(Wr≥1)对每个正确接收的分组进行逐个确认。让发送方仅重传那些未 被确认接收的分组。

  3. SR 发送方主要响应 3 个事件:上层调用;计时器超时;收到 ACKn;

推荐阅读更多精彩内容