计算机网络笔记
Carbda Lv3

概述

因特网

网络由若干结点和连接这些结点的链路组成
因特网服务提供者ISP

ISP三层结构:

  • 第一层:主干网(国际性区域)
  • 第二层:区域性或国家性覆盖规模(大公司…)
  • 第三层:本地ISP

因特网的组成:

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

三种交换方式

1、电路交换:
电话交换机接通电话线的方式称为电路交换
电路交换的3个步骤:

  • (1)建立连接(分配通信资源)
  • (2)通话(一直占用通信资源)
  • (3)释放连接(归还通信资源)

2、分组交换:
将报文分组,加上首部,首部能让数据经过路由器到达目的机,到达后去掉首部成为完整报文

  • 发送方:构造分组,发送分组
  • 路由器:缓存分组,转发分组
  • 接收方:接受分组,还原报文

3、报文交换:….

电路交换、报文交换、分组交换的对比:

电路交换:建立连接——>数据传送——>释放连接

  • 优点:通信时延小、有序传输、没有冲突、适用范围广、实时性强、控制简单
  • 缺点:建立连接时间长、线路独占效率低、灵活性差

报文交换:随时发送报文,报文先传到相邻节点交换机,不断进行转发

  • 优点:无需建立连接、动态分配线路、提高线路可靠性、提高线路利用率、提供多目标服务
  • 缺点:引起了转发时延、需要较大存储缓存空间、需要传输额外信息量

分组交换:分组不断传到附近的节点,节点会缓存直到传出去(存储转发)

  • 优点:无需建立连接、线路利用率高、简化了存储管理、加速传输、减少出错概率
  • 缺点:引起了转发时延,需要传输额外数据量

计算机网络的定义和分类

计算机网络的定义:
简单的定义:一些互相连接的、自治的计算机的集合(互连、自治)

  • 互连:计算机互相连
  • 自治:计算机有自己的硬件和软件
  • 较好的定义:由一些通用的、可编程的硬件互连而成,可以用来传送不同类型- 的数据,支持广泛和日益增长的应用

计算机网络的分类:

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

计算机网络的性能指标

性能指标:

  • 速率、带宽、吞吐量、时延、时延带宽积、往返时间、利用率、丢包率

速率:

  • 连接在计算机网络上的主机在数字信道上传送比特的速率,也成为比特率数据率
  • 比特:8 bit = 1 Byte
  • 常用单位:bit/s、kb/s = 10^3 b/s、Mb/s
  • MB是数据量单位中的,是2^20 B = 8*2^20 b,而Mb/s是速率单位中的,值是10^6 b

带宽:

  • 模拟信号中的意义:
    • 信号所包含的不同频率成分所占据的频率范围,单位:Hz
  • 计算机网络中的意义:
    • 网络带宽代表单位时间内网络中某一点到另一点所能通过的最大数据率
    • 单位:b/s

吞吐量:

  • 单位时间内通过某个网络的数据量
  • 受网络带宽或额定速率的限制

时延:

  • 发送时延、传播时延、处理时延
  • 发送时延 = 分组长度(b) / 发送速率(b/s)
  • 传播时延 = 信道长度(m) / 电磁波传播速率(m/s)
    • 电磁波传输速率:自由空间:3×10^8
    • 铜线:2.3×10^8
    • 光纤:2.0×10^8

时延带宽积:

  • 时延带宽积 = 传播时延 × 带宽

往返时间:

  • 双向交互一次所需的时间

利用率:

  • 信道利用率:
    某信道有百分之几的时间是被利用的
  • 网络利用率:
    全网络的信道利用率的加权平均
  • 信道利用率并非越高越好,利用率越高时延越大

丢包率:

  • 分组丢失率,一定时间范围内传输过程中丢失的分组数量与总分组数量的比率
  • 分组丢失2种情况:
    • 传输过程种出现误码
    • 到达一台队列已满的交换机时被丢弃,可能造成网络拥塞

计算机网络体系结构(重点、难点)

1、常见计算机网络体系结构

OSI体系标准:

  • 应用层、表示层、对话层、运输层、网络层、数据链路层、物理层

TCP/IP体系结构(事实上的国际标准)

  • 应用层:HTTP、SMTP、DNS、RTP…
  • 传输层:TCP、UDP
  • 网际层:IP
  • 网络接口层:网络接口…

原理体系结构(适于教学):

  • 物理层、数据链路层、网络层、运输层、应用层

2、计算机网络结构分层的必要性
原理体系结构:

  • 应用层:通过应用进程的交互来实现特定网络应用的问题
  • 运输层:进程之间基于网络的通信问题
  • 网络层:分组在多个网络上传输(路由)的问题
  • 数据链路层:分组在一个网络上传输(同一段链路)的问题
  • 物理层:使用何种信号传输比特

3、计算机网络体系结构分层思想举例
主机:

  • 应用层构建HTTP请求报文
  • 运输层在HTTP请求报文上添加TCP,成为TCP报文段
  • 网络层给TCP报文段添加IP首部,成为IP数据报
  • 数据链路层给IP数据报添加首部和尾部,使之成为帧
  • 物理层将帧看作比特流,在比特流前面添加前导码,变成相应信号经过传输媒体

路由器:
处理。。。

web服务器:

  • 物理层去掉前导码
  • 数据链路层去掉首部和尾部
  • 网络层去掉IP首部
  • 运输层去掉TCP报文段
  • 应用层对HTTP请求报文进行解析,再向主机发送响应报文

响应报文的流程与上面类似

4、计算机网络体系结构中的专用术语
实体:任何可发送或接收信息的硬件软件进程
对等实体:收发双方相同层次中的实体(如双方各自的运输层)
协议:控制两个对等实体进行逻辑通信的规则的集合

  • 协议的三要素:语法、语义、同步
    • 语法:定义所交换信息的格式
    • 语义:定义收发双方所要完成的操作
    • 同步:定义收发双方的时序关系
    • 协议控制本层向上一层提供服务
    • 协议是“水平的”,服务是“垂直的

服务访问点:同一系统中相邻两层的实体交换信息的逻辑接口
服务原语:上层使用下层提供的服务必须通过与下层交换一些命令
协议数据单元PDU:对等层次至间传送的数据包
服务数据单元SDU:同一系统内层与层至间交换的数据包

小结

因特网概述:网络、互联网、因特网的基本概念
三种交换方式:电路交换、分组交换(重点)、报文交换
计算机网络的定义和分类:定义、分类(重点)
计算机网络的性能指标:重点:时延、利用率

计算机网络的体系结构(重点):

  • 常见的计算机网络体系结构:OSI、TCP/IP、五层协议
  • 分层的重要性
  • 分层思想举例
  • 专用术语

习题

传输层:端到端
TCP/IP参考模型的网络层提供的是无连接不可靠的数据报服务
TCP/IP体系结构中直接为 ICMP 提供服务的是 IP
POP3协议服务提供:有连接可靠的

发送时延 = 分组长度(b) / 发送速率(b/s)
传播时延 = 信道长度(m) / 电磁波传播速率(m/s)
接收信息耗费时间 = 发送时延 + 传播时延(忽略路由器处理时延)

报文交换:路由器接收完之后才能转发
分组交换:接到一个分组之后就能转发

物理层

物理层的基本概念

传输媒体:

  • 导引型、非导引型

协议的主要任务:

  • 机械特性
  • 电气特性:电压的范围
  • 功能特性:电压表示何种意义
  • 过程特性:事件的出现顺序

物理层下面的传输媒体

导引型传输媒体:

  • 同轴电缆、双绞线、光纤、电力线

非导引型传输媒体:

  • 无线电波、微波、红外线、可见光

传输方式

串行传输和并行传输:

  • 串行:1 BIT 1 BIT 传
  • 并行:一次发送n个 BIT

同步传输和异步传输:

  • 同步传输:收发双方时钟同步
    • 外同步:在收发双方之间添加一条单独的时钟信号线
    • 内同步:发送端将时钟信号编码到发送信号中一起传输
  • 异步传输:
    • 字节之间异步(字节之间的时间间隔不固定)
    • 字节中的每个比特仍然要同步(各比特的持续时间一样)

单工、半双工、全双工:

  • 单向通信(单工):信息传输只有一个方向
  • 双向交替通信(半双工):可以相互传输信息,但不能同时进行
  • 双向同时通信(全双工):可以同时互相发送信息

编码与调制

码元:代表不同离散数值的基本波形

  • 简单来说:信号的一段波形

常用编码:

  • 不归零编码NRZ(存在同步问题):
    • 需要额外一根传输线来传输时钟信号
    • 对于计算机网络,宁愿利用这跟线传输数据信号也不传时钟信号
  • 归零编码RZ(自同步,编码效率低):
    • 每个码元传输结束后信号都要“归零”
    • 大部分数据带宽都用来传输“归零”而浪费掉了
  • 曼彻斯特编码:
    • 码元中间的跳变既表示时钟,又表示数据
  • 差分曼彻斯特编码:
    • 跳变仅表示时钟
    • 码元开始处电平是否发生变化表示数据

基本调制方法:

  • 数字基带信号
  • 调幅:无载波输出表示0,有载波输出表示1
  • 调频:
  • 调相:初相位0度表示0,初相位180度表示1

混合调制:

  • 正交振幅调制QAM-16:相位和振幅可以结合起来一起调制
    如:若采用4个相位,每个相位4种振幅
    则有16个种不同码元,用比特表示的话需要4个比特
    则每个码元携带信息量为4比特

信道的极限容量

奈氏准则: 在假定的理想条件下,为了避免码间串扰,码元传输速率是有上限的

  • 理想低通信道的最高码元传输速率 = 2 W 码元/秒
  • 理想待通信道的最高码元传输速率 = W 码元/秒
  • W:信道带宽(Hz)
  • Baud:波特,即 码元/秒
  • 当1个码元携带1比特信息量时,波特率和比特率相等
  • 当1个码元携带n比特信息量时,波特率转换成比特率,数值要乘n
  • 要设法让每一个码元携带更多比特的信息量,要采用多元制

香农公式:

  • c = W × log2(1 + S/N)
  • c:信道的极限信息传输速率
  • W:信道带宽
  • S:信道内所传信号的平均功率
  • N:信道内的高斯噪声功率
  • S/N:信噪比
    • 信噪比(dB)= 10 × log10(S/N)

数据传输速率 = 波特率 × 每个码元所携带的信息量

物理层小结

物理层的基本概念:

  • 物理层所要解决的问题
  • 物理层协议的主要任务

物理层下面的传输媒体(了解就行):

  • 导引型
  • 非导引型

传输方式

  • 串行传输和并行传输
  • 同步传输和异步传输
  • 单工、半双工、双工

编码与调制

  • 常用术语:消息、数据、信号
  • 编码
  • 调制
  • 码元
    信道的极限容量

习题

数据链路层

数据链路层概述

主机有物理层到应用层共5层,路由器只有物理层到网络层3层
链路:从一个结点到相邻结点的一段物理线路
数据链路:把实现通信协议的硬件和软件加到链路上,成了数据链路
数据链路层的三个重要问题

  • 封装成帧:
    给数据加帧头和帧尾
  • 差错检测:
    帧在传输过程可能出现误码
    通过检错码来发现,检错码封装在帧尾
  • 可靠传输:
    接收到有误码的帧会将其丢弃
    若能实现发送方发送什么,接收方就能受到什么,就称为可靠传输

使用广播信道的数据链路层:
将地址封装在帧头,判断哪个主机传给哪个主机

封装成帧

数据链路层给上层交付的协议数据单元添加帧头和帧尾,使之称为帧

  • 帧头和帧尾中包含有重要的控制信息
  • 帧头和帧尾的作用之一就是帧定界(帧多长)

透明传输:数据链路层对上层交付的传输数据没有任何限制

  • 使用字节填充:对于传下来的数据里出现的帧定界符或转义字符,前面都加上转义字符
  • 使用比特填充:每5个连续的比特1后面插一个比特0

为了提高帧的传输效率,应当使帧的数据部分长一点
数据部分长度上限:最大传送单元MTU

差错检测

比特差错:传输过程中1可能变0,0可能变1
传输错误的比率占总比特数的比率称为误码率BER
使用差错检测码来检测是否有比特差错
奇偶校验
在待发送数据后面添加1位奇偶校验位,使整个数据中‘1’的个数为奇数(奇校验)或偶数(偶校验)
如果有奇数个位发生误码,可以检查出误码
如果有偶数个位发生误码,则不能检查出误码(漏检)
循环冗余校验
手法双方约定好一个生成多项式
发送方基于发送的数据和生成多项式计算出差错检测码
通过生成多项式来计算是否产生误码
检错码只能检测出帧在传输过程中出现了差错,但无法纠正错误
循环冗余校验CRC有很好的检错能力,被广泛应用

可靠传输的基本概念

使用差错检测技术(如CRC),接收方可以检测出是否产生误码
不可靠传输服务:仅仅丢弃有误码的帧,其他啥都不做
可靠传输服务:想办法实现发送端发什么,接收端就收到什么
无线链路易受干扰,数据链路层必须向上层提供可靠传输服务
传输差错还包括分组丢失、分组失序、分组重复
可靠传输服务不局限于数据链路层,其他各层均可选择实现可靠传输

可靠传输

可靠传输的基本概念

使用差错检测技术(如CRC),接收方可以检测出是否产生误码
不可靠传输服务:仅仅丢弃有误码的帧,其他啥都不做
可靠传输服务:想办法实现发送端发什么,接收端就收到什么
无线链路易受干扰,数据链路层必须向上层提供可靠传输服务
传输差错还包括分组丢失、分组失序、分组重复
可靠传输服务不局限于数据链路层,其他各层均可选择实现可靠传输

可靠传输的实现机制——停止-等待协议

正常情况:
发送方给接收方发DATA(数据分组)
接收方收到后进行差错检测,无误码则接收,并给发送方发送ACK(确认分组)
发送方收到ACK,才能发送下一个DATA
若接收方发现误码,则丢弃该DATA,并给发送方发送NAK(否认分组),发送方重传
发送方发送数据丢失:
若发送方发送的DATA传输时丢失了,接收方收不到DATA,也不会发送ACK或NAK
为解决该问题,可以在发送方发送完一个数据分组时,启动一个超时计时器。若到了超时计时器设置的重传时间,则重传,这就叫超时重传。
一般重传时间略大于“发送方到接收方的平均往返时间”
接收方发送ACK丢失:
例如接收方发送的ACK在传输过程中丢失,发送方会超时重传
为了判断是否是一个重复的分组,要给每个数据分组带上序号。如DATA 0,DATA 1…
接收方发送ACK迟到:
可能导致对于一个DATA重复确认
对于接收方的ACK也应该带上序号,如ACK 0,ACK 1…
停止-等待协议打的信道利用率:
U = Td / Td + RTT + Ta

可靠传输的实现机制——回退N帧协议

  1. 采用3个比特给分组编序号,即序号0-7
  2. 发送窗口的尺寸 Wt 的取值:1 < Wt <= 2^3-1,本例取Wt = 5
  3. 接收窗口的尺寸 Wr 只能为1

累计确认:接收方不一定对收到的数据分组逐个发送确认,而可以在收到几个数据分组后,对按序到达的最后一个数据分组发送确认。ACKn表示序号为n及以前的所有数据分组都已正确接收。
优点:即使确认分组丢失,发送方也可能不必重传!

若发送窗口的尺寸 Wt 超过了上限,接收方无法分辨新、旧数据分组
1 < Wt < 2^n-1
Wt = 1 停止-等待协议
Wt > 2^n-1 接收方无法分辨新、旧数据分组
接收方接收窗口尺寸 Wr = 1

选择重传协议SR

接收窗口 Wr 不应再等于1,而应大于1
接收方不能用累计确认,要逐一确认
1 < Wt < 2^(3-1)
接收窗口的尺寸 Wr = Wt = 4
接收方接收到数据分组会返回确认分组,发送每按序收到一个确认分组,发送窗口向前滑动一个位置。

点对点协议PPP

提供了一个标准方法,主要由三部分构成:
对各种协议数据报的封装方法(封装成帧)
链路控制协议LCP
网络控制协议NCPs
帧格式:
帧首部:F、A、C、P
标志Flag、地址Address(没用)、控制Control(没用)、协议Protocol
帧尾部:FCS、F
帧检验序列FCS、标志Flag
透明传输:
数据部分可能会出现标志Flag,影响读取
实现透明传输的方法:
面向字节的异步链路:字节填充(插转义字符)
面向比特的同步链路:比特填充
发送方:发现5个连续的比特1,就填充1个比特0
接收方:发现5个连续的比特1,就去掉后面那1个比特0
差错检测:

工作状态:(?)
静止——>建立——>鉴别(鉴别失败进入终止状态)——>网络——>打开——>终止

信道

媒体接入控制的基本概念

共享信号要考虑如何调和多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC
分为:
静态划分信道(不灵活):
频分多址、时分多址、码分多址
动态接入控制:
受控接入(集中控制和分散控制)、随机接入

静态划分信道

信道复用:
用一条物理线路同时传输多路用户的信号
频分复用、时分复用、码分复用
码分复用:
每个比特时间分为m个短的间隔,称为码片
使用CDMA的每一个站被指派一个唯一的m bit码片序列
一个站如果发1,发送m bit码片序列
发0,发码片序列的二进制反码
按惯例把码片序列中0写为-1,1写为+1
若计算结果为1,被判断的站发送了比特1
若计算结果为-1,被判断的站发送了比特0
若计算结果为0,被判断的站未发送数据

随机接入CSMA/CD

多址接入MA:
多个站连接在一条总线上,竞争使用总线
载波监听CS:
没一个站在发送帧之前要检测一下总线上是否有其他站点在发送帧(先听后说)
发现总线空闲96比特时间,则发送这个帧
碰撞检测CD:
每一个正在发送帧的站边发送边检测碰撞(边听边说)
争用期(碰撞窗口):
端到端传播时延为 tao(tao是那个希腊字母)
tao = 端到端总距离 / 信号传播速度
主机最多经过 2 tao 可以检测到本次发生是否遭受了碰撞
2 tao 称为争用期或碰撞窗口
最小帧长:
以太网规定最小帧长为64字节,即512比特(512比特即为争用期)
以太网的最小帧长却表了主机在发送完成前就检测到帧的发送过程中是否发生了碰撞。
收到的帧小于64字节则认为遭遇了碰撞,丢弃该帧
最小帧长 = 争用期 × 数据传输速率
最大帧长:
帧也不能太长,否则接收缓存区会紧张,别的主机等待时间也会太长
截断二进制指数退避算法:
退避时间 = 基本退避时间(2 tao) × 随机数r
可以让重传需要推迟的平均时间增大,减小碰撞概率
重传16次不成功,说明发帧的主机太多,则丢弃该帧,向高层报告
信道利用率:
极限信道利用率:Smax = 1/(1+a)
a = tao/T0

媒体接入控制——动态接入控制——随机接入

CSMA/CA
。。。。

地址

MAC地址、IP地址、ARP协议

MAC地址 属于数据链路层
IP地址 和 ARP协议 属于网际层
MAC地址:
多个主机连在一个广播信道上,每个主机要有一个地址
每个主机发送的帧中必须携带标识发送主机和接收主机的地址,这类地址被称为MAC地址
MAC地址也被称为硬件地址
MAC地址是对网络上各接口的唯一标识,而不是各设备的唯一标识

MAC地址格式:

  • 48个比特构成,每8个比特是1个字节
  • 前3个字节:组织唯一表示OUI
  • 后3个字节:网络接口标识符
  • 第一字节的b0位:0单播、1双播
  • 第一字节的b1位:0全球管理、1本地管理

单播:一个发给一个
多播:一个发给多个

IP地址

IP地址是因特网上主机和路由器使用的地址
网络编号:标识因特网上数以万计的网络
主机编号:标识同一网络上不同主机
数据转发过程中源IP地址和目的IP地址保持不变,而源MAC地址和目的MAC地址逐段链路改变

ARP协议

地址解析协议ARP
每个主机有一个ARP高速缓存表
ARP高速缓存表中记录了 IP 地址和 MAC 地址的对应关系

若未在表中找到,则发送ARP请求报文(广播):

  • 我的IP地址为…
  • 我的MAC地址为…
  • 我想知道IP地址为…的主机的MAC地址

ARP响应报文(单播):

  • 我的IP地址为…
  • 我的MAC地址为…

ARP高速缓存表中每一条记录都有类型:

  • 动态:自动获取,生命周期默认为两分钟
  • 静态:手工设置,不同操作系统下的生命周期不同

ARP协议只能在一段链路上使用

集线器与交换机的区别

集线器(淘汰):

  • 使用集线器的以太网在逻辑上仍是一个总线网,使用CSMA/CD协议
  • 集线器只工作在物理层

以太网交换机:

  • 一个主机要给另一个主机发单播帧,单播帧进入交换机之后,交换机将帧转发给那个主机,而不会让其他主机接收到(集线器会)
  • 以太网交换机通常有多个接口,一般工作在全双工方式
  • 以太网交换机有并行性,能同时连通多个接口,同时通信无碰撞
  • 以太网交换机工作在数据链路层,收到帧后在帧交换表中查找帧的目的MAC地址对应接口号

帧的两种转发方式:

  1. 存储转发
  2. 直通转发

交换机之扩大广播域,不扩大碰撞域

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

以太网交换机工作在数据链路层(也包括物理层)
收到帧后在帧交换表中查找帧的目的MAC地址对应接口号,通过该接口转发帧
以太网交换机通过自学习算法自动逐渐建立帧交换表

自学习算法:

  • 帧从接口进入时,交换机对帧交换表进行登记(MAC地址 接口)(自学习)
  • 转发时,查找表,找不到对应的MAC地址,则转发(盲目泛洪)
  • 若查表时找到了,则转发(明确)

帧交换表中每条记录有自己的有效时间,到期自动删除

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

添加冗余链路可以提高以太网的可靠性
但是冗余链路会带来负面效应——形成网络环路

网络环路会带来以下问题:

  • 广播风暴(死循环):
    • 大量消耗资源
  • 主机收到重复的广播帧
    • 大量消耗主机资源
  • 交换机的帧交换表震荡(漂移)

以太网交换机使用生成树协议STP,可以在增加冗余链路的同时避免网络环路带来的问题

  • 无论交换机之间采用什么物理连接,交换机都能自动计算并构建一个逻辑上无环路的网络
  • 最终生成的树型逻辑拓扑要确保连通整个网络
  • 首次连接交换机或网络物理拓扑发生变化时,交换机进行生成树的重新计算

虚拟局域网

虚拟局域网VLAN概述

巨大的广播域会带来很多弊端:

  • 广播风暴、难以管理和维护、安全问题…
  • 广播风暴会浪费网络资源和各主机的CPU资源

网络中会频繁出现广播信息

分割广播域的方法:

  • 使用路由器可以隔离广播域

虚拟局域网:

  • 将局域网内的设备划分为与物理位置无关的逻辑组的技术,这些逻辑组有某些共同的需求
  • 同VLAN内可以广播通信,不同VLAN不能广播通信

虚拟局域网VLAN的实现机制

IEEE 802.1Q帧:

  • 对MAC帧进行扩展,插入4字节VLAN标记
  • VLAN标记最后12比特称为VLAN标识符VID,标志了以太网属于哪个VLAN
  • VID有效取值范围:1~4094
  • 当交换机收到普通的以太网帧,将其插入4字节VLAN标记,简称“打标签”
  • 转发帧时,可能会删除其4字节VLAN标记转变为普通以太网帧,简称“去标签”

交换机的端口类型:
有三种:

  • Access、Trunk、Hybrid
    交换机各端口的缺省VLAN ID

Access端口:

  • 一般用于用户间互连
  • 可以设置端口的PVID值(默认1)
  • 方法:
    • 只接受“未打标签”的帧,根据端口的PVID“打标签”
    • 若帧中的VID与端口PVID相等,则“去标签”并转发

Trunk端口:

  • 一般用于交换机间或交换机与路由器间互连
  • 可以设置端口的PVID值(默认1)
  • 方法:
    • 接收“未打标签”的帧,根据端口的PVID“打标签”
    • 接收”已打标签“的帧
    • 对VID等于PVID的帧,“去标签”再转发
    • 对VID不等于PVID的帧,直接转发(不去标签)

网络层

网络层概述

网络层的主要任务是实现网络互连,进而实现数据包在个网络之间的传输

网络层要解决的问题:

  • 网络层向运输层提供怎样的服务(可靠传输还是不可靠传输)
  • 网络层寻址问题
  • 路由选择问题

因特网使用 TCP/IP 协议栈
由于 TCP/IP 协议的网络层使用网际协议IP,他说整个协议栈的核心协议,因此 TCP/IP 协议中的网路层常称为网际层

网络层提供的两种服务

面向连接的虚电路服务:

  • 可靠通信由网络来保证
  • 必须建立网络层的连接——虚电路VC
  • 通信双方沿着已建立的虚电路发送分组
  • 目的主机的地址仅在建立阶段使用,之后每个分组首部只需携带一条虚电路的编号
  • 通信结束后,需要释放之前所建立的虚电路

无连接的数据报服务:

  • 可靠通信由用户主机来保证
  • 不需要建立网络层连接
  • 每个分组可以走不同的路径
  • 分组的首部必须携带目的主机的完整地址
  • 传送的分组可能误码、丢失、重复、失序
  • 网络本身不提供端到端的可靠传输服务
  • 将复杂的网络处理功能置于因特网边缘

IPv4地址

IPv4地址概述

IPv4地址是给因特网的每一台主机(或路由器)的每一个接口分配一个全世界范围内唯一的32比特的标识符

IPv4地址采用点分十进制表示方法

  • 32比特每8位分为一组
  • 写出每组的十进制数
  • 写成点分十进制形式:例:10.240.15.170

分类编址的IPv4地址

A类:开头0,网络号8位,主机号24位
B类:开头10,网络号16位,主机号16位
C类:开头110,网络号24位,主机号8位
D类:开头1110
E类:开头1111
只有A、B、C类地址可以分配给主机或路由器
主机号“全0”的地址是网络地址,不能分给主机路由器的各接口
主机号“全1”的地址是广播地址,不能分给主机路由器的各接口
1、根据左起第一个十进制数的值,可以判断网络类别(小于127 A类,128191 B类,192223 C类
2、根据网络类别可以找出地址的网络号和主机号部分(A类第一个字节、B类前两个字节、C类前三个字节

划分子网的IPv4地址

32位的子网掩码可以表明IP地址的主机号部分被借用了几位作子网号
子网掩码用连续的 比特1对应网络号和子网号
连续的 比特0对应主机号
将划分子网的IPv4地址于其子网掩码进行逻辑与运算可以得到IPv4地址所在子网的网络地址
默认子网掩码是指未划分子网的情况下使用的子网掩码

无分类的IPv4地址

无分类域间路由选择 CIDR

  • CIDR 消除了A类、B类和C类地址
  • CIDR 可以更有效分配IPv4地址空间
  • CIDR 使用“斜线记发”:
    例:128.14.36.7 / 20(网络前缀占用的比特数:20,主机编号占用的比特数:32-20=12)
  • CIDR 实际上是将网络前缀相同的连续的IP地址组成一个“CIDR地址块”

路由聚合(构造超网):

  • R1将路由信息告诉R2:共同前缀

IPv4地址的应用规划

定长的子网掩码:使用同一个子网掩码来划分子网
变长的子网掩码:使用不同的子网掩码来划分子网
定长:

  • 每个子网分配到的地址数相同
    变长:
  • 每个子网分配到的地址数可以不同

IP数据报的发送和转发过程

包含两部分:

  • 主机发送IP数据报
  • 路由器转发IP数据报

同一网络中主机通信:直接交付
不同网络的主机通信:间接交付(通过路由器周转)

如何知道目的主机在不在同一个网络中:

  • 将自己的主机地址和目的地址都和子网掩码相与(求网络地址),对比是否相等

路由器IP地址作为网络中各主机的默认网关(发给路由器转发给其他网络)
路由器可以抑制网络风暴

静态路由配置及其可能产生的路由环路问题

静态路由配置是指人工配置路由表

可能的错误:

  • 配置错误、聚合了不存在的网络、网络故障

静态路由:

  • 类型:静态

默认路由:

  • 目的网络:0.0.0.0/0(不知道去哪时走这条)
  • 类型:静态

特定主机路由:

  • 目的网络:特定主机地址
  • 类型:静态

配置错误:

  • 解决:
    • 为了防止IP数据报在路由环路中永久兜圈,IP数据报首部设有生存时间TTL字段
    • IP数据报进入路由器后,TTL字段值-1,TTL=0时,被丢弃

聚合了不存在的网络:

  • 解决:在路由表里添加黑洞路由,黑洞路由的下一跳是null0

网络故障:

  • 解决:
    检测到故障时,添加该故障网络的黑洞路由,避免走默认路由造成环路
    一段时间后故障恢复正常,就将那个黑洞路由设置为失效状态

路由协议

路由选择协议概述

分为:

  • 静态路由选择,动态路由选择

静态路由选择:人工配置
动态路由选择:路由器通过路由选择协议自动获取路由信息

因特网的路由选择协议的特点:

  • 自适应:动态路由选择
  • 分布式:路由器之间交换路由信息
  • 分层次:整个因特网划分为许多较小的自治系统AS

路由选择协议:

  • 内部网关协议IGP
    • 路由信息协议RIP、开放式最短路径优先OSPF
  • 外部网关协议EGP
    • 边界网关协议BGP

路由器的基本结构:

  • 路由选择部分:
    • 路由选择处理机
  • 分组转发部分:
    • 输入端口、交换结构、输出端口

路由信息协议RIP的基本工作原理

要求每一个路由器维护它自己到AS内每一个网络的距离记录,称为距离向量D-V
RIP用跳数作为度量:

  • 相邻路由器的跳数为1
  • 当跳数为16认为太远,不可达

RIP只适用于小型互联网
当到达同一目的网络由多条”距离相等“的路由,可以进行等价负载均衡

RIP要点:

  • 和谁交换:仅和相邻路由器交换信息
  • 交换什么:自己的路由表
  • 何时交换信息:周期性交换

RIP路由条目的更新:

  • 有点像dijkstra

RIP存在”坏消息传得慢“的问题:又称为路由环路

开放最短路径优先OSPF的基本工作原理

OSPF是基于链路状态的,而非距离向量
保证了不会产生路由环路
不限制网络规模,收敛速度快

链路状态是指本路由器和哪些路由器相邻,以及链路的”代价“

  • 思科路由器中OSPF计算代价的方法:100Mbps / 链路带宽:
  • 计算结果小于1的记为1,大于1的舍去小数

路由器间通过交互问候(hello)分组,建立邻居关系:

  • 发送周期为10秒
  • 40秒未收到邻居路由器的Hello分组,认为该邻居路由器不可达

每个路由器会产生链路状态通告LSA,包含:

  • 直连网络的链路状态信息
  • 邻居路由器的链路状态信息

OSPF有五种分组:

  • 问候组、数据库描述分组、链路状态请求分组、链路状态更新分组、链路状态确认分组

OSPF把一个自治系统分为更小的范围,叫做区域

  • 主干区域、区域

边界网关协议BGP的基本工作原理

在不同的自治系统内,度量路由的“代价”(距离、带宽等)可能不同
所以对于自治系统之间的路由选择,使用“代价”作度量是不行的
BGP只是力求寻找一条到达目的网络比较好的路由(不能兜圈子)

配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人

不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179

  • 在此TCP连接上交换BGP报文,来建立BGP会话
  • 利用BGP会话交换路由信息
  • 使用TCP连接交换路由信息的两个BGP发言人,彼此称对方为邻站对等站

BGP发言人交换网络可达性的信息
各BGP发言人根据所采用的策略找出到达各自治系统较好的路由

BGP-4有以下4种报文:

  • 打开报文、更新报文、保活报文、通知报文

IPv4数据报的首部格式

分为:

  • 固定部分(20字节)、可变部分(40字节)

固定部分:

  • 版本、首部长度、区分服务、总长度、标识、标志、片偏移、生存时间、协议、首部检验和、源IP地址、目的IP地址
  • 片偏移:要是整数
  • 生存时间:防止IP数据报在网络种永久兜圈
  • 协议:指明IPv4数据报的数据部分是何种协议数据单元

网际控制报文协议ICMP

主机或路由器使用ICMP来发送差错报告报文询问报文

ICMP差错报告报文有以下5种:

  • 重点不可达:不知道如何转发该IP数据报,丢弃,并向源点发送报文
  • 源点抑制:因阻塞而丢弃,向源点发送报文
  • 时间超过:TTL-1后=0,向源点发送时间超过报文
  • 参数问题:首部在传输过程中出现误码,丢弃,并向源点发送报文
  • 改变路由:路由器让主机知道下次应将数据报发给另外的路由器(可通过更好的路由)

常用的ICMP询问报文有以下2种:

  • 回送请求和回答、时间戳请求和回答

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

虚拟专用网VPN:

网络地址转换NAT:

  • 用NAT路由器

运输层

运输层概述

物理层、数据层、网络层实现了主机到主机的通信
但实际上通信的真正实体是位于通信两端主机中的进程。
运输层的任务:如何为运行在不同主机上的应用进程提供直接的通信服务
可以看作是运输层直接为应用进程之间的逻辑通信提供服务(其实并不是)

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

端口号:
运行在计算机上的进程用进程标识符PID来表示
不同操作系统又使用不同格式的进程标识符
要使用统一的方法对TCP/IP体系的应用进程进行标识
TCP/IP协议用端口号来区分不同应用进程

端口号用16比特表示,取值0~65535:

  • 熟知端口号:0~1023(如HTTP用80、DNS用53)
  • 登记端口号:1024~49151(要在IANA按照规定的手续登记)
  • 短暂端口号:49152~65535(留给客户进程选择暂时使用)

端口号只具有本地意义,不同计算机中的相同端口号没有联系

发送方的复用和接收方的分用:

  • 复用:UDP复用和TCP复用
  • 分用:UDP分用和TCP分用

UDP、TCP属于运输层,IP协议属于网络层

UDP和TCP的对比

UDP和TCP是TCP/IP体系结构运输层中的两个重要协议
UDP:随时发送数据
TCP:“三报文握手”建立连接,之后数据传输,“四报文挥手”释放连接

所以:

  • UDP:无连接
    TCP:面向连接
  • UDP:支持单播、多播以及广播
    TCP:仅支持单播
  • UDP:面向应用报文
    TCP:面向字节流
  • UDP:向上层提供无连接不可靠传输服务(适用于IP电话、视频会议等实时服务)
    TCP:向上层提供面向连接可靠传输服务(例如文件传输)

用户数据报:

  • UDP:首部仅8字节
  • TCP:首部最小20字节,最大60字节

TCP的流量控制

流量控制:让发送方的发送速率不要太快,要让接收方来得及接收。
利用滑动窗口机制可以实现

举例:

  • A给B发送数据,B对A流量控制
  • B接收到数据可以对以前的数据进行累计确认,累计确认后A窗口滑动
  • B可以向A发送报文调整接收窗口
  • 确认报文段:rwnd(接收窗口),ack(希望下一个数据的序号)
  • 接收窗口为0时A不能再发送
  • 窗口为0时定期发送零窗口探测报文,防止死锁(永远发不了数据)

TCP的拥塞控制

拥塞:在某段时间,对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。
若出现拥塞而不控制,网络的吞吐量随输入负荷的增大而下降
发送方发送TCP数据报文,接收方发送TCP确认报文
发送方维护一个叫拥塞窗口cwnd的状态变量,值取决于网络的拥塞程度,并且动态变化
发送方将拥塞窗口作为发送窗口swnd,即swnd=cwnd
慢开始门限:ssthresh
cwnd<ssthresh时,用慢开始算法
cwnd>=ssthresh时,用拥塞避免算法

慢开始:每次传输轮次结束,cwnd翻倍

拥塞避免:每次传输轮次结束,cwnd+1
当发送方判断网络可能出现拥塞,进行以下工作:

  • 将ssthresh值更新为发送拥塞时的cwnd的一半
  • 将cwnd值变为1,重新开始执行慢开始算法

快重传:

  • 接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认
  • 即使收到了失序的,也要立即发出对已收到的报文段的重复确认
  • 发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传

发送方一旦收到3个重复确认,就知道只是丢失了个别的报文段,于是不启动慢开始算法
而是执行快恢复算法

  • 发送方将ssthresh和cwnd值调整为当前窗口的一半,开始执行拥塞避免算法

TCP超时重传时间的选择

这是TCP最复杂的问题之一
往返时间:RTT
超时重传时间:RTO
超时重传时间的值RTO应略大于往返时间RTT
不能直接使用某次测得的RTT样本来计算RTO

要利用每次测量到的RTT样本,计算加权平均往返时间RTTs:

  • 新的RTTs = (1-α)× 旧的RTTS + α × 新的RTT样本

推荐的α值为0.125
RTO = RTTs + 4×RTTd

RTT偏差的加权平均RTTd:

  • RTTd1 = RTT1 ÷ 2
  • 新的RTTd = (1-β)× 旧的RTTd + β × | RTTs - 新的RTT样本 |

推荐的β值为0.25

往返时间RTT的测量比较复杂:
报文段每重传一次,就把超时重传时间RTO增大一些。
典型的做法是:出现超时重传时,新RTO = 2倍旧的RTO。

TCP可靠传输的实现

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

发送窗口有前沿、后沿:

  • 后沿之前的数据已经发送并被确认接收,可以删除
  • 前沿之后的数据不允许发送
  • 发送窗口内的数据可以发送

发送窗口和接收窗口并不总是一样大(网络有时间滞后)
TCP通常对于不按序到达的数据是先临时存在接收窗口中,等待字节流中缺少的字节收到后,再按序交付上层的应用进程
TCP要求接收方必须有累计确认和捎带确认机制。接收方在自己有数据要发送时把确认信息顺便捎带上。
接收方不应该过分推迟发送确认。
TCP的通信是全双工通信。通信中的每一方都在发送和接收报文段,每一方都有自己的发送窗口和接收窗口。

TCP的运输连接管理

TCP的运输连接管理——TCP的连接建立

TCP运输连接有以下3个阶段:

  1. 建立TCP连接(三报文握手)
  2. 数据传送
  3. 释放TCP连接(四报文挥手)

三报文握手:

  • 服务器创建传输控制块,存储重要信息,进入监听状态
  • 客户端创建传输控制块,发送TCP连接请求,进入同步已发送状态
    (SYN=1,seq=x)
  • 服务器接收到后,发送TCP连接请求的确认,进入同步已接收状态
    (SYN=1,ACK=1,sql=y,ack=x+1)
  • 客户端接收到后,发送针对TCP连接请求的确认的确认,进入连接已建立状态
    (ACK=1,seq=x+1,ack=y+1)
  • 服务器接收到后,进入连接已建立状态

TCP的运输连接管理——TCP的连接释放

四报文挥手:

  • 客户端发送TCP连接释放,进入终止等待1状态
    (FIN=1,ACK=1,seq=u,ack=v)
  • 服务器收到后,发送TCP普通确认,进入关闭等待状态,此时服务器还可以继续发未发完的数据
    (ACK=1,seq=v,ack=u+1)
  • 客户端收到后,进入终止等待2状态
  • 等服务器数据传输完成,发送TCP连接释放,进入最后确认状态
    (FIN=1,ACK=1,seq=w,ack=u+1)
  • 客户端收到后,发送TCP普通确认,进入时间等待状态,2MSL后进入关闭状态
    (ACK=1,seq=u+1,ack=w+1)
  • 服务器收到后,进入关闭状态

MSL:最长报文段寿命

保活计时器:

  • 服务器每收到一次客户进程的数据,就重新设置并启动保活计时器(2小时定时)
  • 若定时周期内未收到客户端发来的数据,到时间后,服务器发送一个探测报文段,之后每隔75秒发一个,一连发10次后仍无响应,就关闭连接。

TCP报文段的首部格式

为了实现可靠传输,TCP用了面向字节流的方式
TCP在发送数据时,是从发送缓存取出一部分或全部字节并给其添加一个首部,使之称为TCP报文段
一个TCP报文段由首部数据载荷两部分构成

首部:

  • 源端口、目的端口:标识发送、接受的应用进程
  • 序号seq:本TCP报文段数据载荷的第一个字节的序号
    确认号ack:期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对前面收到的所有数据的确认(TCP规定,连接建立后所有传送的TCP报文段都要把标志位ACK置1)
  • 数据偏移:TCP报文段的首部长度(数据载荷距离报文段起始处的距离)
  • 窗口:发送本报文段的一方的接收窗口
  • 同步标志位SYN:TCP连接建立时用来同步序号
  • 终止标志位FIN:用来释放TCP连接
  • 复位标志位RST:用来复位TCP连接
  • 推送标识位PSH:尽快上交应用进程
  • 紧急标志位URG:为1时紧急指针字段有效
  • 填充:保证首部长度能被4整除

应用层

应用层概述

应用层:通过应用进程的交互来实现特定网络应用的问题
运输层:进程之间基于网络的通信问题
网络层:分组在多个网络上传输(路由)的问题
数据链路层:分组在一个网络上(或一段链路)上传输的问题
物理层:用何种信号来传输比特的问题

客户-服务器方式和对等方式

客户/服务器方式:C/S方式
对等方式:P2P方式
客户/服务器(C/S)方式:

  • 客户和服务器是指通信中涉及的两个应用进程
  • 客户是服务请求方,服务器是服务提供方。
  • 服务器总是处于运行状态,并等待客户的服务请求。服务器有固定端口号(例如HTTP服务器的默认端口号是80),而运行服务器的主机也具有固定的IP地址。
  • 基于C/S的应用服务通常是服务集中型的。
  • 常用计算机群集构建一个强大的虚拟服务器

对等(P2P)方式:

  • 没有固定的服务请求者和服务提供者,分布在网络边缘各端的应用进程是对等的,称为对等方。
  • 对等方相互之间直接通信。
  • 应用:P2P文件共享、即时通信…
  • 基于P2P的应用是服务分散型的。
  • P2P方式最突出特性是其可拓展性。系统每增加一个对等方,不仅增加的是服务的请求者,同时也增加了服务的提供者,系统性能不会因规模的增大而降低
  • P2P方式有成本上的优势

动态主机配置协议DHCP

DHCP的作用:

  • 给网络添加DHCP服务器,为局域网中各主机配置网络配置信息
  • 主机开机后启动DHCP程序,从DHCP服务器获取自己的网络配置信息
    DHCP中继代理:
  • 广播报文不会被路由器转发,解决方式是给路由器配置DHCP服务器的IP地址,并使之称为DHCP中继代理

域名系统DNS

作用

  • 输入某个域名时,主机先在自己的DNS高速缓存中查找域名对应的IP地址。
  • 若没有找到,会向网络中的某台DNS服务器查询。
  • DNS服务器中有域名和IP地址映射关系的数据库,收到DNS查询报文后,在其中进行查询,之后将查询结果发送给用户主机。
  • 之后,用户主机中的浏览器可以通过web服务器的IP地址进行访问。

因特网采用层次结构的域名树作为主机名字(即域名),使用分布式的域名系统DNS
DNS使大多数域名都在本地解析,效率高。

因特网采用层次树状的域名结构

  • 域名结构由若干分量组成,分量间用“点”隔开
  • ***.三级域名.二级域名.顶级域名
  • 如:nic.hnust.edu.cn

顶级域名TLD分类:

  • 国家顶级域名nTLD:cn、us、uk…
  • 通用顶级域名gTLD:com、net、org…
  • 反向域arpa:用于反向域名解析,即IP地址反向解析为域名

因特网的域名空间:

  • 树状

域名服务器分为:

  • 根域名服务器:最高层次
  • 顶级域名服务器:管理该顶级域名下的所有二级域名
  • 权限域名服务器:管理某个区的域名
  • 本地域名服务器:起代理作用,会将报文转发到上述域名服务器的等级结构中

域名解析的过程:

  • 递归查询:…
  • 迭代查询:本地向根域名服务器查,根域名服务器告诉本地应该查哪,然后本地服务器向顶级域名查,顶级域名服务器告诉本地下次应该查的权限域名服务器IP地址,然后本地服务器查权限域名服务器。(主机到本地域名服务器使递归查询,本地到根域名服务器、顶级域名服务器、权限域名服务器是迭代查询)
    image

域名服务器中广泛使用了高速缓存,提高效率,减轻负担。
高速缓存中,域名服务器应为每项内容设置计时器并删除超过合理时间的项

文件传送协议FTP

文件传送协议FTP是因特网上使用最广泛的文件传送协议
FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限
FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
应用:

  • 常见用途是在计算机之间传输文件
  • 另一个常见用途是让网站设计者将网站内容的大量文件批量上传到他的Web服务器

基本工作原理:
image
主动模式:

  1. 建立FTP客户发起的TCP连接,这是用于传送控制命令的TCP连接
  2. 有数据要传输时,FTP客户通过命令通道告诉FTP服务器来与另一个临时端口号建立连接,建立数据通道,这是FTP服务器发起的TCP连接,用于传送数据

被动模式:

  1. 建立FTP客户发起的TCP连接,这是用于传送控制命令的TCP连接
  2. 有数据要传输时,FTP客户通过命令通道告诉FTP服务器开启某个临时端口等待TCP连接,建立数据通道,这是FTP客户发起的TCP连接,用于传送数据

数据连接在传输结束之后就关闭
默认情况下,FTP使用TCP 21端口进行控制连接TCP 20端口进行数据连接
但是否用TCP 20端口建立数据连接与传输模式有关,主动模式用TCP 20端口,被动模式由服务器和客户端自行协商决定。

电子邮件

  1. 发件人将邮件发送到自己使用的邮件服务器
  2. 发件人的服务器将收到的邮件按其目的地址转发到收件人邮件服务器的收件人邮箱;
  3. 收件人在方便时访问收件人邮件服务器中自己的邮箱,获取电子邮件

电子邮件采用客户/服务器方式
电子邮件的3个主要组成构件:用户代理、邮件服务器、电子邮件所需的协议

  • 用户代理是用户与电子邮件系统的接口,又称为电子邮件客户端软件。
  • 邮件服务器是电子邮件系统的基础设施,其功能是发送和接收邮件。
  • 协议包括邮件发送协议(如SMTP)和邮件读取协议(如POP3)

简单邮件传送协议SMTP
发送方邮件服务器周期性对邮件缓存扫描
如发现有邮件,就与接收方邮件服务器中的SMTP服务器进行TCP连接,端口号25
基于TCP,发送方连接发送SMTP命令,接收方发送SMTP应答

过程(了解就行):

  • 服务器主动推送服务就绪应答220,客户端向服务器说明身份,告知自己SMTP服务器的域名,服务器:250,客户端告诉服务器邮件来自何方,服务器:250,客户端告诉服务器邮件去往何处,服务器:250,客户端告诉服务器自己准备发送邮件内容(DATA),服务器:354(准备好接收),客户端向服务器发送邮件内容(<邮件内容>),客户端发完后,还要发结束符(.),服务器:250,客户端:QUIT,服务器:221
    SMTP协议只能传送ASCII码文本数据

常用邮件读取协议有以下两个:

  • 邮局协议POP、因特网邮件访问协议IMAP

万维网WWW

万维网是运行在因特网上的一个分布式应用
万维网利用网页间的超链接将不同网站的网页连接成一张逻辑上的信息网。
万维网使用统一资源定位符URL来指明因特网上任何种类“资源”的位置。

URL组成:
<协议>://<主机>:<端口>/<路径>

超文本传输协议HTTP:
HTTP定义了浏览器怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。

举例:

  • 客户进程与服务器进程建立TCP连接,使用端口号80
  • 浏览器进程向服务器发送HTTP请求报文
  • 服务器进程收到后,向浏览器进程发HTTP响应报文

HTTP/1.0采用非持续连接方式,每次浏览器请求一个文件都要与服务器建立TCP连接,收到响应后就关闭连接:

  • 每请求一个文档就要有2倍的RTT的开销。
  • 为了减少时延,浏览器通常会建立多个并行的TCP连接同时请求多个对象。但是这会大量占用万维网资源。

HTTP/1.1采用持续链接方式。万维网在发送响应后仍然保持这条连接。

HTTP的报文格式:
HTTP是面向文本的,报文中每一个字段都是一个ASCII码串,且每个字段长度不确定
HTTP请求报文格式:

1
2
3
4
5
6
方法 URL 版本(请求行)
首部字段名: 值(首部行)
...(可以有多个首部行)
首部字段名: 值(首部行)
空行
实体主体(通常不用)

HTTP响应报文格式:

1
2
3
4
5
6
版本 状态码 短语(状态行)
首部字段名: 值(首部行)
...(可以有多个首部行)
首部字段名: 值(首部行)
空行
实体主体(通常不用)

使用Cookie在服务器上记录用户信息:
Cookie提供机制让服务器“记住”用户,而无需用户主动提供信息,Cookie是一种对无状态的HTTP进行状态化的技术

  • 浏览器第一次发送HTTP请求,服务器为该客户生成一个唯一的Cookie识别码,并以此为索引在服务器后端数据库创建项目,记录用户访问网站的信息,之后给浏览器发回HTTP响应报文,包含Set-Cookie: <Cookie识别码>。
  • 浏览器收到后,将Cookie信息存入文件。
  • 之后每次访问,浏览器发HTTP请求,包含Cookie: <Cookie识别码>,服务器根据Cookie识别码可以识别出该用户。

万维网缓存与代理服务器:

  • 在万维网中还可以使用缓存机制提高万维网效率。

非流水线:只有收到上一个请求的响应,才能发送下一个请求。