计算机通信网课程自学笔记2——应用层

这篇笔记详细介绍了计算机网络应用层的相关概念,包括应用层协议原理、HTTP、电子邮件、DNS、P2P文件分发和视频流等内容。重点讨论了HTTP的工作机制,如非持续连接与持续连接、报文格式、用户和服务器的交互以及Web缓存。此外,还涵盖了SMTP邮件传输协议和DNS服务,解释了其工作机理和重要性。
摘要由CSDN通过智能技术生成

前言


本人选择并阅读的参考书为《计算机网络——自顶向下方法第七版》,因此本人将尝试以书中的顺序来梳理自己的学习笔记。同时本人还借鉴了一些课程课件中的知识内容,也将一并与书本内容结合进行归纳。

应用层

  • 网络应用是计算机网络存在的理由

2.1 应用层协议原理

2.1.1网络应用程序体系结构

  • 现代网络应用程序中两种主流体系结构:客户-服务器体系结构对等(P2P)体系结构
  • 客户-服务器体系结构中,有一个总是打开的主机称为服务器,客户相互之间不直接通信。服务器具有固定的、周知的地址,该地址称为IP地址
  • 对等(P2P)体系结构中,对位于数据中心的专有服务器有最小的(或者没有)依赖。应用程序在间断连接的主机对之间使用直接通信,这些主机对被称为对等方。P2P体系结构具有自扩展性

2.1.2进程通信

  • 进行通信的实际上是进程而不是程序
  • 在两个不同端系统上的进程,通过跨越计算机网络交换报文而进行通信

    1.客户和服务器进程
    对每对通信进程,我们通常将这两个进程之一标识为客户,而另一个进程标识为服务器发起通信的进程被标识为客户,在会话开始时等待联系的进程是服务器

    2.进程与计算机网络之间的接口
    进程通过一个称为套接字的软件接口像网络发送报文和从网络接收报文。套接字是同一台主机内应用层与运输层之间的接口。套接字也被称为应用程序和网络之间的应用程序编程接口

    3.进程寻址
    为了表示接收进程,需要定义两种信息:①主机的地址;②在目的主机中指定接收进程的标识符。
    主机由其IP地址标识,IP地址是一个32比特的量且它能够唯一地标识该主机。
    接收进程由目的地端口号标识。

    在这里插入图片描述

2.1.3可供应用程序使用的运输服务

  • 要求:可靠数据传输吞吐量定时安全性

    1.可靠数据传输
    如果一个协议提供了有应用程序地的一端发送的数据正确、完全地交付给该应用程序的另一端,就认为提供了可靠数据传输

    2.吞吐量
    运输层协议能够以某种特定的速率提供确保的可用吞吐量
    具有吞吐量要求的应用程序被称为带宽敏感的应用
    弹性应用能够根据当时可用的带宽或多或少地利用可供提供的吞吐量

    3.定时
    服务为了有效性而要求数据交付有严格的时间限制

    4.安全性

2.1.4因特网提供的运输服务

  • 因特网(更一般的是TCP/IP网络)为应用程序提供两个运输层协议:UDPTCP

    1.TCP服务
    TCP服务模型包括面向连接服务和可靠数据传输服务
    一个TCP连接是双全工的,当应用程序结束报文发送时,必须拆除该连接

    2.UDP服务
    UDP是无连接的,因此在两个进程通信前没有握手过程

    3.因特网运输协议不提供的服务
    今天的因特网通常能够为时间敏感应用提供满意的服务,但是它不能提供任何定时或带宽保证

2.1.5应用层协议

应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文:

  • 交换的报文类型,例如请求报文和响应报文
  • 各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的
  • 字段的语义,即这些字段中的信息的含义
  • 确定一个进程何时以及如何发送报文,对报文进行响应的规则

2.2 Web和HTTP

2.2.1HTTP概况

  • Web的应用层协议是超文本传输协议(HTTP)
  • HTTP由两个程序实现:一个客户程序和一个服务器程序
  • HTTP定义了Web客户端向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式
  • Web浏览器实现了HTTP的客户端,Web服务器实现了HTTP的服务端
  • Web页面是由对象组成的,一个对象只是一个文件,多数Web页面含有一个HTML基本文件以及几个引用对象
  • 每个URL地址由两部分组成:存放对象的服务器主机名对象的路径名

    在这里插入图片描述
    因为HTTP服务器并不保存关于客户的任何信息,所以称HTTP为一个无状态协议

2.2.2非持续连接和持续连接

  • 对于客户-服务器交互:可以每个请求/响应经一个单独的TCP连接发送或者所有请求及其响应经相同的TCP连接发送
  • 若采用第一种方法,该应用程序被称为使用非持续连接
  • 若采用第二种方法,该应用程序被称为使用持续连接
  • 非持续连接有两个缺点:

    ①必须为每一个请求的对象建立和维护一个全新的连接
    ②每一个对象经受两倍RTT的交付时延,即一个RTT用于创建TCP另一个RTT用于请求和接收一个对象

2.2.3HTTP报文格式

  • HTTP报文有两种:请求报文响应报文

    1.HTTP请求报文
    HTTP请求报文的第一行叫做请求行,其后继的行叫做首部行
    请求行有三个字段:方法字段URL字段HTTP版本字段
    方法字段包括:GETPOSTHEADPUTDELETE

    2.HTTP响应报文
    响应报文有初始状态行首部行实体体
    状态行有三个字段:协议版本字段状态码响应状态信息

2.2.4用户和服务器的交互:cookie

  • 一个Web站点通常希望能够识别用户,可能是因为服务器希望限制用户的访问,或者因为它希望把内容与用户身份联系起来

    cookie技术有四个组件:
    ①在HTTP响应报文中的一个cookie首部行
    ②在HTTP请求报文中的一个cookie首部行
    ③在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理
    ④位于Web站点的一个后端数据库

在这里插入图片描述

2.2.5Web缓存

  • Web缓存器也叫代理服务器,它是能够代表初始Web服务器来满足HTTP请求的网络实体
  • Web缓存器既是服务器又是客户,可以大大减少对客户请求的响应时间,也可以大大减少一个机构的接入链路到因特网的通信量

2.2.6条件GET方法

  • 使得缓存器证实它的对象是最新的
    ①请求报文使用GET方法
    ②请求报文中包含一个“If-Modified-Since:”首部行

2.3 因特网中的电子邮件

  • 因特网中的邮件系统主要组成部分:用户代理邮件服务器简单邮件传输协议(SMTP)
  • 邮件服务器形成了电子邮件体系结构的核心


    在这里插入图片描述

2.3.1SMTP

  • SMTP一般不使用中间邮件服务器发送邮件
  • 在SMTP握手的阶段,SMTP客户指示发送方的邮件地址(产生报文的那个人)和接收方的邮件地址

2.3.2与HTTP的对比

  • 1.HTTP主要是一个拉协议。某些人在Web服务器上装载信息,用户使用HTTP从该服务器拉取这些信息。SMTP基本上是一个推协议,即发送邮件服务器把文件推向接收邮件服务器
  • 2.SMTP要求每个报文(包括它们的体)采用7比特ASCII码格式,而HTTP数据不受这种限制

2.3.3邮件访问协议

  • SMTP用来将邮件从发送方的用户代理传送到发送方的邮件服务器,再传输到接收方的邮件服务器。通过引入一个特殊的邮件访问协议,将邮件服务器上的报文传送给他的本地PC
  • 目前流行的邮件访问协议包括:第三版的邮局协议(POP3)因特网邮件访问协议(IMAP)以及HTTP

    1.POP3
  • POP3按照三个阶段来工作:特许事务处理以及更新
  • 在特许阶段,用户代理发送用户名和口令以鉴别用户
  • 在事务处理阶段,用户代理取回报文;同时在这个阶段用户代理还能对报文做删除标记、取消报文的删除标记以及获取邮件的统计信息
  • 在更新阶段,用户发出quit命令之后,目的是结束该POP3对话;这时,该邮件服务器会删除那些被标记为删除的报文

    2.IMAP
  • IMAP服务器把每个报文与一个文件夹联系起来
  • IMAP允许用户代理获取报文某些部分的命令

    3.基于Web的电子邮件
  • 用户代理就是浏览器
  • 电子邮件报文从浏览器发送到邮件服务器使用的是HTTP协议

2.4 DNS因特网的目录服务

  • 主机的一种标识方法是它的主机名,但是这并没有提供主机在因特网中位置的信息
  • 主机也可以用所谓的IP地址进行标识,其具有层次结构

2.4.1DNS提供的服务

  • 域名系统(DNS):一种能进行主机名到IP地址转换的目录服务
  • 域名系统(DNS)是
    ①:一个由分层的DNS服务器实现的分布式数据库
    ②:一个使得主机能够查询分布式数据库的应用层协议
  • DNS还提供一些重要的服务:
    ①:主机别名规范主机名
    ②:邮件服务器别名
    ③:负载分配

2.4.2DNS工作机理概述

  • 在单一DNS服务器上运行集中式数据库完全没有可扩展能力。因此,DNS采用了分布式的设计方案
    1.分布式、层次数据库
    根DNS服务器:提供顶级域服务器(TLD)的IP地址
    顶级域服务器(TLD):提供权威DNS服务器的IP地址
    权威DNS服务器
    本地DNS服务器

在这里插入图片描述

  • 当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将该请求转发到DNS服务器层次结构中


    在这里插入图片描述


    2.DNS缓存
  • 为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS广泛使用了缓存技术
  • 本地DNS服务器也能够缓存TLD服务器中的IP地址,因而允许本地DNS绕过查询链中的根DNS服务器。

2.4.3DNS记录和报文

  • 共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(RR),RR提供了主机名到IP地址的映射
  • 资源记录是包含了下列下列字段的四元组(Name,Value,Type,TTL)
  • TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间

2.5 P2P文件分发


2.6视频流和内容分发网

2.6.1因特网视频

  • 对流式视频的最重要的性能度量是平均端到端吞吐量

2.6.2HTTP流和DASH

  • 在HTTP流中,字节被收集在客户应用缓存中。一旦该缓存中的字节数量超过预先设定的门限制,客户应用程序就开始播放。
  • HTTP动态适应流(DASH),视频编码为几个不同的版本,其中每个版本具有不同的比特率,对应于不同的质量水平。客户动态地请求来自不同版本且长度为几秒的视频段数据块。

2.6.3内容分发网

  • 几乎所有主要的视频流公司都利用内容分发网(CDN)
  • CDN管理分布在多个地理位置上的服务器在它的服务器中存储视频(和其它类型的Web内容,包括文档、图片和音频)的副本,并且所有试图将每个用户请求定向到一个将提供最好的用户体验的CDN位置
  • CDN可以分为:专有CDN第三方CDN

    1.CDN操作
  • 大多数CDN利用DNS来截获和重定向请求

    2.集群选择策略
  • 集群选择策略动态地将客户定向到CDN中的某个服务器集群或数据中心

2.7套接字编程:生成网络应用

  • 典型的网络应用是由一对程序(即客户程序和服务器程序)组成的,它们位于两个不同的端系统中。当运行这两个程序时,创建了一个客户进程和一个服务器进程,同时它们通过从套接字读出和写入数据在彼此之间进行通信
  • UDP套接字与TCP不同的是,TCP是面向连接的协议,需要先握手并创建一个TCP连接。除此之外,TCP有欢迎套接字(这是所有要与服务器通信的客户的起始接触点)和连接套接字(这是随后为与每个客户通信而生成的套接字)

    在这里插入图片描述

跳转

我们将以以下顺序进行总结:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目:使用AngularJs编写的简单 益智游戏(附源代码)  这是一个简单的 javascript 项目。这是一个拼图游戏,也包含一个填字游戏。这个游戏玩起来很棒。有两个不同的版本可以玩这个游戏。你也可以玩填字游戏。 关于游戏 这款游戏的玩法很简单。如上所述,它包含拼图和填字游戏。您可以通过移动图像来玩滑动拼图。您还可以选择要在滑动面板中拥有的列数和网格数。 另一个是填字游戏。在这里你只需要找到浏览器左侧提到的那些单词。 要运行此游戏,您需要在系统上安装浏览器。下载并在代码编辑器中打开此项目。然后有一个 index.html 文件可供您修改。在命令提示符中运行该文件,或者您可以直接运行索引文件。使用 Google Chrome 或 FireFox 可获得更好的用户体验。此外,这是一款多人游戏,双方玩家都是人类。 这个游戏包含很多 JavaScript 验证。这个游戏很有趣,如果你能用一点 CSS 修改它,那就更好了。 总的来说,这个项目使用了很多 javascript 和 javascript 库。如果你可以添加一些具有不同颜色选项的级别,那么你一定可以利用其库来提高你的 javascript 技能。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值