在打算开始学习计算机网络时,找到了湖科大一位老师的计算机网络微课堂课程。这门课程配图要点明确,讲解清晰,且课程也比较简短。因此学习本课程并记录了笔记。

第一章 概述

1.因特网概述

1.1 网络、互联网和因特网

  • 网络由若干结点和连接这些结点的链路组成
  • 多个网络可以通过路由器互连起来,构成覆盖范围更大的网络,即互联网,因此互联网是“网络的网络”
  • 因特网是世界上最大的互连网络

internet:通用名词,泛指多个计算机网络互连而成的网络,在这些网络之间的通信协议可以是任意的

Internet:专指全球最大的,由众多网络互连而成的计算机网络,采用TCP/IP协议族作为通信规则

1.2 因特网发展的三个阶段

  • 从单个网络ARPANET向互联网发展
  • 逐步建成三级结构的因特网(NSFNET)
  • 逐步形成了多层次ISP结构的因特网

ISP:因特网服务提供者,提供IP地址,有了IP地址就可以接入因特网。常见的ISP包括中国电信,中国移动等。

ISP三层结构:

1.3 因特网的标准化工作

  • 面向公众
  • 因特网协会ISOC对因特网进行全面管理

1.4 因特网的组成

  • 边缘部分:由所有连接在因特网的主机组成,用户直接使用,用来进行通信和资源共享
  • 核心部分:由大量网络和连接这些网络的路由器组成,为边缘部分提供服务

2.三种交换方式

2.1 电路交换

  • 电话交换机接通电话线的方式称为电路交换
  • 交换:按照某种方式动态分配传输线路的资源
  • 三个步骤:建立连接-通话-释放连接

2.2 分组交换

2.3 报文交换

  • 与分组交换类似,交换结点采用存储转发方式,但对报文的大小没有限制,主要用于早期的电报通信网

2.4 三种交换方式的对比

优点 缺点
电路交换 通信时延小
有序传输
没有冲突
使用范围广
实时性强

控制简单
建立连接时间长
线路独占,使用效率低
灵活性差(故障后需要重新建立连接)
难以规格化(数据直达,不同规格终端难以通信)
报文交换 无需建立连接
动态分配线路
提高线路可靠性(某条路径故障,选择另一条路径)
提高线路利用率
提供多目标服务
引起转发时延
需要较大的存储缓存空间
需要额外信息量(目标地址等)
分组交换 无需建立连接
线路利用率高
简化存储管理(相对于报文交换,分组长度固定)
加速传输(分组的转发和存储可同时进行)
减少出错概率和重发数据量
引起转发时延
需要传输额外数据

失序,丢失,重复分组等问题
虚电路存在呼叫建立,数据传输和虚电路释放三个过程

3.计算机网络的定义和分类

3.1 计算机网络的定义

  • 最简单的定义:互连的,自洽的计算机的集合
  • 较好的定义:通用的,可编程的硬件互连而成,可用来传送多种不同类型的数据能支持广泛的和日益增长的应用

3.2 分类

  • 按交换技术分类:电路交换/报文交换/分组交换
  • 按使用者分类:公用网/专用网
  • 按传输介质分类:有线/无线网络
  • 按覆盖范围分类:广域网WAN/城域网MAN/局域网LAN/个域网PAN
  • 按拓扑结构分类:总线型/星型/环形/网状型

4.计算机网络的性能指标

4.1 速率

4.2 带宽

4.3 吞吐量

  • 吞吐量表示单位时间内通过某个网络(或信道、接口)的数据量。
  • 吞吐量受网络的带宽或额定速率的限制

4.4 时延

4.5 时延带宽积

  • 传播时延和带宽的乘积:即连续发送数据时,第一个字节到达终点时,发送端已经发送了时延带宽积的字节

4.6 往返时间RTT

  • 双向交互所需的时间

4.7 利用率

4.8 丢包率

8个性能指标总结如下:

5.计算机网络体系结构

5.1 常见结构

OSI参考模型

TCP/IP协议模型

原理体系结构

5.2 分层必要性

5.3 分层思想举例

5.4 专用术语

  • 实体:任何可发送或接收信息的硬件或软件进程
  • 对等实体:通信双方的相同层次
  • 协议:逻辑通信的规则集合
  • 协议三要素:语法(格式),语义,同步
  • 服务访问点:同一系统中相邻两层的实体交换信息的逻辑接口
  • 协议数据单元PDU:对等层次之间传送的数据包
  • 服务数据单元SDU:统一系统内,层与层之间交换的数据包

第二章 物理层

1.物理层协议的主要任务

  • 考虑怎样才能在连接各种计算机的传输媒体上传输数据比特流

2.传输媒体

双绞线

光纤

微波

3.传输方式

  • 串行传输/并行传输
  • 同步传输/异步传输
  • 单工/半双工/全双工通信

4.编码与调制

编码

调制

5.信道的极限容量

第三章 数据链路层

1.概述

三个重要问题

  • 封装成帧
  • 差错检测
  • 可靠传输

2.封装成帧

  • 字节填充:在数据部分出现的帧定界符前添加转义字节
  • 比特填充:在数据部分每5个1后添加一个0(帧尾为6个1,即修改成和帧尾不同)

3.差错检测

  • 奇偶校验:漏检率高,一般不采用
  • 循环校验CRC:

4.可靠传输

一般情况下,有线链路的误码率比较低,为了减小开销,不要求数据链路层向上层提供可靠传输服务;无线链路易受干扰,误码率较高,因此要求数据链路层必须向上层提供可靠传输

比特差错只是传输差错的一种,传输差错还包括分组丢失,分组时序,分组重复。

5.可靠传输的实现机制

停止-等待协议SW

回退N帧协议GBN

选择重传协议SR

6.点对点PPP协议

  • 点对点协议PPP是目前使用最广泛的点对点数据链路层协议

7.媒体接入控制

静态划分信道

随机接入

CSMA/CD协议:

现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CD协议

  • CSMA/CD协议的工作原理
    • 多址接入MA:多个主机连接在一条总线上,竞争使用总线
    • 载波监听CS:发送帧前先检测总线,总线空闲96比特时间则发送,否则持续检测是否空闲
    • 碰撞检测CD:边发送边检测碰撞,若检测到碰撞则停止发送,退避一段随机时间后重新发送
  • 使用CSMA/CD协议的以太网争用期(碰撞窗口)
    • 发送帧的主机最多经过以太网端到端往返传播时延2t时间,就可检测到碰撞,这个时间称为争用期
    • 争用期内没有检测到碰撞则确定不会发生碰撞
    • 以太网规定2t取值为512比特时间
  • 使用CSMA/CD协议的以太网的最小帧长和最大帧长
    • 最小帧长 = 争用期*信道带宽(10Mbps的以太网,最小帧长为64字节)
    • 最小帧长保证了主机可在帧发送完成前检测到该帧是否发生了碰撞
    • 为了防止主机长时间占用总线,以太网的帧长有限制(V2的MAC帧最大长度为1518字节)
  • CSMA/CD协议使用的截断二进制指数退避算法
    • 随机退避时间 = 争用期2t * 随机数r,r从离散整数集合{0,1…,(2^k-1)}中随机取一个,k = Min[重传次数,10]
    • 重传16次仍不成功时,表示同时又太多主机打算发送数据,此时丢弃该帧并向高层报告
  • 以太网的信道利用率
    • 以太网端到端的距离受到限制
    • 以太网帧的长度应尽量长些

CSMA/CA(碰撞避免)协议:

  • 802.11无线局域网在MAC层使用CSMA/CA协议,尽量减小碰撞发送的概率。不能使用CSMA/CD协议的原因是在无线局域网中无法实现碰撞检测(隐蔽站问题)。在使用CSMA/CA协议的同时,还使用停止等待协议来实现可靠传输。

  • 为了尽可能避免碰撞,CSMA/CA协议的退避算法不同,且信道从忙态转为空闲时,都要执行退避算法。
    • 站点为退避计时器设置一个随机退避时间,减小到零开始发送数据
    • 退避计时器未减小到零时信道转为忙状态,就冻结退避计时器,重新等待信道空闲,再经过DIFS后,启动退避计时器

  • 802.11标准规定,所有的站在完成发送后,必须再等待一段帧间间隔(IFS)时间才能发送下一帧。帧间间隔的长短取决于该站要发送的帧的优先级。
    • SIFS:短帧间间隔,分隔开属于一次对话的各帧(ACK,C)
    • DCF:比SIFS长的多,用来发送数据帧和管理帧

  • 在802.11无线局域网的MAC帧首部中有一个持续期字段,用于填入本帧结束后还要占用信道多久时间,其他站点通过该字段实现虚拟载波监听
  • 802.11标准允许要发送数据的站点对信道进行预约,先发送请求发送RTS帧,收到响应允许发送CTS帧后,发送数据帧。RTS和CTS帧很短,碰撞概率和开销很小,因此付出很小的代价进行信道预约是值得的。

8.MAC地址,IP地址与ARP协议

MAC地址

  • 多个主机连接在同一个广播信道上,每个主机必须有一个唯一的标识,即一个数据链路层地址
  • 在每个主机发送的帧中必须携带标识发送主机和接收主机的地址,这类地址用于媒体接入控制(MAC),因此这类地址被称为MAC地址(也被称为硬件地址或物理地址)。尽管可能被称为物理地址,MAC地址不属于物理层
  • 一般情况下,用户主机包含两个网络适配器:有线局域网适配器(有线网卡),h和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址,而交换机和路由器往往拥有更多的网络接口,拥有更多的MAC地址。MAC地址是对网络上各接口的唯一标识,而不是对网络上设备的唯一标识

IP地址(网络层)

ARP协议

  • 地址解析协议ARP将IP地址解析为MAC地址。
  • 源主机在自己的ARP高速缓存表中查找目的主机的IP地址对应的MAC地址,若未找到则发送ARP请求(封装在广播MAC帧中)
  • 目的主机收到ARP请求后,将源主机的IP地址与MAC地址存入ARP高速缓存表中,然后给源主机发送ARP响应(包含目的主机的IP地址和MAC地址)。
  • ARP的作用范围:逐段链路或逐个网络
  • 除ARP请求和响应外,ARP还有其他类型的报文(如检测IP地址冲突的无故ARP)。
  • ARP没有安全验证机制,存在ARP欺骗(攻击)问题。

9.集线器与交换机

10.以太网交换机自学习和转发帧的流程

11.以太网交换机的生成树协议STP

12.虚拟局域网VLAN

虚拟局域网VLAN

虚拟局域网VLAN的实现

IEEE 802.1Q帧

交换机的端口

第四章 网络层

1.概述

  • 网络层的主要任务是实现网络互连,实现数据包在各网络间的传输
  • 要实现网络层任务,需要解决以下问题:
    • 网络层向运输层提供怎样的服务(可靠/不可靠传输)
    • 网络层寻址问题
    • 路由选择问题

2.网络层提供的两种服务

  • 面向连接的虚电路服务
    • 可靠通信由网络来保证
    • 必须建立网络层的连接,即虚电路VC
    • 通信双方沿着已建立的虚电路发送分组
    • 目的主机的地址仅在连接建立时使用,之后每个分组的首部只需要携带虚电路的编号
    • 通信结束后需要释放虚电路
    • 很多广域分组交换网都使用面向连接的虚电路服务(曾经的X.25和已经逐渐过时的帧中继FR,异步传输模式ATM等)
  • 无连接的数据报服务
    • 可靠通信由用户主机来保证
    • 不需要建立网络层连接
    • 每个分组可走不同路径
    • 首部必须携带目的主机的完整地址
    • 传输分组可能误码,丢失,重复和失序,网络本身不提供端到端的可靠服务

3.IPV4地址

分类编址的IPV4地址

划分子网的IPV4地址

无分类编址的IPV4地址

IPV4地址的应用规划

定长子网掩码FLSM

变长子网掩码VLSM

4.IP数据报的发送与转发

  • 主机发送IP数据报:判断目的主机是否与自己在同一个网络(将目的IP与子网掩码相与),进行直接交付或通过默认网关(路由器)间接交付

  • 路由器转发IP数据报:检查IP数据报首部是否出错,无错则根据目的地址在路由表中查找匹配的条目进行转发

5.静态路由配置

6.路由选择协议

  • 静态路由选择:人工配置,不能适应网络状态变化,一般只在小规模网络中采用
  • 动态路由选择:路由器通过路由选择协议自动获取路由信息,能适应网络状态变化,适用于大规模网络

常见的路由选择协议

路由信息协议RIP

开放最短路径优先OSPF

  • 开放最短路径优先OSPF是公开的使用最短路径算法SPF的协议,算法保证不会产生路由环路
  • OSPF基于链路状态。链路状态指路由器和哪些路由器相邻,以及相应链路的代价(费用,距离,时延,带宽等,由网络管理人员决定)
  • OSPF相邻路由器之间通过交换问候(Hello)分组,建立和维护邻居关系

  • 使用OSPF的每个路由器都会产生链路状态通告LSA,LSA包括:直连网络的链路状态信息;邻居路由器的链路状态信息
  • LSA被封装在链路状态更新分组LSU中,采用洪泛法发送
  • 使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA
  • 通过各路由器洪范发送封装LSA的LSU分组,各路由器的LSDB最终状态将达到一致
  • 使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他路由器的最短路径,即各自的路由表
  • OSPF有以下五种分组类型

    • 问候分组:发现和维护邻居路由器的可达性
    • 数据库描述分组:向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
    • 链路状态请求分组:向邻居路由器请求发送某些链路状态项目的详细信息
    • 链路状态更新分组:路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态
    • 链路状态确认分组:对链路状态更新分组的确认分组
  • OSPF在多点接入网络应用:

  • 为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围,叫做区域

边界网关协议BGP

  • 外部网关协议EGP在不同自治系统之间选择一条能够到达目的网络且比较好的路由,由于个自治系统度量路由的代价不同,无法用代价衡量最佳路由,因此EGP不一定要找到一条最佳路由
  • 配置BGP时,每个自治系统的管理员选择至少一个路由作为该自治系统的BGP发言人
  • 不同自治系统的BGP发言人要交换路由信息,必须先建立TCP连接,端口号为179
    • 在此TCP连接上交换BGP报文以建立BGP会话
    • 利用BGP会话交换路由信息(增加撤销路由,报告出错情况等)
    • 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的临站/对等站
  • BGP发言人交换网络可达性的信息(到达某个网络要经过的一系列自治系统)
  • BGP发言人交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的好的路由
  • BGP-4有以下四种报文
    • OPEN报文:与相邻的另一个BGP发言人建立关系,使通信初始化
    • UPDATE报文:用来通告某一路由的信息,以及列出要撤销的多条路由
    • KEEPALIVE保活报文:用来周期性证实临站的连通性
    • NOTIFICATION报文:用来发送检测到的差错

7.IPv4数据报的首部格式

  • 版本:表示IP协议的版本
  • 首部长度:4字节,表示IP数据报首部的长度,该字段的取值以4字节为单位,最小取值为5,表示只有20字节固定部分,最大取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分
  • 可选字段:用于支持排错,测量,安全等,由于长度不定增加了路由器处理IP数据报的开销,实际上很少使用
  • 填充:填充保证IP数据报首部为4字节的整数倍
  • 区分服务字段:用数值提供不同等级的服务质量,一般情况下都不使用该字段
  • 总长度字段:表示IP数据报总长度(首部+数据载荷)
  • 标识,标志,片偏移用于IP数据报分片。当IP数据报长度超过帧的数据载荷的最大长度(最大传输单元MTU),无法封装,需要分片
    • 标识:同一个数据报的各分片数据报有相同标识。IP软件维持计数器,每产生一个数据报,计数加1,并将该值赋给标识字段
    • 标志:3bit
      • DF位:1表示允许分片
      • MF位:1表示还有分片,0表示这是最后一个分片
      • 保留位:必须为0
    • 片偏移:以8个字节为单位。指出分片数据报的数据载荷部分偏移其原数据报的位置
  • 生存时间TTL:最初以秒为单位,最大生存周期为255秒,在路由器转发时减去在本路由器上耗费的时间。现在以跳数为单位,路由器转发时-1。
  • 协议字段:指明数据部分是何种协议数据单元
    • 1:ICMP报文
    • 6:TCP报文
  • 首部检验和:使用因特网检验和检测首部在传输过程中是否出现差错。由于IP层不提供可靠传输服务,因此IPv6中,路由器不再计算首部校验和。

8.网际控制报文协议ICMP

  • 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP
  • 主机或路由器使用ICMP来发送差错报告报文和询问报文
  • ICMP数据报封装在IP数据报中发送
  • ICMP差错报文共有以下五种:
    • 终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知等13种错误。
    • 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢
    • 时间超过:当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL-1,若为0则丢弃该IP数据报,并向源点发送时间超过报文。另外,终点在预规定时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会发送时间超过报文。
    • 参数问题:当路由器或目的主机收到IP数据报后,若首部检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。
    • 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过的更好路由)。
  • 以下情况不应发送ICMP差错报告报文
    • 对ICMP差错报告报文不再发送ICMP差错报告报文
    • 对第一个分片的数据报片的后续数据报片不再发送ICMP差错报告报文
    • 对具有多播地址的数据报都不发送ICMP差错报告报文
    • 对具有特殊地址的数据报(如127.0.0.0或0.0.0.0)的数据包不发送ICMP差错报告报文
  • ICMP询问报文有以下两种:
    • 回送请求和回答:ICMP回送请求报文是由主机或路由器向一个特定目的主机发送的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达及了解有关状态。
    • 时间戳请求和回答:请求某个主机或路由器回答当前的日期和时间。这种报文用来进行时钟同步和测量时间。
  • ICMP应用举例:
    • 分组网间探测PING
      • 用来测试主机或路由器间的连通性
      • 应用层直接使用网际层的ICMP(没有通过运输层的TCP或UDP)
      • 使用ICMP回送请求和回答报文
    • 跟踪路由traceroute
      • 用来测试IP数据报从源主机到达目的主机要经过哪些路由器
      • Windows:tracert命令;应用层直接使用网际层ICMP;使用了ICMP回送请求和回答报文
      • UNIX:traceroute命令;在运输层使用UDP协议;仅使用ICMP差错报告报文

9.虚拟专用网VPN与网络地址转换NAT

第五章 运输层

1.概述

  • 物理层、数据链路层以及网络层共同解决了将主机通过异构网络互联起来的问题,实现了主机到主机的通信
  • 实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程
  • 为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议
  • 根据应用需求的不同,运输层为应用层提供了两种不同的运输协议:面向连接的TCP无连接的UDP>,这两种协议是运输层讨论的主要内容

2.运输层端口号、复用与分用的概念

  • 运行在计算机上的进程使用进程标识符PID来标志,但不同操作系统使用不同格式的进程标识符。为了使运行不同操作系统的计算机的应用进程之间能够进行网络通信,必须使用统一的方法对TCP/IP体系的应用进程进行标识
  • TCP/IP体系的运输层使用端口号区分应用层的不同应用进程
    • 端口号16bit表示,取值范围0-65535
      • 熟知端口号:0-1023,用于TCP/IP体系中最重要的应用协议,例如FTP使用21/20,HTTP使用80DNS使用53
      • 登记端口号:1024-49151,没有熟知端口号的应用程序使用,必须在IANA按规定登记
      • 短暂端口号:49152-65335.留给客户进程选择暂时使用。当服务器进程收到用户进程的报文时,就知道客户进程使用的动态端口号。通信结束后该端口号可供其他客户进程使用
    • 端口号只有本地意义,即端口号只是为了标识本计算机应用层中的各进程,不同计算机中的相同端口号是没有联系的
  • 发送方的复用和接收方的分用

  • TCP/IP体系的应用层常用协议所使用的运输层熟知端口号

3.UDP和TCP

4.TCP的流量控制

  • 流量控制的目的是让发送方的发送频率不要太快,要让接收方来得及接收
  • 利用滑动窗口机制可以方便地在TCP连接上实现对发送方的流量控制
    • TCP接收方利用自己的接收窗口的大小来限制发送方发送窗口的大小
    • TCP接收方接收数据后回发TCP确认报文段(ACK=1),并在TCP报文段首部的确认号字段(ack)进行累计确认
    • TCP发送方收到接收方的零窗口通知后,应启动持续计时器(避免更改窗口的小的报文丢失,导致发送窗口保持为0,接收窗口等待的死锁情况),持续计时器超时后,向接收方发送零窗口探测报文(该报文也有计时器)

5.TCP的拥塞控制

  • 在某段时间,若对网络中某一资源(带宽,交换结点中的缓存和处理机等)的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做拥塞
  • 若出现拥塞而不进行控制,整个网络的吞吐量将随输入地负荷的增大而下降

  • 发送方维护一个叫做拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并动态变化
    • 拥塞窗口cwnd的维护原则:只要没有出现拥塞,拥塞窗口就增大一些,只要网络出现拥塞,拥塞窗口就减小
    • 判断出现网络拥塞的依据:没有按时收到应当到达的确认报文(即发生超时重传)
  • 发送方将拥塞窗口作为发送窗口swnd,即swnd=cwnd
  • 维护一个慢开始门限ssthresh状态变量
    • 当cwnd<ssthresh,使用慢开始算法
    • 当cwnd>ssthresh,停止使用慢开始算法,使用拥塞避免算法
    • 当cwnd=ssthresh,可使用慢开始算法或拥塞避免算法

  • 快重传:发送方尽快进行重传,而不是等超时重传计时器超时再重传
    • 要求接收方不等待自己发送数据时才确认,而是立即发送确认
    • 收到了失序的报文段后对已收到的报文段重复确认
    • 发送方收到3各连续的重复确认,就将相应的报文段立即重传,不等待超时重传计时器超时再重传
    • 个别报文丢失不会导致超时重传,就不会误认为出现了拥塞,快重传可以让整个网络的吞吐量提高约20%

  • 发送方接收3个重复确认,知道只是丢失了个别报文段,于是不启动慢开始,而执行快恢复算法
    • 发送方将慢开始门限ssrhresh和拥塞窗口cwnd值调整为当前窗口的一半,开始执行拥塞避免算法
    • 也有的快恢复实现是把快恢复开始时的拥塞窗口cwnd增大3,原因是有3个数据报文段已离开网络,不停留在接收方的接受缓存中,可适当扩大窗口

6.TCP超时重传时间的选择

  • 超时重传时间RTO应略大于往返时间RTT

  • 不能直接使用某次测量得到的RTT样本来计算超时重传时间RTO

  • 利用每次测量得到的RTT样本,计算加权平均往返时间RTTs(又称为平滑的往返时间),超时重传时间RTO应略大于加权平均往返时间

  • 往返时间RTT测量是复杂的,为了解决超时重传无法测准往返时间RTT的问题,使用Karn算法:计算加权平均往返时间RTTs时,只要报文段重传了,就不采用其往返时间RTT样本。不重新计算RTTs和RTO。但是在报文段时延增大且保持时,这会导致超时重传时间无法更新,导致报文段反复重传。

  • 对Karn算法的修正:报文段每重传一次,就把超时重传时间RTO增大一些。典型的做法是将新RTO的值取为旧RTO值的2倍。

7.TCP可靠传输的实现

  • TCP基于以字节为单位的滑动窗口来实现可靠传输

  • 发送方的发送窗口并不总是和接收方的接收窗口一样大
    • 网络传送窗口值需要经历一定时间的时间滞后,而且这个时间是不确定的
    • 发送方还可能根据网络当时的拥塞情况适当减小自己的发送窗口尺寸
  • 对于不按序到达的数据如何处理,TCP无明确规定
    • 若直接丢弃不按序到达的数据,接收窗口的管理会比较简单,但不利于网络资源利用
    • TCP通常对不按序到达的数据临时存放在接收窗口中,等到字节流中锁缺少的字节收到后,再按序交付上层的应用进程
  • TCP要求接受方必须有累计确认和捎带确认机制,减小传输开销。接收方可以在合适时发送确认,也可以在自己有数据要发送时把确认信息捎带上。
    • 接收方不应过分推迟发送确认,否则会导致发送方不必要的超时重传。TCP标准规定,确认推迟的时间不应超过0.5s。若收到一连串具有最大长度的报文段,必须每隔一个报文段就发送一个确认。
    • 捎带确认实际上并不经常发生,因为大多数应用程序很少同时在两个方向上发送数据。
  • TCP的通信是全双工通信。通信中的每一方都有自己的发送和接收窗口。

8.TCP的运输连接管理

TCP的连接建立

  • TCP的连接建立要解决以下三个问题
    • 使TCP双方能够确知对方的存在。
    • 使TCP双方能够协商一些参数(如最大窗口值,是否使用窗口扩大选项和时间戳选项以及服务质量等)。
    • 使TCP双方能够对运输实体资源(如缓存发小、连接表中的项目等)进行分配。
  • TCP使用三报文握手建立连接
    • TCP标准规定,SYN=1的报文段不能携带数据,消耗一个序号。
    • 普通的确认报文段如果不携带数据,则不消耗序号。

TCP的连接释放

  • TCP通过四报文释放连接

  • TCP服务器每收到一次TCP客户进程的数据,就重新设置并启动保活计时器。
  • 若保活计时器定时周期内未收到TCP客户进程发来的数据,则当保活计时器到时后,TCP服务器进程就向TCP客户进程发送一个探测报文段,以后每隔75s发送一次。若一连发送10个探测报文段后仍无TCP客户进程的响应,TCP服务器进程就认为TCP客户进程所在主机出了故障,关闭连接。

9.TCP报文段的首部格式

  • 为了实现可靠传输,TCP采用了面向字节流的方式。
  • 但TCP在发送数据时,是从发送缓存中取出一部分或全部字节并给其添加一个首部使之称为TCP报文段后进行发送。
    • 一个TCP报文段由首部和数据载荷两部分构成
    • TCP的全部功能都体现在它首部中各字段的作用

  • 源端口:16bit,写入源端口号,用来标识发送该TCP报文段的应用进程。
  • 目的端口:16bit,写入目的端口号,用来标识接收该TCP报文段的应用进程。
  • 序号:32bit,指出本TCP报文段数据载荷的第一个字节的序号。
  • 确认号:32bit,指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。
  • 确认标志位ACK:取值为1时确认号字段才有效,取值为0时确认号字段无效。TCP规定,连接建立后所有传送的TCP报文ACK均置1。
  • 数据偏移:4bit,以4字节为单位。用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远。这个字段实际上是只出了TCP报文段的首部长度。取值为20-60。
  • 保留:6bit,保留,目前置为0。
  • 窗口:16bit,字节为单位,指出发送本报文段的一方的接收窗口
  • 校验和:16bit,检查范围包括TCP报文段的首部和数据载荷两部分。在计算校验和时,要在TCP报文段的前面加上12字节的伪首部。
  • 同步标志位SYN:在TCP连接建立时用来同步序号。
  • 终止标志位FIN:用来释放TCP连接。
  • 复位标志位RST:用来复位TCP连接。当RST=1时,表明TCP连接出现了异常,必须释放连接,然后再重新建立连接。RST置1还用来拒绝一个非法的报文段或拒绝打开一个TCP连接。
  • 推送标志位PSH:接收方的TCP收到该标志位为1的报文段会尽快上交应用进程,而不必等到接受缓存都填满后再向上交付。
  • 紧急标志位URG:取值为1时紧急指针字段有效。取值为0时紧急指针字段无效。
  • 紧急指针:占16bit,以字节为单位,用来指明紧急数据的长度。

​ 当发送方有紧急数据时,可将紧急数据插队到发送缓存的最前面,并立即封装到一个TCP报文段中进行发送。紧急指针会指出本报文段数据再和部分包含了多长的紧急数据,紧急数据之后是普通数据。

  • 扩展首部
    • 最大报文段长度MSS选项:TCP报文段数据载荷部分的最大长度。
    • 窗口扩大选项:为了扩大窗口(提高吞吐率)。
    • 时间戳选项:用来计算往返时间RTT;处理序号超范围的情况,又称为防止序号绕回PAWS。
    • 选择确认选项
  • 填充:保证报文段首部能被4整除

第六章 应用层

1.客户/服务器方式(C/S方式)和对等方式(P2P方式)

客户/服务器方式

  • 客户和服务器是指通信中所涉及的两个应用进程
  • 客户/服务器方式所描述的是进程之间服务和被服务的关系
  • 客户是服务请求方,服务器是服务提供方
  • 服务器总是处于运行状态,并等待客户的服务请求。服务器具有固定端口号(例如HTTP服务器的默认端口号为80)。而运行服务器的主机也具有固定的IP地址。
  • C/S方式是因特网上传统的,同时也是最成熟的方式。很多我们熟悉的网络应用采用的都是C/S方式。包括万维网WWW、电子邮件、文件传输FTP等。
  • 基于C/S方式的应用服务器通常是服务集中型的,即应用服务集中在网络中比客户机少的多的服务器计算机上
    • 由于一台服务器要为多个客户机提供服务,在C/S应用中,常会出现服务器计算机跟不上众多客户机请求的情况。
    • 为此,在C/S应用中,常用计算机群集(或服务器场)构建一个强大的虚拟服务器。

对等方式P2P

  • P2P方式中,没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方。对等方相互之间直接通信,每个对等方既是服务的请求者,又是服务的提供者。
  • 目前因特网流行的P2P应用主要包括P2P文件共享、即时通信、P2P流媒体、分布式存储等。
  • 基于P2P的应用是服务分散型的,因为服务分散在大量对等计算机中,不是服务提供商所有,而是为个人控制的桌面计算机和笔记本电脑。
  • P2P的特性是可扩展性。因为系统每增加一个对等方,不仅增加的是服务的请求者,同时也增加了服务的提供者,系统性能不会因规模的增大而降低。
  • P2P方式具有成本上的优势。通常不需要庞大的服务器设施和服务器带宽。

2.动态主机配置协议DHCP

  • 动态主机配置协议DHCP提供了一种机制,称为即插即用连网。这种机制允许一台计算机加入新网络时可自动获取IP地址等网络配置信息而不用手工参与。
  • DHCP报文在运输层使用UDP协议封装
    • DHCP客户使用的UDP端口号为68
    • DHCP服务器使用的UDP端口号为67
  • DHCP客户在未获取到IP地址使用地址0.0.0.0
  • 在每一个网络上都设置一个DHCP服务器会使DHCP服务器的数量太多。因此每个网络至少有一个DHCP中继代理(通常是一台路由器),它配置了DHCP服务器的IP地址信息,作为各网络中计算机与DHCP服务器的桥梁。

3.域名系统DNS

  • 因特网采用层次树状结构的域名结构
  • 域名结构由若干个分量组成,分量之间用点隔开
    • 每一级域名都有英文字母和数字组成,不超过63个字符,不区分大小写字母。
    • 级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。
    • 完整的域名不超过255个字符。
  • 域名系统不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
  • 各级域名由上一级的域名管理机构管理,而最高的顶级域名由因特网名称与数字地址分配机构ICANN进行管理。
  • 顶级域名TLD分为以下三类:
    • 国家顶级域名nTLD:采用ISO3166的规定。如cn表示中国,us表示美国等
    • 通用顶级域名gTLD:com(公司企业),net(网络服务机构),org(非盈利性组织),int(国际组织),edu(美国教育机构),gov(美国政府部门),mil(美国军事部门)。
    • 反向域arpa:用于反向域名解析,即IP地址反向解析为域名
  • 在国家顶级域名下注册的二级域名由该国自行确定
  • 我国将二级域名划分为以下两类:
    • 类别域名:ac科研机构,com企业,edu教育机构,gov政府部门,net提供网络服务的机构,mil军事机构,org非盈利性组织。
    • 行政区域名:共34个,适用于我国各省,自治区,直辖市。
  • 域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。
  • 域名服务器可以划分为以下四种不同的类型
    • 根域名服务器:
      根域名服务器是最高层次的域名服务器,知道所有的顶级域名服务器的域名及IP地址。因特网共有13个不同IP地址的根域名服务器。每台服务器都是分布在各地的计算机构成的服务器集群。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器,加快DNS查询过程。根域名服务器通常并不直接对域名进行解析,而是返回该域名所述顶级域名的顶级域名服务器的IP地址。
    • 顶级域名服务器:
      这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP地址)。
    • 权限域名服务器
      这些域名服务器负责管理某个区的域名,每一个主机的域名都必须在某个权限域名服务器注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。权限域名服务器还知道其下级域名服务器的地址。
    • 本地域名服务器
      本地域名服务器不属于上述的域名服务器的等级结构。当一个主机发出DNS请求报文时,这个报文就首先被送外该主机的本地域名服务器。本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。每一个因特网服务提供者ISP,都可以拥有一个本地域名服务器,有时也被称为默认域名服务器。本地域名服务器离用户较近,一般不超过几个路由器,也有可能就在同一个局域网中。
  • 域名解析的过程

  • 为了提高DNS查询效率,减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处取得域名映射信息的记录。
  • 为保持高速缓存中的内容正确。域名服务器为每项内容设置计时器并删除超过合理时间的项
  • 用户主机中同样存在高速缓存,只在从缓存中找不到域名时才向域名服务器查询。
  • DNS报文使用运输层的UDP协议进行封装,端口号为53

4.文件传送协议FTP

  • 文件传送FTP是因特网上使用的最广泛的文件传送协议
    • FTP提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。
    • FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
  • FTP的常见用途是在计算机之间传输文件,尤其是用于批量传输文件。也常用于将构成网站内容的大量文件批量上传到他们的Web服务器。
  • FTP的基本工作原理
    • 有数据要传输时,FTP客户通过命令通道告知FTP服务器来与自己的另一个临时端口建立TCP连接,建立数据通道。
    • 建立数据通道时,FTP服务器主动连接FTP客户称为主动模式,FTP服务器被动等待FTP客户端建立连接称为被动模式。

5.电子邮件

  • 电子邮件是因特网上最早流行的一种应用。
  • 电子邮件采用客户/服务器方式
  • 电子邮件系统的三个主要组成:用户代理,邮件服务器,电子邮件需要的协议
    • 用户代理是用户与电子邮件系统的接口
    • 邮件服务器是电子邮件系统的基础设施。因特网上所有的ISP都有邮件服务器,其功能是发送和接收邮件,同时负责维护用户的邮箱。
    • 协议包括邮件发送协议(例如SMTP)和邮件读取协议(例如POP3,IMAP)。
  • 简单邮件传送协议SMTP

  • 电子邮件有信封和内容两部分,内容由首部和主题两部分构成。

  • SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或其他二进制对象,也不能传送多媒体邮件和许多非英语国家的文字。

  • 为解决SMTP传送非ASCII码文本的问题,提出了多用途因特网邮件扩展MIME
    • 增加了5个新的邮件首部字段,提供了有关邮件主体的信息。
    • 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
    • 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
  • 实际上MIME不仅仅用于SMTP,也用于同样面向ASCII字符的HTTP。
  • 常用的邮件读取协议有以下两个
    • 邮局协议POP:因特网正式标准。简单但功能有限,用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件到用户方服务器。不允许用户在邮件服务器上管理自己的邮件。(例如创建文件夹,对邮件进行分类管理等)。
    • 因特网邮件访问协议IMAP:因特网建议标准。用户在自己的计算机上就可以操控邮件服务器中的邮箱,就像在本地操控一样,因此IMAP是一个联机协议。
    • POP3和IMAP4都采用基于TCP连接的客户/服务器方式。POP3使用熟知端口110,IMAP4使用熟知端口143。
  • 基于万维网的电子邮件
    • 通过浏览器登录(提供用户名和口令)邮件服务器万维网就可以撰写收发和管理电子邮件。方式与IMAP类似,但不需要安装专门的用户代理程序。
    • 邮件服务器提供方便的邮件管理功能,用户可以在邮件服务器上管理和处理自己的邮件。

6.万维网

  • 万维网WWW是一个大规模的、联机的信息储藏所,是运行在因特网上的一个分布式应用。
  • 浏览器最重要的部分是渲染引擎,也就是浏览器内核,负责对网页内容进行解析和显示。
  • 万维网使用统一资源定位符URL来指明因特网上任何种类资源的位置。其一般形式为:<协议>://<主机>:<端口>/<路径>
  • 万维网文档
    • 超文本标记语言HTML,使用多种标签来描述网页的结构和内容。
    • 层叠样式表CSS,从审美角度来描述网页的样式。
    • 脚本语言JavaScript,控制网页的行为。
  • 超文本传输协议HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。
    • HTTP/1.0采用非持续连接方式。每次浏览器要请求一个文件都要与服务器建立TCP连接(80端口),当收到响应后就立即关闭连接。
    • HTTP/1.1采用持续连接方式。万维网服务器在发送相应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。还可采用流水线方式,即浏览器收到HTTP的相应报文之前就能够连续发送多个请求报文。
  • HTTP有两类报文:请求报文和响应报文。报文中的每一个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。
  • Cookie提供了一种机制使得万维网服务器能够记住用户,而无需用户主动提供标识信息。Cookie是一种对无状态的HTTP进行状态化的技术
  • 在万维网中还可以使用缓存机制以提高万维网的效率。万维网缓存又称为Web缓存,可位于客户机,也可位于中间系统上,位于中间系统的Web缓存又称为代理服务器。

  • HTTP的报文格式

  • Cookie