计算机网络-Internet原理(二)

Internet原理

传输层协议

传输层有两个并列的协议:TCP 和 UDP,其中 TCP(Transfer Control Protocol,控制传输协议)是面向连接的;UDP (User Datagram Protocol,用户数据报协议)是无连接的。

一般情况下,两者共存于一个互联网中。前者提供高可靠服务,后者提供高效率服务。

端口

传输层相较网络层,前者提供了进程通信能力,后者不提供。从这一点来看,网络通信的最终地址不仅仅包括主机地址,还包括描述进程的标识符。

因此,TCP / UDP 协议集提出了协议端口(protocol port,简称端口)的概念,用于标识通信的进程。进程与端口绑定之后,该端口所有的数据都被该进程接收。在 TCP / IP 的实现中,端口的操作类似于一般的 I / O 操作,进程获取一个端口,相当于获取一个唯一的 I / O 文件。

端口的位数长达 16 位,可以提供 65536 个端口。

端口分配方法:一部分保留,一部分自由端口。

保留端口只占很少的部分,以全局方式进行分配。自由端口占绝大部分,并用本地方式进行分配。

image-20211221184909966

当一个进程和远地进程通信之前,一方面自己要有一个端口号(监听端口),另一方面还要知道远地进程的端口号。通常获得这个端口号的方式有三种:

  • 对方是服务进程,使用保留端口号
  • 通信前进行约定
  • 采用注册服务器。远地进程启动后在一个服务器注册了端口号,通信请求方进程访问注册服务器查询端口。

用户数据报协议

基于 IP 提供无连接的数据报传输服务,主要功能是提供协议端口,以保证进程通信。

UDP 不保证可靠的数据传输。也不会对报文进行合并或者分段,接收方收到的报文就是发送的报文。

UDP 可以提供校验和差错检验。默认情况下开启校验。当校验和不正确则丢弃数据报,然后进行请求重传或者自动纠正。校验和正确则送给进程等待队列。

UDP 的封装相当于 UDP 报文作为 IP 的数据部分进行封装。

image-20211221185955658

报文格式
  • 源端口号:指示发送方 UDP 端口号。当不需要返回数据时,可将这个字段值值为 0。
  • 目的端口号:接收方 UDP 端口号。根据这个端口发送给指定的应用进程。
  • 报文长度:数据报总长度
  • 校验和:全 0 表示未计算,不采用校验,全 1 表示校验和为 0。需要伪报头参与运算。

另外,UDP 还有从 IP 报文中获取的伪报头用于检验数据是否送到正确节点。

伪报头包括以下字段:

  • 收发双方 IP 地址
  • 填充字段:填充为 32bit 整数倍
  • 协议类型:IP 上层协议类型,UDP 为 17
  • UDP长度:UDP 数据报长度

image-20211221190542000

UDP 不进行流量控制和拥塞控制,但是要针对不同的用户进程数据进行多路复用和分解操作。

多路复用和分解指不同进程的数据经过传输层交付给网络层传输过程。

发送方如果 3 个进程发送数据报目的 IP 相同,那么通常会按照相同的路径进行传输。

接收方主机 IP 协议将处理完的分组交给 UDP,UDP 通过数据报中的源端口确定哪个进程来接受和处理这个数据包。

image-20211221191011320

传输控制协议

提供面向连接的传输层协议,提供基于字节流的可靠信息传送服务。

TCP 牺牲效率换取高可靠的服务。为了这种可靠性必须处理分组丢失、分组乱序以及由于延迟出现的重复数据报的问题。

另外 TCP 限定数据报长度小于 64 KB。长报文需要分段后才能进行传输。

UDP 面向报文,处理基本单位是报文。TCP面向字节流,所有控制都是基于字节进行的。但也因为如此不能保留数据边界(分段后的数据无法区分在哪里开头、在哪里结尾的问题)。所以必须在 TCP 的字节流中确定边界。

TCP 不支持组播,只能解决两个进程通信的问题。但是支持建立多条连接。连接服务采用全双工模式。在数据传输之前,必须先建立一条全双工连接。这个连接只有应用程序级可以感知到,中间经过的路由器等无法察觉。

进行传输时上层把数据放入发送缓冲之后,在发送数据时,TCP取一定数量的字节加上报头封装成 TCP 报文进行发送,当到达接收方接收缓冲时,TCP报文携带的数据也作为字节流处理,在提交给应用时也是字节流的形式提供。所以应用程序必须能从字节流中划分原始数据边界。

image-20211221192320609

TCP报文格式

TCP 报文也是封装在 IP 分组中进行传输。

image-20211221193050532

  • 源端口和目的端口
  • 序号:对每个字节的编号。指该 TCP 报文中数据部分起始字节的序号。长 32 位,所以可以对 4G 字节进行编号。因此序号重复时,旧序号的数据在网络中早已消失。TCP连接建立时使用三次握手,确保序号不会重复。
  • 确认序号:数据响应方用来指出下一个期望收到的字节序号,也就是告诉对方该序号之前的已经收到。
  • 数据偏移:指明报文头部总长度,因为选项可变
  • 保留:未使用
  • 标志位:由 6 位组成,为 1 时表示有效
    • URG:表示紧急指针字段是否有效
    • ACK:表示确认字段是否有效
    • PSH:表示本 TCP 段请求一次推进,要求立即交予应用
    • RST:表示要求重建传输连接
    • SYN:同步位,表示要求建立连接
    • FIN:表示已经发送完所有字节,要求释放连接
  • 窗口:用于控制对方所能发出的数据量,单位为字节
  • 校验和:用于校验,也要包含伪报头
  • 紧急指针:用于指出窗口中紧急数据的位置,这些数据优于其他数据进行传送
  • 选项:用于处理其他情况,包括最大报文长度
  • 填充:保证 TCP 报头长度为 32 的整数倍
TCP连接管理

为了保证连接可靠性,通过三次握手,四次挥手建立、释放连接。

连接建立

image-20211221200915565

  1. 主机A发送一个 SYN 置为 1 的连接请求报文,携带初始序号 x。
  2. 主机B收到这个报文后,发送 SYN、ACK = 1 的报文对第一个 SYN 请求连接报文段进行确认。对初始信号 ACK = x + 1 进行了确认。另一方面也发送了自己的初始信号 y。
  3. A再发送一个 ACK = 1 的报文,通知主机 B 确认双方连接建立。并携带了 ACK = y + 1,对初始信号 y 进行确认。

第一次、第二次握手不携带任何数据,但都消耗了一个序号。

当连接建立时需要协商 MSS(最大报文段长度),TCP 发送 SYN 报文时能够将物理网络 MTU(最大传送单元)减去 IP 和 TCP 首部。MSS越大越好。

目的地址非本地,通常采用默认值 536B。

释放连接

因为 TCP 是全双工的,可以看成两个不同方向的独立数据流的传输。因此,TCP 采用对称的连接释放方式,即对每个方向单独释放。

  1. 主机 A 数据发送完毕,发送 FIN。应用进程关闭连接,不再传输数据
  2. 主机 B 接收到 FIN,并发送 ACK 确认已经知道关闭。
  3. 主机 A 收到 ACK,确认 B 收到。
  4. 主机 B 确认自己数据处理完,没有再要发送的数据之后,也请求释放连接发送 FIN。
  5. 主机 A 收到并返回 ACK 确认
  6. 最终释放连接

image-20211221201739170

TCP传输控制
传输控制概述

发送方上层应用进程按照自己产生数据的规律,陆续将大小不等的数据块送到 TCP 的发送缓冲区。

当下列条件之一满足时,TCP 会从缓冲区中取一定长度的字节流,并封装成 TCP 报文段后发送。

  1. 如果缓冲区中数据长度达到最大数据段长度MSS,则从缓冲区中取 MSS 长度的数据封装成 TCP 报文后发送。
  2. 发送方应用进程要求立即发送报文,即要求 TCP 执行 PSH
  3. 发送方的定时器超时时,也需要封装并且立即发送

实际上,还需要遵循其他规则,如 Nagle 算法、流量控制和拥塞控制的策略等。

Nagle 算法主要思想:当应用程序传输数据时,首先传输实体封装并发出第一个字节,对其后的字节进行缓存,直到收到第一个字节的确认;封装实体封装尽可能多的字节流(小于等于MSS)的数据报文发出,对其后字节进行缓存,直到收到下一个确认。

Nagle 算法在数据到达速度较快但是网络速度较慢时,可以明显减轻对网络带宽的消耗。Nagle 算法还规定,当到达的数据达到窗口大小的一半或者报文段的最大长度时,需要立即封装并发送下一个报文段。

但是会遇到一个问题:“傻窗口综合征”,应用程序从传输层实体读出一个字节时,立刻产生一个一字节的窗口更新段(更新目前接收方能接受数据多少的窗口),使得发送方只能发送一个字节。这个问题的解决办法是限制接收方只有在具备一半以上的空缓存或者最大段长的空缓存时,才能产生一个窗口更新段。

每个TCP连接,TCP会管理四个主要的定时器:

  1. 重传计时器。需要跟踪往返时间(RTT),来指定重传计时时间。
  2. 坚持(persist)定时器。ACK 传输并不可靠。为了避免 ACK 丢失造成双方等待,发出数据后,发送方定时查询接收方。
  3. 保活(keepalive)计时器。用于检测空闲连接另一端是否已经崩溃或者重启。如果一个连接在指定时间内没有动作,则发送一个探查报文段。
  4. 2MSL 定时器。测量一个连接处于 TIME_WAIT 状态的时间。
流量控制

最简单的方式是接收方直接通知发送方自己的出列能力。然后发送方按照接收方的处理能力来发送数据。但是接收方的处理能力是动态变化的,因此也需要一种动态的交互过程。

TCP 中采用动态缓存和可变大小的滑动窗口来实现流量控制。TCP 报文中,窗口字段就是双方交换窗口的尺寸(接收方缓冲区字节大小)。发送方允许连续发送未应答的字节数量不能超过该尺寸。

发送过程例如下:

  1. 假设最初始的窗口为 2KB,当 A 发送两个 1KB 后,B收到并处理完提交给上层后,发送应答
  2. 应答声明窗口为 2KB,A 下次就会发送 2KB。
  3. 出于某种原因,B 的缓冲区没有很快腾空,那么 B 给 A 发送的应答将窗口声明为 0
  4. A 收到后停止发送,直到主机 B 重新应答。

为了避免停止发送后,B 应答丢失。规定窗口为 0 时,允许发送方发送 1B 的TCP段请求重发确认号和窗口大小。

image-20211221215426883

拥塞控制

通过“慢启动”、拥塞避免算法、快速重传和快速恢复算法共同用于解决 TCP 中的拥塞控制问题。通常选取丢包率作为判定拥塞的指标。

image-20211221215953163

  1. 慢启动阶段

    发送方维护两个窗口:接收方窗口和拥塞窗口(cwnd)。发送方按最小值发送

    引入了以下参数:

    • 最大数据段 MSS:不包括TCP、IP头部以及选项字段的最大数据段大小

    • 慢启动阙值(ssthresh):用来确定使用慢启动还是拥塞避免。初始值可以任意大。

      • cwnd > ssthresh 时使用拥塞避免
      • cwnd < ssthresh 时使用慢启动
      • 相等时两者都可以

      有一个前提是无论怎么增长,不能大于接收方窗口。

      基本思想:为了避免在不了解网络状况下,直接按照发送窗口最大值导致拥塞,采取又少到多的启动发送策略。cwnd 被初始化为 1 个MSS,每收到一个 ACK,cwnd 加 1 个 MSS。发送时取拥塞和发送窗口最小值。要注意拥塞窗口以字节为单位。

      因为每次发送的报文段若都得到应答都会使得cwnd加 1 个 MSS,所以其实是指数增长的。直到指数增长到 cwnd <= ssthresh,随后进入拥塞避免

  2. 拥塞避免阶段

    以 RTT 为单位进行线性增长。与 ACK 数量无关。继续保持增长直到检测到拥塞。

    无论慢启动还是拥塞避免,检测到拥塞就要立刻停止增长。

    因为假定分组受到损坏丢失很少,所以可以认为发生超时和收到重复的确认时就判定为发生拥塞。

    发生拥塞时,将ssthresh 设置为发生拥塞时窗口值的一半(取 rwnd 和 cwnd 得最小值,但是不能小于 2)。拥塞窗口设置为 1,重新进入慢启动阶段。

  3. 快速重传阶段和快速恢复阶段

    为了解决等待重传计时器超时引起信道空闲,引入快速重传和快速恢复。

    当一个次序紊乱的报文到达 TCP 接收方时,接收方发送重复的 ACK 来重申接收方期望的序号。

    这种情况可能是数据报文丢失引起,所有丢失的数据报文之后发送的数据报文都会引起重复的 ACK。可能是数据重排序引起,也可能是网络对 ACK 或者数据报文的复制引起的。当接收到的数据报文填补序列间隔时,TCP 接收方立刻发送一个 ACK,来避免重传计时器超时。

    当收到 3 个重复的 ACK,TCP 不等重传计时器就采用快速重传进行重传。

    当快速重传算法发送了看来丢失的报文后,快速回复用来控制新数据报文发送,直到非重复的 ACK 到达。不采用慢启动是因为,重复 ACK 代表后续报文能够到达。

    image-20211221222935495

应用层协议

概述

应用层是用户访问网络的接口,常见的应用层协议包括:

  • DNS
  • FTP
  • SMTP
  • HTTP

一般情况下,用户通过应用层代理程序调用应用层协议完成特定功能。

设计协议时需要确认:

  1. 应用层使用面向连接的 TCP,还是无连接的 UDP
  2. 对等应用层实体间传输数据单元的类型以及格式
  3. 对等应用层实体间通信的规则及时序关系

应用层对传输层的服务质量通过以下参数衡量:数据传输的可靠性、传输时延、系统资源消耗以及带宽等。性能为主用 UDP,完整性、可靠性和可控制性为主用 TCP。

image-20211221224138981

网络应用模式

  1. 客户 / 服务器模式

    服务器端口监听请求,收到请求后应答。

    服务器利用硬件提供服务,用户请求服务。

    服务程序采用两种方式支持多个用户的同时访问:

    • 重复型服务程序

      面向无连接的 C / S 模式

      资源要求不高,处理一个请求其他必须等待,一般用于处理预期时间内可以处理完的请求

    • 并发型服务程序

      面向有连接的 C / S 模式

      资源要求高,可以并发处理多个请求,实时性和灵活性号,处理不可在预期时间内处理完的请求

  2. 浏览器 / 服务器模式

    对 C / S 模式的改进,用户访问接口通过 WWW 浏览器实现。

    大部分逻辑和业务在服务器端实现,前端利用浏览器实现页面即可。避免了各种复杂的软件

    优势如下:

    • 成本下降

      复杂性都集中在服务器端。服务器负荷较重。

    • 维护升级简单

      浏览器都一致,不需要额外维护

    • 服务器选择灵活

      不受客户端制约

    • 客户端运行灵活

      因为浏览器几乎每个用户必备,不需要额外安装软件。

  3. P2P模式

    任何节点都可以是服务器或者客户端,降低了对服务器的依赖以及分布式控制能力。

    结构有三种:

    • 集中式结构

      系统中有中央服务器负责维护所有文件信息。用户只需要向中央服务器提出查询请求。

      协议简单,查询回复块,但是中央服务器容易称为系统单一故障点和性能瓶颈。

    • 分布式

      无中心,所有请求和响应均在节点间完成,以广播散发消息。

      容错率高,但是带宽消耗比较大。

    • 混合式

      兼具高效性和容错性,维护通过主干位置超级节点承担。

    image-20211221225851131

域名服务

Internet 需要通过 IP 地址来定位目的节点,但是 4 个字节的 IP 地址很难记忆,所以设计了域名。

所以我们需要一个域名转为 IP 地址的服务:域名系统(Domain Name System,DNS)

最简单的方法是直接建立一个域名和 IP 的主机表进行维护。但是消耗的带宽很大。

设计目标如下:

  • 为访问网络资源提供一致的名字空间
  • 从容量和更新频率方面考虑,必须实施分散管理,通过使用本地缓存来提高性能
  • 在获取数据的代价、数据更新的速度和缓存的准确性中折中
  • 名字空间适用于不同的协议和管理方法,不依赖于通信系统
  • 具有主机适用性

域名空间被设计成树状层次结构,每个域对下面的子域和空间进行管理。

  • 最高级的节点称为根(Root)
  • 根以下是顶层子域
  • 再以下是第二层、第三层等

每个节点都有一个标识(Label),标识可以包含英文大小写字母、数字和下划线,域名是由该节点到根经过节点的表示顺序排列而成的。

顶级域名分为组织结构和地理结构两种,组织结构有 com、edu、net、org、gov、mil、int分别代表各种组织。按照地理结构一般以国家名的两字母缩写标识,如 cn、jp、ck等

DNS采用 C / S 模式,使用分布式数据库实现了这种命名机制。

根据域名划分不同的区域,每个区域包括域名的一部分并且设有本地域名服务器进行管理。区域的边界是人为设置的。比如:xjtu.edu.cn、edu.cn、.cn 分别由不同的区域中域名服务器管理。每个区域中都有:

  • 一个主域名服务器

    用于管理域中的主文件数据

  • 若干备份域名服务器

    为主域名服务器提供备份

  • 若干缓存服务器

    缓存从其他区域服务器获得的信息,以加速查询操作

一个主域名服务器可以将管理区域进行划分和委托授权。此时域名的管理由主域名服务器和授权域名服务器共同执行。

工作流程

例如 www.xjtu.edu.cn 的 DNS 查询

  1. 查询本地缓存服务器是否有该域名的解析记录。
    • 若有,成功查询到记录
    • 若无,继续下一步
  2. 查询 .cn DNS 根域名服务器,获得 edu.cn DNS 服务器的IP地址。
  3. 查询 edu.cn DNS 服务器,获得 xjtu.edu.cn 服务器的 IP 地址。返回资源记录(超时后自动删除)并保存到本地缓存服务器。

根域名服务器通常委托授权服务器进行管理。

资源记录

image-20211222084111859

其他字段的取值由类型决定,类型:

  • 初始授权机构(SOA):说明域中的主服务器是哪一台。通常为 DNS 数据库中第一条资源记录
  • 名称服务器(NS):说明区域有哪些 DNS 服务器负责解析
  • 主机地址(A):记录 DNS 域名对应的 IP 地址
  • 指针(PTR):反向资源记录,记录 IP 地址对应的 DNS 域名
  • 邮件交换器资源记录(MX):记录 DNS 域名对应的邮件服务器
  • 别名(CNAME):记录 DNS 域名是另一个域名的别名

DNS支持 TCP 和 UDP 两种协议,端口都是 53。大多数基于 UDP,以下情况使用 TCP:

  • DNS查询数据过大产生数据截断时,需要 TCP 分片传输
  • 当主 DNS 服务器和备份 DNS 服务器之间传输大量区域信息时

电子邮件传输协议

类似于传统的邮政系统,用于将包含文本、视频以及图片等信息的报文发送给一个或者多个收信人。

SMTP的传输模型

简单电子邮件传输协议(Simple Mail Transfer Protocol,SMTP)是一种简单有效、提供可靠电子邮件传输的协议。

通过用户代理使用电子邮件传输服务。

  1. 发送者用户代理通过 SMTP 将邮件发送到自己的本地邮件服务器
  2. 时机成熟后(队列达到一定长度,或者等待一段时间)发送者的邮件服务器通过 SMTP 将邮件发送到接收者的邮件服务器
  3. 接收者用户代理通过邮件访问协议(POP3、IMAP等),访问自己邮件服务器上的邮箱

image-20211222085731832

电子邮件的格式及 MIME 协议

类似于真正的邮件,包括信封和报文两部分。报文又可以分为首部和正文两部分。

  • 信封:邮件服务器使用,完成交付。
  • 首部:用户代理使用。常用 From、To、Received、Subject、Reply-to等字段。每个字段都由名、冒号和字段值组成。对于长首部字段可以拆分多行,以空格开头。
  • 正文:发送用户发送给接受用户报文的内容。

SMTP 为了简单性,对丁只能发送 7 位 ASCII 格式的报文。为了能够支持视频、音频等二进制文件和多语言发送。提出一种补充协议:多用途 Internet 邮件扩展协议(MIME)

MIME 定义了以下两种编码办法

  • Base64:基本思想是把 3 个字节的数据用 4 个字节表示。3字节共24位有效数字,所以4个字节都只用前 6 位,所以不存在只能传输 7 位的问题
  • QP(Quote-Printable):通常缩写成 ”Q“ 方法,原理是把一个 8 位字符用两个 16 进制数值表示,然后在前面加 ”=“ 。QP 编码后通常如下所示:=B3=C2=BF

image-20211222091331906

SMTP 的实现

邮件传输实际上是由邮件传输代理(Mail Transfer Agent,MTA)来完成的。要使用 SMTP 发送文件,系统中必须要包含一个客户端的 MTA;要接收邮件,系统也必须包含一个服务器的 MTA。

为了保证邮件准确性,在传输层使用面向连接的 TCP。

SMTP 默认端口为 25。

具体步骤如下:

  1. 邮件服务器 A 通过三次握手与邮件服务器 B 的 25 端口建立一条 TCP 连接
  2. TCP连接建立好之后,作为客户端的 A 等待服务器 B 先传输信息
  3. 服务器先发送准备接受的 SMTP 信息,客户端向服务器发出 HELO 消息,服务器回答 HELO 消息,双方进入邮件传输状态
  4. 传输过程:客户首先发送 发信人地址 MAIL FROM,收信人地址 RCPT TO 的信封。当服务器确认收信人存在后,发出可以继续发送指示,客户端发送真正的数据,然后以 ”.“ 作为结束
  5. 当客户发送完所有邮件后,服务器开始发送邮件到客户,过程同上
  6. 两个方向都发送完成后,释放 TCP 连接
邮件接收协议

接收方通过邮件访问协议访问自己邮件服务器上的邮件。

常用的协议有 POP3 和 IMAP。

  1. POP3

    邮局协议(Post Office Protocol)采用 C / S 模式,是 Internet 上邮件的第一个离线协议

    离线协议指:允许用户从邮件服务器上将邮件下载并存储到本机中,下载后电子邮件代理可以删除或者修改任意邮件,无需与服务器进行交互。这样不必长时间的连接,很大程度上减少了服务器和网络的整体开销。

    初始时,客户的用户代理向邮件服务器的 TCP 端口 110 发出连接建立请求。当 TCP 连接建立后,首先进入认证阶段,通过 USER 和 PASS 命令发送用户名和密码信息。认证成功后,客户可以通过各种命令进行邮件操作,保持连接直到用户 quit。(或者超时中断)

  2. IMAP

    Internet Message Access Protocol 通过 Internet 获取邮件信息的协议。IMAP 也可以下载后离线阅读,相对 POP3,优势在于摘要浏览,可以让用户看完相关信息后,再选择下载。如果多个附件,也支持下载某一个。

    提供三种操作方式:

    • 在线方式:邮件保留在服务器,客户可以进行远程操作。类似 WebMail。
    • 离线方式:保留在客户端,与 POP 类似。
    • 分离方式:一部分在 Mail 服务器端,一部分在客户端。
    • WebMail 方式:使用浏览器,通过 HTTP 访问,管理邮件。需要通过 HTTP 登陆到邮件服务器,服务器将邮件用 HTML 的形式发送到浏览器上。并且可以通过浏览器完成发送邮件、管理邮件的操作。

万维网

通过 Web 对象使用超级文本整合文本、图像、视频等,并且使用超级链接将自己与其他 Web 对象进行关联。独立于各种操作系统环境。通过 WWW,人们可以很容易的访问各种信息和资源。

采用 C / S 模式,查询过程如下所示:

image-20211222093901658

WWW 服务包含 Web 服务器、客户端和通信协议 3 个部分。

  1. Web 服务器

    存放大量数据、文档和多媒体。主要作用是管理这些资源,并响应客户端请求。

  2. 客户端的用户代理(Web 浏览器)

    功能是向 Web 服务器发送资源查询请求。

  3. 通信协议(如 HTTP)

    通常使用 HTTP(超文本传输协议) 进行传输,定义了如何请求对象,如何发送对象。

WWW 服务使用 URL(统一资源定位器)来表示可用资源的位置和名称。基本思想是为 Internet 上任一主机上的可用公共资源提供一个唯一的定位方法。

URL 格式:protocol://machineaddress:port/path/filename

  • protocol:服务器和客户端通信使用的协议
  • machine address:数据所在机器的域名或者 IP 地址
  • port:Web 服务程序的端口号
  • path:数据在服务器上的路径
  • filename:数据文件名称
超文本传输协议

采用 C / S 模式,传输层使用 TCP 协议。

非持久连接和持久连接

HTTP 可以选择是否使用同一个连接发送多个文件

通常流程为:

  1. 客户向服务器发送 TCP 连接请求
  2. TCP 确认连接建立后,客户向服务器发送一个 HTTP 请求报文
  3. 服务器收到请求报文后,向客户响应一个包含资源的响应
  4. 数据传输完毕,释放 TCP 连接
  5. 客户端收到数据后,通过渲染将数据显示在浏览器上。

是否持久连接,就是在一个报文请求-响应结束后,是否立刻释放 TCP 连接,下次请求再请求建立连接。

持久连接可以减少建立的 TCP 连接数。有利于加速 HTTP 访问过程。

持久连接分为不带流水线和带流水线,不带流水线即收到响应之后再发送下一个请求,带流水线则是发送完请求之后立刻发送下一个。

HTTP报文格式

报文分为请求行、头部行、标志头部结束的空行、数据主体组成

image-20211222095141682

  • 请求行

    • 方法:请求的方法。标识想要进行的操作

      image-20211222095215117

    • 统一资源定界符(URL):指明 Web 对象位置

    • HTTP 版本号:目前版本号为 1.1

    • 状态码:用于标识响应的状态

      image-20211222095614747

  • 头部行

    • Accept:客户端能够接收的内容类型
    • Pragma:实现特殊指令的选项
    • Accept-language:优先选择的语言
    • Accept-Encoding:指定编码类型
    • User-Agent:指定浏览器类型
    • Host:请求资源 Internet 主机的 IP 和端口号。
    • Connection:指定是否持久连接
    • Date:请求或者响应的时间
    • Server:服务器类型
    • Content-type:指示接收方目前发送的文件的类型
    • Last-modified:上次修改时间
    • Content-length:正文中返回对象的长度
  • 数据

超文本标记语言

使用 HTML 语言进行描述文档

Web 网页可以分为三种类型:

  • 静态网页

    制作完成后网站内容不会发生变化

  • 动态网页

    访问时 Web 服务器应用程序动态根据数据进行创建

  • 活动网页

    一种静态网页,能在本地运行并产生不同的状态,刷新后回到初始内容。

由于 HTTP 无状态,所以需要一个指明身份的信息:Cookie

服务器生成保存在内存中,客户端保存在浏览器中,每次请求都携带以标识身份。

但这也同样带来了安全隐患,HTTP 封装 SSL 提供 HTTPS 解决这个问题。

Web加速机制

通过 Web 缓存技术提高用户获取信息的速度,减轻网络负担。

通常由 Web 缓存服务器对 Web 对象进行缓存。请求时首先访问缓存查看是否有信息。Web 缓存服务器定期查询是否有更新。

也常用镜像和内容分布网络(CDN)进行分散网络流量、均衡负载。镜像方式建立与源网站一样的站点来加速访问。CDN 将内容存储到复制服务器,并把用户导向最近的复制服务器,加快访问速度。

远程文件传输

image-20211222101910977

File Transfer Protocol,FTP 是一个在 Internet 上完成一个主机到另一个主机传输的协议。

在进行远程文件传输时,用户和服务器操作系统不同时,会导致文件操作不兼容。FTP 用来屏蔽不同,支持异构文件传输。

FTP 也采用 C / S 模式。基于TCP,使用保留端口21。

通过支持一个用户代理,连接 FTP 服务器,通过客户代理发送操作指令,服务器执行操作,并返回结果给用户代理。也可以进行上传、下载。

操作前需要使用用户名和口令登陆服务器。然后客户主动建立 TCP 连接。FTP支持并发访问,服务进程在收到请求后就建立一个进程控制连接。

存在两种连接方式:控制连接(端口 21)和数据连接(端口 20)。数据连接需要传输时动态创建,控制连接需要在连接中一直保持。

image-20211222101925074

支持两种工作模式:

  • 主动模式

    客户首先和服务器建立 21 端口连接,接收数据时,客户需要声明用哪一个端口接收数据(Port 指令),在传送数据时,服务器 20 端口主动与接受数据端口建立数据连接。

  • 被动模式

    客户建立控制连接后,服务器随即打开一个高端端口(> 1024),并通知客户在这个端口上接收数据(Pasv 指令),客户端主动连接这个端口并建立数据连接。

简单网络管理协议

网络管理是指控制一个复杂的计算机网络,使得它具有高效率和生产力过程。网络管理一般包括性能管理、故障管理、配置管理、计费管理和安全管理等五大功能域。使用最普遍的是简单网络管理协议(SNMP)。

采用管理者 / 代理模型。管理员通关管理系统,管理各种系统。

image-20211222102806425

由三部分组成:

  • 管理信息库 MIB

    定义通过 SNMP 协议进行管理的被管设备的信息集合

  • 管理信息结构 SMI

    定义所用信息的组织和标识,为 MIB 定义管理对象和管理对象提供模板

  • SNMP

    定义管理者如何对被管对象的 MIB 对象进行访问和控制

管理信息结构
  • 简单类型
  • 简单结构类型
  • 应用类型
管理信息库

保存管理者能够访问的控制和状态信息。

image-20211222103145630

SNMP

通过轮询和事件报告手机信息。

并且定义了五种操作

image-20211222103247625

报文格式

image-20211222103314278

评论