IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络详细笔记 -> 正文阅读

[网络协议]计算机网络详细笔记

笔记来源是对某站湖科大教书匠每节课的总结,强推这位老师的计网课程,PPT做的巨好!

一. 基础知识

1.2 因特网概述

网络是由若干节点和连接这些节点的链路(Link)组成。

多个网络还可以通过路由器互连起来,就构成了覆盖范围更大的网络,即互联网(或互连网),因此互联网是“网络的网络”

因特网是世界上最大的互连网络。

因特网服务提供者ISP:普通用户通过ISP接入Internet,ISP可以从因特网管理机构申请到成块的IP地址,同时拥有通信线路以及路由器等连网设备。任何机构和个人只要向ISP交纳规定的费用,就可以从ISP得到所需要的IP地址。

(因特网上的主机必须有IP地址才能进行通信)

因特网的组成

  • 边缘部分
    • 由所有连接在因特网上的主机(手机、电脑、物联网智能硬件或大型服务器)组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
  • 核心部分
    • 由大量网络和连接这些网络的路由器组成,为边缘部分提供服务(提供连通性和交换)
      • 在网络核心部分起特殊作用的是路由器,专用计算机(不是主机),是实现分组交换的关键构件,其任务是转发收到的分组。

1.3 三种交换方式

电路交换(Circuit Switching)

  • 电话交换机接通电话线的方式成为电路交换
  • 从通信资源的分配角度来看,交换就是按照某种方式动态地分配传输线路的资源
  • 电路交换的三个步骤:
    • 建立连接(分配通信资源)
    • 通话(一直占用通信资源)
    • 释放链接(归还通信资源)

分组交换(Packet Switching)

分组交换 的组成:报文、首部、分组。

采用存储转发技术,即收到分组——存储分组——查询路由(路由选择协议)——转发分组。

**优点:**高效、灵活、迅速、可靠。

**缺点:**时延、开销。

**关键构件:**路由器。

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

报文交换(Message Switching)

报文交换中的交换节点也采用存储转发方式,但对报文大小没有限制。

可以随时发送报文,而不需要事先建立连接。

1.4 计算机网络定义

**水定义:**一些互相连接的、自治的计算机的集合。

? 互相连接:是指计算机之间可以通过有线或无线的方式进行数据通信

? 自治:是指独立的计算机,他有自己的硬件和软件,可以单独运行使用

? 终端机只有IO功能而不具备单独的计算能力,计算等工作是交给大型机完成的,所以不是自治的计算机。

较好的定义::计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。

1.5计算机网络的分类

按交换技术分类

  • 电路交换网络
  • 报文交换网络
  • 分组交换网络

按使用者分类

  • 公用网(公众网):
  • 专用网

按传输介质分类

  • 有线网络
  • 无限网络

按覆盖范围分类

  • 广域网WAN
  • 城域网MAN
  • 局域网LAN
  • 个域网PAN

按拓扑结构分类

  • 总线型网络
  • 星型网络
  • 环型网络
  • 网状型网络

1.6 计算机网络的性能指标

一个比特就是二进制数字中的一个1或0

8bit = 1 Byte

常用的有以下8个:

  • 速率:

    • 连接在计算机网络上的主机在数字信道上传送比特的速率,也成为比特率或数据率(常用单位:bit/s(bps),kb/s等)
  • 带宽:

    • 带宽在模拟信号系统中:信号所包含的各种不同频率成分所占据的频率范围,单位:Hz
    • 带宽在计算机网络中:用来表示网络的通信线路所能传送数据的能力,因此网络带宽表示在单位时间内从网络中的某一点到另一点所能通过的“最高数据率“),单位(b/s, kb/s…)
  • 吞吐量

    • 单位时间内通过某个网络的数据量
    • 吞吐量被常用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络
    • 吞吐量受网络的带宽或额定速率的限制
  • 时延

    • 源主机将分组发往传输线路需要时间,叫发送时延 = 分组长度(b) ÷ 发送速率(b/s)
    • 分组的电信号在链路上传输需要时间,叫传播时延 = 信道长度(m) ÷ 电磁波传播速率(m/s)
    • 路由器收到分组后,对其进行存储转发需要时间,叫处理时延,一般不方便计算
  • 时延带宽积

    • 时延带宽积 = 传播时延 × 带宽,可以想象为充满比特的传输管道的体积
    • 若发送端连续发送数据,则在所发送的第一个比特即将到达终点时,发送端就已经发送了时延带宽积个比特。
    • 链路的时延带宽积又称为以比特为单位的链路长度
  • 往返时间

    • 往返时间RTT:从源主机发送分组开始,直到源主机收到来自目的主机的缺人分组为止所需要的时间
  • 利用率

    • 信道利用率:表示某信道有百分之几的时间是被利用的(即有数据通过)

    • 网络利用率:全网络的信道利用率的加权平均

    • 根据排队论,当某信道的利用率增大时,该信道引起的时延也会迅速增加,因此,信道利用率并非越高越好

      如果令D0表示网络空闲时的时延,D表示网络当前的时延,U表示利用率,那么在适当假定条件下,可以将三者关系表示为: D = D0 ÷ (1 - U)

  • 丢包率

    • 即分组丢失率,是指在一定时间范围内,传输过程中丢失的分组数量与总分组数量的比率
    • 可分为
      • 接口丢包率
      • 结点丢包率
      • 链路丢包率
      • 路径丢包率
      • 网络丢包率等
    • 分组丢失主要有两种情况:
      • 分组在传输过程中出现误码,被结点丢弃
      • 分组到达一台队列已满的分组交换机时被丢弃,在通信量较大时就可能造成网络拥塞

1.7 计算机网络体系结构

  • 物理层:解决使用何种信号来传输比特的问题
    • 使用什么信号表示比特0和1
  • 数据链路层:解决分组在一个网络(或一段链路)上传输的问题
    • 如何标识网络中的各主机(主机编制问题,例如MAC地址)
    • 如何从信号所表示的一连串比特流中区分地址和数据
    • 如何协调各主机征用总线
    • 以太网交换机如何实现
  • 网络层:解决分组在多个网络上传输(路由)的问题
    • 如何标识各网络以及网络中的各主机(网络和主机共同编制的问题,例如IP地址)
    • 路由器如何转发分组,如何进行路由选择
  • 传输层:解决进程之间基于网络的通信问题
    • 若出现传输错误如何处理
  • 应用层:
    • 通过应用进程间的交互来完成特定的网络应用

二. 物理层

物理层考虑的是怎么样才能在连接各种计算机的传输媒体上传输比特流

物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么

2.1 传输媒体

传输媒体不属于计算机网络体系结构的任何一层

  • 导引型传输媒体
    • 双绞线:已成为局域网中的主流传输媒体
    • 同轴电缆
    • 光纤
  • 非导引型传输媒体
    • 微波通信
    • 卫星通信

2.2 物理层协议的主要任务

  • 机械特性:指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置
  • 电气特性:指明在接口电缆的各条线上出现的电压的范围
  • 功能特性:指明某条线上出现的某一电平的电压表示何种意义
  • 过程特性:指明对于不同功能的各种可能事件的出现顺序

2.3 传输方式

  • 串行传输
    • 指数据是一个比特一个比特一次发送
    • 发送端和接收端之间只需要1条数据传输线路即可
  • 并行传输
    • 数据一次发送n个比特,也就是需要n条传输线路
  • 同步传输:
    • 数据块以稳定的比特流的形式,字节之间没有间隔
    • 接收端在每个比特信号的中间时刻进行检测,以判断是0还是1
    • 有时钟误差积累,解决收发双方时钟同步的方法
      • 外同步:在收发双方之间添加一条单独的时钟信号线
      • 内同步:发送端将时钟同步信号编码到发送数据中一起传输(例如曼彻斯特编码)
  • 异步传输
    • 以字节为独立的传输单位,字节之间的时间间隔不是固定的
    • 接收端仅在每个字节的起始处对字节内的比特实现同步
    • 异步指的是字节之间的异步,也就是字节之间的时间间隔不固定,但字节中的每个比特仍要同步(各比特的持续时间相同)
  • 单向通信(单工)
    • 通信双方只有一个数据传输方向,例如无线电广播
  • 双向交替通信(半双工)
    • 通信双方可以相互传输数据,但不能同时进行,例如对讲机
  • 双向同时通信(全双工)
    • 通信双方可以同时相互传输数据

2.4 编码与调制

计算机需要处理和传输用户的文字、图片、音频和视频,可以统称为消息

数据是运送消息的实体,由于计算机只能处理二进制数据,计算机中的网卡将比特0和1变换成相应的电信号发送到网线

也就是说,信号是数据的电磁表现。由信源发出的原始信号成为基带信号。

基带信号可分为两类:

  • 数字基带信号:例如计算机内部CPU和内存之间传输的信号
  • 模拟基带信号:例如麦克风收到声音后产生的音频信号

信号需要在信道(信道可分为数字信道和模拟信道两种)中传输。

**编码:**在不改变信号性质的前提下,仅对数字基带信号的波形进行变换的过程,编码后产生的信号仍为数字信号,可以在数字信号中传输

  • 例如,以太网使用曼彻斯特编码、4B/5B、8B/10B等编码

**调制:**把数字基带信号的频率范围搬移到较高的频段,并转换为模拟信号,称为调制。调制后产生的信号是模拟信号

**码元:**在使用时间域的波形表示数字信号时,代表不同离散数值的基本波形。(其实就是构成信号的一段波形)

常用编码:

  • 不归零编码
  • 归零编码
  • 曼彻斯特编码
  • 差分曼彻斯特编码

2.5 信道的极限容量

在传输信号过程中,通信质量的好坏会也影响输出信号波形失真严重程度。

失真因素:码元传输速率,信号传输距离,噪声干扰,传输媒体质量

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

香农公式:带宽受限且有高斯白噪声干扰的信道的极限信息传输速率

c = W × log2(1 + S/N)

c:信道的极限信息传输速率(单位b/s)

W:信道带宽(单位:Hz)

S:信道内所传信号的平均功率

N:信道内的高斯白噪声功率

S/N:信噪比,使用分贝(dB)作为度量单位

信噪比(dB) = 10 × log10(S/N) (d/B)

三. 数据链路层

链路(Link):就是从一个节点到相邻接点的一段物理线路,而中间没有任何其他的交换节点

数据链路(Data Link):是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路

数据链路层以为单位传输和处理数据

在这里插入图片描述

3.1 概述

**封装成帧:**将数据链路层给网络层交付的协议数据单元添加帧头和帧尾的操作,成为封装成帧,添加帧头和帧尾的目的是为了实现在链路上以帧为单元来传送数据。

**差错检测:**接收方接收到帧后,通过帧尾部的检错码和检错算法可以判断出帧在传输过程中是否出现了误码。

**可靠传输:**尽管误码是不能完全避免的,但若能实现发送方发送什么,接收方就能收到什么,就成为可靠传输。

接收方收到有误码的帧后,会将其丢弃。如果数据链路层向上提供的是不可靠服务,那么丢弃就丢弃了,不会再有更多措施。如果向上提供是可靠服务,那么就还需要其他措施来确保接收方主机可以重新收到被丢弃的这个帧的正确副本。

3.2 封装成帧

帧头和帧尾中包含有重要的控制信息,另外的作用之一就是帧定界。

透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。

如果接收方不能对帧是否结束进行精确判断就不能成为透明传输(比如在传输的数据中存在与帧定界相同的比特流,那么接收方可能会误认为这是帧尾)。为了避免这种情况,协议规定在发送帧之前,会对帧进行扫描,每存在一个帧定界符,就会在其前面插入一个转义字符,这样接收方当接收到一个转义字符时,他就知道这是数据内容,而不是帧定界符。

3.3 差错检测

在一段时间内,传输错误的比特占所传输比特总数的比率成为误码率BER(Bit Error Rate)

**奇偶校验:**在待发送的数据后面添加1位奇偶校验位,是整个数据中“1”的个数为奇数(奇校验)或偶数(偶校验)。但这个方法不好。

循环冗余检验CRC(Cyclic Redundancy Check):

  • 构造被除数:在待发送信息后面添加生成多项式最高次数个0
  • 构造除数:生成多项式各项系数构成的比特串
  • 做“除法”
  • 检查余数:余数的位数应该与生成多项式最高次数相同,如果位数不同,则在余数前补0来凑足位数。这个余数就是差错检测码(冗余码),会拼接到带传输数据的后面一起传输
  • 接收方如果计算后余数为0则可判断传输过程没有产生误码。

检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。要想纠正传输中的错误,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中较少使用。

循环冗余检测有很好的检错能力,虽然计算比较复杂,但非常易于硬件实现,因此被广泛用于数据链路层。

3.4 可靠传输

在这里插入图片描述

3.4.1 停止-等待协议SW

发送方发送数据一组一组发送,当接收方收到一个分组并确认无误后会给发送方返回一个确认分组(ACK),发送方接收到ACK后,才会发送下一个分组。

但其中有很多需要解决的问题:

  • 超时重传:接收端检测到分组有误码,会将其丢弃并等待发送方的超时重传。
  • 确认(ACK)丢失:为了让接收方能够判断所收到的数据分组是不是重复的,需要给数据分组编号。
  • 确认迟到:为了让发送方能够判断所收到的ACK是不是重复的,也需要给ACK分组编号。

3.4.3 回退N帧协议GBN(Go-Back-N)

发送方的发送窗口可连续发送Wt个帧,接收方的接收窗口接受Wr(Wr=1)个帧。接收方不一定要对收到的数据分组逐个发送确认,而是可以在收到几个数据分组之后,对按序到达的对后一个数据分组发送确认。ACKn表示序号n及以前的所有数据分组都已正确接收。

3.4.4 选择重传协议SR

为了进一步提高GBN协议的性能,可设法只重传出现误码的数据分组。因此,接收窗口的尺寸Wr不应再等于1,而是大于1,以便接收方先收下到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。但接收方不能再采用累计确认。

3.5 点对点协议PPP

PPP是目前使用最广泛的点对点数据链路层协议,其主要提供了一个标准方法,主要由以下三部分构成:

  • 对各种协议数据包的封装方法(封装成帧)
  • 链路控制协议LCP,用于建立、配置以及测试数据链路的链接
  • 一套网络控制协议NCP,其中的每一个协议支持不同的网络层协议

3.5.1 PPP协议的帧格式:

在这里插入图片描述

3.5.2 透明传输的实现方法

当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。

  • 字节填充——PPP使用异步传输
    当 PPP 用在异步传输时,就使用一种特殊的字符填充法:将每一个 0x7E字节变为(0x7D, 0x5E),0x7D转变成为(0x7D, 0x5D)。ASCII 码的控制字符(即数值小于 0x20 的字符),则在前面要加入0x7D,同时将该字符的编码加以改变。

  • 零比特填充——PPP使用同步传输
    只要发现有5个连续的1,则立即填入一个0

3.6 媒体接入控制

共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)

媒体接入控制的方式可划分为

  • 静态划分信道
    • 频分多址
    • 时分多址
    • 码分多址
  • 动态接入控制
    • 受控接入
      • 集中控制
      • 分散控制
    • 随机接入

3.6.1 静态划分信道

信道复用是通信技术中的重要概念。复用就是通过一条物理线路同时传输多路用户的信号。

当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。

3.6.2 随机接入

总线型局域网使用的媒体接入控制协议CSMA/CD协议

**多址接入MA:**多个站连接在一条总线上,竞争使用总线

**载波监听CS:**每个站在发送帧之前先要检测一下总线上是否有其他站点在发送帧。若检测到总线空闲96比特时间(指发送96比特所消耗的时间,也称帧间最小间隔,其作用是使接收方可以检测出一个帧的结束),则发送这个帧;若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后发送这个帧。

**碰撞检测CD:**每一个正在发送帧的站边发送变检测碰撞,一旦发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次发送

无线局域网使用的媒体接入控制协议CSMA/CA协议(载波监听多址接入/碰撞避免)

3.7 MAC地址、IP地址以及ARP协议

MAC地址是以太网的MAC子层所使用的地址

IP地址是TCP/IP体系结构网际层所使用的地址

ARP协议属于tcp/ip体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址

3.7.1 MAC地址

MAC地址是数据链路层的地址,用于唯一标识网络适配器(网卡)

一台主机拥有多少个网络适配器就有多少个MAC地址(每个网络适配器都有一个全球唯一的MAC地址)。一般用户主机都有两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。而交换机和路由器往往拥有更多的网络接口,因此拥有多个MAC地址。严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。

MAC地址类型

  • 全球管理的单播地址
  • 全球管理的多播地址
  • 本地管理的单播地址
  • 本地管理的多播地址

3.7.2 IP地址

IP地址是因特网(Internet)上的主机和路由器所使用的地址,用于标识两部分信息:

  • 网络编号:标识因特网上数以百万计的网络
  • 主机编号:标识同一网络上不同主机(或路由器各接口)

如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(这不是一般用户的应用方式)
在这里插入图片描述

3.7.3 ARP协议(Address Resolution Protocol,地址解析协议)

其作用是通过IP地址找到相应的MAC地址

当主机H1向主机H2发送数据,在H1知道H2的IP,但不知道H2的MAC地址,就没办法在数据链路层封装目的帧地址,其解决办法步骤如下:

  • 源主机在自己的ARP高速缓存表中查找目的主机的IP地址所对应的MAC地址,如果找到了,就可以封装MAC帧进行发送;若找不到,则发送ARP请求(封装在广播MAC帧中)
  • 目的主机收到ARP请求后,将源主机的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后给源主机发送ARP相应(封装在MAC单播帧中),ARP响应中包含有目的主机的IP地址和MAC地址
  • 源主机收到ARP响应后,将目的主机的IP地址和MAC地址记录到自己的ARP高速缓存表中,然后就可以封装之前想发送的MAC帧并发送给目的主机

ARP的作用范围:逐段链路或逐个网络使用

除了ARP请求和响应外,ARP还有其他类型的报文(例如用于检查IP地址冲突的“无故ARP、免费ARP)

ARP没有安全验证机制,存在ARP欺骗(攻击)问题。

3.8 集线器与交换机区别

在这里插入图片描述

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

在这里插入图片描述

3.10 虚拟局域网VLAN概述

随着交换式以太网规模的扩大,广播域相应扩大,巨大的广播域会带来很多弊端,比如:广播风暴、难以管理和维护、潜在的安全问题。网络中会频繁出现广播信息,这边造成了很多资源浪费。为了分割广播域,使用路由器可以隔离广播域,但路由器成本较高,于是虚拟局域网VLAN技术应运而生。

虚拟局域网是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。

3.10.1虚拟局域网VLAN的实现机制

该技术是在交换机上实现的,需要交换机能够实现以下两大功能:

  • 能够处理带有VLAN标记的帧,也就是带有IEEE 802.1Q帧
  • 交换机的各端口可以支持不同的端口类型,不同端口类型的端口对帧的处理方式不同

四. 网络层

4.1 概述

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

需要解决以下几个问题

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

4.2 网络层提供的两种服务

  • 面向连接的虚电路服务
  • 无连接的数据报服务

4.3 IPv4地址概述

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

4.3.1 分类编制的IPv4地址

  • A类地址
  • B类地址
  • C类地址
  • D类地址
  • E类地址

4.3.2 划分子网的IPv4地址

在分配给某一区域一个网络后,该区域想将原来的网络划分成三个独立的子网络,为了避免需要申请新的网络号,就可以从IP地址中的主机号部分借用一些位作为子网号来区分不同的子网,从而可以不用申请新的网络地址。

如何知道分类地址中主机号有多少位被用作子网号了呢?

划分子网的工具:子网掩码

子网掩码使用连续的比特1来对应网络号和子网号,用连续的比特0来对应主机号

将IPv4地址和32位比特的子网掩码进行逻辑与运算,便可得到IP地址所在子网的网络地址 {去掉主机号的网络号(包括原网络号+子网号)

}

4.3.3 无分类编制的IPv4地址

无分类域间路由选择CIDR(Classless Inter-Domain Routing),CIDR消除了传统的A、B、C类地址以及划分子网的概念,用网络前缀代替网络号和子网号,后面的部分指明主机。因此,CIDR使IP地址从三级编址(使用子网掩码),又回到了两级编址,但这已是无分类的两级编址。

  • CIDR把网络前缀相同的连续的IP地址组成一个”CIDR地址块”只要知道CIDR地址块中的任何一个地址,就可以知道这地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。
  • CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量。

路由聚合(构造超网)

在路由分发的路由表中,当有多个网络存在时,可通过找CIDR地址块的共同前缀,将其聚合成一个聚合地址块,可节省路由表的空间来表示向哪里转发。

4.3.4 IPv4地址的应用规划

给定一个IPv4地址块,如何将其划分成几个更小的地址块,并将这些地址块分配给互联网中的不同网络,进而可以给各网络中的主机和路由器接口分配IPv4地址。

一般有以下两种方法:

  • 定长的子网掩码FLSM(Fixed Length Subnet Mask)
  • 变长的子网掩码VLSM(Variable Length Subnet Mask)

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

IP数据报的发送和转发过程包含以下两个部分:

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

主机A会将IP数据报传输给自己的默认网关(默认的指定路由器),当路由器收到IP数据报后

  • 会先检查IP数据报首部是否出错
    • 若出错,则直接丢弃该IP数据报并通告源主机
    • 若没出错,则进行转发
  • 根据IP数据报的目的地址在路由表中查找匹配的条目
    • 若找到匹配条目,则转发给条目中指示的下一跳
    • 若找不到,则丢弃该IP数据报并通告源主机

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

静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表

4.6 路由选择协议

  • 静态路由选择:由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由
  • 动态路由选择:路由器通过路由选择协议自动获取路由信息

4.6.1 常见的路由选择协议

在这里插入图片描述

4.6.2 路由器的基本结构

路由器是一种具有多个输入端口和输出端口的专用计算机,其任务是转发分组。

整个路由器结构可划分为两大部分:路由选择部分和分组转发部分

路由选择部分的核心构建是路由选择处理机,其任务是根据所使用的路由选择协议,周期性的与其他路由器进行路由信息的交互,来更新路由表。

分组转发部分由三部分构成,分别是:交换结构、一组输入端口、一组输出端口。
在这里插入图片描述

整个过程:

  • 信号从某个输入端口进入路由器
  • 物理层将信号转换成比特流,送交数据链路层处理
  • 数据链路层从比特流中识别出帧,去掉帧头和帧尾后送交网络层处理。
  • 到达网络层
    • 如果送交网络层的分组是普通带转发的数据分组,则根据分组首部中的目的地址进行查表转发,若找不到匹配的转发条目,则丢弃该分组。若找到则按照匹配条目中所指示的端口进行转发
    • 如果送交网络层的分组是路由器之间交换路由信息的路由报文,则把这种分组送交路由选择处理机,路由选择处理机根据分组的内容来更新自己的路由表。路由表一般仅包含从目的网络到下一跳的映射。
  • 在交换结构中处理之后
  • 在输出端口的网络层中更新数据分组首部中某些字段的值,送交数据链路层
  • 在数据链路层中将数据分组封装成帧,送交物理层处理
  • 物理层将帧看作是比特流,将将其变成相应的电信号进行发送

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

RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议。RIP要求自治系统AS内的每一个路由器都要维护从他自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V”。

RIP使用跳数作为度量来衡量到达目的网络的距离

RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。

当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡(也就是将分组等分到多条路由上转发)

RIP包含以下三个要点:

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

基本工作过程:

  • 路由器刚开始工作时,只知道自己到直连网络的距离为1
  • 每个路由器仅和相邻路由器周期性地交换并更新路由信息
  • 若干次交换和更新后,每个路由器都知道到达本AS(自治系统,指使用统一内部路由协议的一组网络)内各网络的最短距离和下一跳地址,成为收敛。

在这里插入图片描述

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

在这里插入图片描述

OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系

  • 问候文组封装在IP数据报中,发往组播地址224.0.0.5;
  • 发送周期为10s
  • 40s未收到来自邻居路由器的问候分组,则认为该邻居路由器不可达。
  • 每个路由器都有一个邻居表,来记录邻居路由器的相关信息

使用OPSF的每个路由器都会产生链路状态通告LSA。LSA包含以下内容:

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

LSA会被封装在链路状态更新分组LSU中,采用洪泛法发送。

使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA。通过个路由器洪泛发送封装有自己LSA的LSU分组,个路由器的LSDB最终将达到一致。由链路状态数据库可以得出带权有向图,通过迪杰斯特拉算法就可以得出各路由器为根的最短路径。
在这里插入图片描述

OSPF协议的基本工作过程

  • 相邻路由器之间周期性发送问候分组,以便建立和维护邻居关系
  • 建立邻居关系后,给邻居路由器发送数据库描述分组
  • R1收到R2发送的数据库描述分组后,发现自己缺少其中的某些链路状态项目,于是就给R2发送链路状态请求分组
  • R2收到后,将R1所缺少的链路状态项目的详细信息封装在链路状态更新分组中发送给R1。
  • R1收到后,将这些缺少的链路状态项目的详细信息添加到自己的链路状态数据库中,并给R2发送链路状态确认分组
  • 至此R1和R2的链路状态数据库将达到一致,也就是链路状态数据库达到同步
  • 每30分钟或链路状态发生变化时,路由器都会发送链路状态更新分组,收到该分组的其他路由器将洪泛转发该分组,并给该路由器发回链路状态确认分组。

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

在不同的自治系统之间,BGP是力求寻找一条能够从一个自治系统中的网络到达另一个自治系统中网络的比较好的路由,不能兜圈子,而并未要寻找一条最佳路由。

4.7 IPv4数据报的首部格式

在这里插入图片描述

(1)版本 占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4 (即IPv4)。 关于以后要使用的IPv6 (即版本6的IP协议)。

(2)首部长度 占4位,可表示的最大十进制数值是15。请注意,首部长度字段所表示数的单位是32位字(1 个32位字长是4字节)。因为IP首部的固定长度是20字节,因此首部长度字段的最小值是5 (即二进制表示的首部长度是0101)。

(3)区分服务 占8位,用来获得更好的服务。服务类型包括最小延迟、最大吞吐量、最高可靠性等性能指标。这里全为0表示一般服务。

(4)总长度 总长度指首部和数据之和的长度,单位为字节。

(5)标识(identification) 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1, 并将此值赋给标识字段。

(6)标志(flag) 占3位,但目前只有两位有意义。

  • 标志字段中的最低位记为MF (More Fragment)。 MF = 1即表示后面“还有分片”的数据报。MF = 0表示这已是若干数据报片中的最后-一个。

  • 标志字段中间的一位记为DF (Don’t Fragment), 意思是“不能分片”。只有当DF=0时才允许分片。

(7)片偏移 占 13 位。当报文被分片后,该字段标记该分片在原报文中的相对位置。片偏移以 8 个字节为偏移单位。所以,除了最后一个分片,其他分片的偏移值都是 8 字节(64 位)的整数倍。

(8)生存时间 占8位,生存时间字段常用的英文缩写是TTL (Time To Live), 表示数据报在网络中的寿命,占 8 位。该字段由发出数据报的源主机设置。其目的是防止无法交付的数据报无限制地在网络中传输,从而消耗网络资源。

(9)协议 占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个协议进行处理。

(10)首部检验和 占16位。 当校验值有误时,IP层丢弃收到的数据报,但不生成差错报文,由上层去发现丢失的数据报并进行重传。

(11)源地址 32位

(12)目的地址 32位

(13) 可选字段 该字段用于一些可选的报头设置,主要用于测试、调试和安全的目的。这些选项包括严格源路由(数据报必须经过指定的路由)、网际时间戳(经过每个路由器时的时间戳记录)和安全限制。

**(14) 填充 ** 由于可选字段中的长度不是固定的,使用若干个 0 填充该字段,可以保证整个报头的长度是 32 位的整数倍。

(15) 数据部分 表示传输层的数据,如保存 TCP、UDP、ICMP 或 IGMP 的数据。数据部分的长度不固定。

4.8 网际控制报文协议ICMP

为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了ICMP,主机或路由器使用ICMP来发送差错报告报文询问报文

ICMP报文被封装在IP数据报中发送。

当路由器或主机不能交付数据报时,就向源点发送重点不可达报文。具体可再根据ICMP的代码字段细分为13种错误。

  1. ICMP报文的种类
    • ICMP差错报告报文
    • ICMP询问报文
  2. ICMP 差错报告报文共有 5 种:
    • 终点不可达
    • 源点抑制(Source quench)
    • 时间超过
    • 参数问题
    • 改变路由(重定向)(Redirect)
  3. ICMP 询问报文有两种:
    • 回送请求和回答报文
    • 时间戳请求和回答报文
  4. ICMP应用举例
    • 分组网监探测PING
    • 跟踪路由tracert

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

4.9.1 虚拟专用网VPN(Virtual Private Network)

利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。

4.9.2 网络地址转换NAT(Network Address Translation)

NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。

由于绝大多数的网络应用都是使用运输层协议TCP或UDP来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换。这样用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行转换的技术叫做网络地址与端口号转换NAPT(Network Address and Port Translation)

五. 运输层

物理层、数据链路层以及网络层他们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信

但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程

如何为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议。

因特网的运输层为应用层提供了两种不同的运输协议,即面向连接的TCP和无连接的UDP。

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

运输层使用端口号来区分不同的应用进程,运行在计算机上的进程使用进程标识符PID来标志。

由于不同操作系统使用不同格式的进程标识符,为了使不同操作系统的应用进程可以网络通信就必须使用同一的方法对TCP/IP体系的应用进程进行标识,于是有了端口号。

端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,在因特网中,不同计算机中的相同端口号没有联系。

一些应用进程所发送的不同应用报文,在运输层使用UDP协议进行封装,称为UDP复用

一些应用进程所发送的不同应用报文,在运输层使用TCP协议进行封装,称为TCP复用

不管是使用UDP协议封装成的UDP用户数据报还是TCP协议封装成的TCP报文段,在网络层都需要使用IP协议封装成IP数据报,称为IP复用。IP数据报首部中协议字段的值,用来表名IP数据报的数据载荷部分封装的是何种协议数据单元。取值为6表示封装的是TCP报文段,取值为17表示封装的是UDP用户数据报。

5.2 UDP和TCP的对比

  • 用户数据报协议 UDP(User Datagram Protocol)
    • 使用UDP协议的通信双方,可以随时发送数据
  • 传输控制协议 TCP(Transmission Control Protocol)
    • 使用TCP协议通信的双方,在进行数据传输之前,必须使用“三报文握手”建立TCP连接,建立成功后才能进行数据传输。数据传输结束后必须使用“四报文挥手”来释放TCP连接。
      在这里插入图片描述

5.3 TCP的流量控制

所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接受

利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制
在这里插入图片描述

5.4 TCP拥塞控制

TCP是在发送端进行拥塞控制的。TCP为每条连接准备了一个记录拥塞窗口大小的变量cwnd,它限制了本端TCP可以发送到网络中的最大报文数量。显然,这个值越大,连接的吞吐量越高,但也更容易导致网络拥塞。所以,TCP的拥塞控制本质上就是根据丢包情况调整cwnd,使得传输的吞吐率尽可能地大!而不同的拥塞控制算法就是调整cwnd的方式不同!

5.5 TCP超时重传时间的选择

TCP发送端发送数据报到接收到确认报文段的时间差为往返时间RTT,其中会设置超时重传时间RTO。如果RTT大于RTO会造成不必要的重传,使网络负荷增大,但如果RTT远小于RTO,会使得网络的空闲时间增大,降低了传输效率。因此如何计算更新RTO是很重要的。

5.6 TCP可靠传输的实现

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

保证可靠传输的手段:

  1. 应用数据被分割成 TCP 认为最适合发送的数据块。
  2. TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
  3. **校验和:**TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。
  4. TCP 的接收端会丢弃重复的数据。
  5. **流量控制:**TCP 连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。 (TCP 利用滑动窗口实现流量控制)
  6. **拥塞控制:**当网络拥塞时,减少数据的发送。
  7. **ARQ协议:**也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。
  8. **超时重传:**当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

5.7 TCP的连接建立

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

  • 建立TCP连接:“三报文握手”
  • 数据传送
  • 释放TCP连接:“四报文挥手”

TCP的连接建立要解决以下三个问题:

使TCP双方能够确知对方的存在

使TCP双方能够协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳以及服务质量等)

使TCP双方能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配

5.7.1 三次握手

所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个报文。

  • 最初,两端的TCP进程都处于关闭状态。
  • TCP服务进程首先创建传输控制块,用来存储TCP连接中一些重要信息。此时,TCP服务器进程就进入监听状态,等待TCP客户进程的连接请求。TCP服务器进程是被动等待来自TCP客户进程的连接请求。称为被动打开连接。
  • 第一次握手:TCP客户进程首先创建传输控制块,在打算建立TCP连接时,向TCP服务器发送TCP连接请求报文段。并进入同步已发送状态。称为主动打开连接。
  • 第二次握手:TCP服务器进程收到TCP连接请求报文后,如果同意建立连接,则向TCP客户进程发送TCP连接请求确认报文段。并进入同步已接收状态。
  • 第三次握手:TCP客户进程收到TCP连接请求确认报文段后,向TCP服务器进程发送一个普通的TCP确认报文段,并进入连接已建立状态
  • TCP服务进程收到该确认报文段后也进入连接已建立状态
    在这里插入图片描述

一些名词含义:

SYN:synchronous建立连接

FIN:终止标志位,用来释放TCP连接

ACK:acknowledgement 确认

seq:指的是该报文段数据的第一个字节的序号。数据载荷中的每个字节数据都有序号(不是内容)

ack:指确认收到了该序号以前的报文段。

5.7.2 四次挥手

在这里插入图片描述

  • 现在TCP客户进程和TCP服务器进程都处于连接已建立状态。
  • 第一次挥手:TCP客户应用进程通知其主动关闭连接,TCP客户进程会发送TCP连接释放报文段,并进入终止等待1状态。
  • 第二次挥手:TCP服务器进程收到TCP连接释放报文段后,会发送一个普通的TCP确认报文段并进入关闭等待状态。此时从TCP客户端进程到TCP服务器进程这个方向的连接就释放了,但TCP服务器进程到TCP客户进程这个方向的连接并未关闭。这时的TCP连接属于半关闭状态(也就是TCP客户进程已经没有数据要发送了,但TCP服务器进程如果还有数据要发送,TCP客户进程仍要接收)
  • TCP客户进程收到TCP确认报文段后就进入终止等待2状态,等待TCP服务器进程发出的TCP连接释放报文段
  • 第三次挥手:TCP服务器进程发送TCP连接释放报文段并进入最后确认状态
  • 第四次挥手:TCP客户端收到TCP连接释放报文段后,会针对该报文段发送普通的TCP确认报文段,之后进入时间等待状态。
  • TCP服务器进程收到该确认报文后进入关闭状态
  • 而TCP客户进程还要经过2MSL(MSL为最长报文段寿命)后才能进入关闭状态

5.7.3 TCP保活计时器

假设TCP连接建立后,TCP客户端发生故障,这样TCP服务器进程以后就不能再收到TCP客户进程发来的数据。因此应当有措施使TCP服务器进程不要再白白等下去(也就是TCP服务进程如何发现TCP客户端发生了故障)

TCP服务器进程每收到一次TCP客户进程的数据,就重新设置并启动保活计时器
在这里插入图片描述

5.8 TCP报文段的首部格式

在这里插入图片描述

**源端口:**占16比特,用来标识发送该TCP报文段的应用进程

**目的端口:**占16比特,用来标识接收该TCP报文段的应用进程

序号Sequence Number:占32比特,用来指出本TCP报文段数据载荷的第一个字节的序号

确认号Acknowledgement Number:占32比特,指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。

确认标识位ACK:取值为1时确认号字段才有效;取值为0时确认号字段无效。(TCP规定,在连接建立后所有传送的TCP报文段都必须把ACK设置为1)

同步标识位SYN:在TCP连接建立时用来同步序号。连接请求报文段首部中的SYN被设置为1,表明这是一个TCP连接请求报文段。当ACK也被设置为1时,表名这是TCP连接请求确认报文段

**终止标识位FIN:**用来释放TCP连接

**复位标识位RST:**用来复位TCP连接。让RST=1时,表明TCP连接出现了异常,必须释放连接,然后再重新建立连接。或还用来拒绝一个非法的报文段或拒绝打开一个TCP连接

推送标识位PSH:接收方的TCP收到该标识位为1的报文段会尽快上交应用进程,而不必等到接受缓存都填满后再向上交付。

**紧急标识位URG:**取值为1时紧急指针字段有效;取值为0时紧急指针字段无效。

**紧急指针:**占16比特,指明紧急数据的长度。当发送方有紧急数据时,可将紧急数据插队到发送缓存的最前面,并立刻封装到一个TCP报文段中进行发送。

**数据偏移:**占4比特,用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远(实际是TCP固定首部的长度)

窗口:占16比特,指出发送本报文段的一方得到接收窗口。这是以接收方的接受能力来控制发送方的发送能力,成为流量控制(但实际发送窗口的大小还取决于拥塞窗口的大小,也就是发送窗口应等于接受窗口拥塞窗口取小者)

**校验和:**占16比特,检查范围包括TCP报文段的首部和数据载荷两部分

选项:

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

六. 应用层

应用层用来解决通过应用进程的交互来实现特定网络应用的问题

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

  • 客户/服务器方式
    • 客户和服务器是指通信中设计的两个应用进程
    • 客户/服务器方式所描述的是进程之间服务和被服务的关系
    • 客户是服务请求方,服务器是服务提供方
    • 服务器总是处于运行状态,并等待客户的请求。服务器具有固定的端口号(例如HTTP的默认端口号是80),而运行服务器的主机也具有固定的IP地址
  • 对等方式
    • 没有固定的服务请求者和服务提供者。分布在网络边缘各端系统中的应用进程是对等的,被称为对等方。对等方相互之间直接通信,每个对等方既是请求者也是提供者。
    • P2P应用主要包括P2P文件共享、即时通信、分布式存储等
    • 特点:
      • 基于P2P的应用是服务分散型的,即服务分散在大量对等计算机中(个人控制的电脑)
      • 可扩展性,系统每增加一个对等方,性能不会因规模的增大而降低
      • 成本优势,不需要庞大的服务器设施和服务器带宽

6.2 动态主机配置协议DHCP

DHCP能够为客户端自动分配IP地址,在分配地址的同时具有记录缓存的机制,可避免IP的重复分配,过期地址回收机制增加了IP地址的复用性,对于维护大规模的局域网客户端有极大的便利性

用户接入到网络后必须先设置IP地址和子网掩码,为了让所有的主机IP地址唯一,网络管理员负担会很重。如果有DHCP服务器就可以通过TCP/IP通信来获取IP地址

6.3 域名系统DNS

当在浏览器地址栏中输入某个Web服务器的域名时:

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

DNS服务器是有层次的,它可以分为三种类型:根DNS服务器, 顶级域DNS服务器和权威DNS服务器

6.3.1 域名服务器的四种类型

  • 根域名服务器
  • 顶级域名服务器
  • 权限域名服务器
  • 本地域名服务器

6.3.2 域名解析过程

递归查询

在这里插入图片描述

高速缓存

在这里插入图片描述

为了提高DNS查询效率减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

6.4 文件传送协议FTP

将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送。

主要作用是在服务器和客户端之间实现文件的传输和共享。FTP协议运行在TCP连接上,保证了文件传输的可靠性

FTP基本工作原理

  • FTP服务器监听熟知端口号21
  • FTP客户随机选择一个临时端口号与其建立TCP连接,这条TCP连接用于TFP客户与服务器之间传送FTP的相关控制命令(也就是这条TCP连接时FTP客户与服务器之间的命令通道,不是传送数据的通道)
  • **主动模式:**当有数据要传输时,FTP客户通过命令通道告知FTP服务器来与自己的另一个端口号建立TCP连接,即建立数据通道。在建立数据通道时,是FTP服务器主动连接FTP客户, 因此被称为主动模式。
  • **被动模式:**当有数据要传输时,FTP客户通过命令通道告知FTP服务器开启某个协商好的临时端口,被动等待来自FTP客户的TCP连接。
  • 控制链接在整个会话期间一直保持打开,用于传送FTP相关命令。
  • 数据连接用于文件传输,每次文件传输时才建立,传输结束就关闭

6.5 电子邮件

一个电子邮件系统应具有三个主要组成部分:用户代理、邮件服务器、邮件发送协议(如SMTP)与邮件读取协议(如POP)

**用户代理(User Agent)**就是用户与电子邮件系统的接口,在大多数情况下它就是运行在用户PC机中的一个程序。一般具有撰写、显示、处理、通信等功能。

发送和接收电子邮件的几个重要步骤:

(1)发件人调用 PC 中的用户代理撰写和编辑要发送的邮件。

(2)发件人的用户代理把邮件用SMTP 协议发给发送方邮件服务器,

(3)SMTP 服务器把邮件临时存放在邮件缓存队列中,等待发送。

(4)发送方邮件服务器的SMTP 客户与接收方邮件服务器的 SMTP 服务器建立 TCP 连接,然后就把邮件缓存队列中的邮件依次发送出去

(5)运行在接收方邮件服务器中的SMTP服务器进程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。

(6)收件人在打算收信时,就运行 PC 机中的用户代理,使用 POP3(或 IMAP)协议读取发送给自己的邮件。请注意,POP3 服务器和 POP3 客户之间的通信是由 POP3 客户发起的。

6.6 万维网WWW

万维网使用统一资源定位符URL来指明因特网上任何种类“资源“位置

url一般由四部分组成:协议:// + 主机 + :端口 + /路径

6.6.1 超文本传输协议HTTP

HTTP定义了浏览器怎样向万维网服务器请求万维网文档,以及万维网服务器怎么样把万维网文档传送给浏览器

基本过程:

  • 客户浏览器进程与服务器中服务器进程基于因特网通信
  • 浏览器进程首先发起与服务器进程的TCP连接,使用端口号80
  • 基于这条TCP连接,浏览器进程向服务器进程发送HTTP请求报文
  • 服务器收到HTTP请求报文后,执行相应操作,然后给浏览器进程发回HTTP响应报文

HTTP版本

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

  • 但若网页有多个对象要请求,那么就会花费大量时间。为了减小时延,浏览器通常会建立多个并行的TCP连接同时请求多个对象。但这样会占用大量万维网服务器资源。

HTTP/1.1采用持续连接方式。该方式下,万维网服务器在发送响应后仍然保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。

  • 为了进一步提高效率,HTTP/1.1的持续连接还可以采用流水线方式工作,即在收到HTTP响应报文前能够连续发送多个请求报文。

具体应搜寻http相关博客进行学习

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:33:55  更:2021-08-09 10:34:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:45:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码