『computer network-5』application layer

应用层

一、套接字编程接口

  • 套接字socket:应用进程传输层协议间的接口,AP为获得网络通信服务与OS进行交互的机制
    注意:套接字是最常用的应用层编程接口,应用程序通过socket接入网络

  • 基于TCP系统的系统调用接口:

    1. 连接建立阶段:
      1. bind:客户端和服务器分别将端口号 + IP地址绑定在socket上
      2. listen:服务器调用listen将套接字设置为被动方式,随时接受客户请求
      3. accept:服务器调用accept提取客户请求,并为每个新连接请求建立新的套接字返回给客户;通信结束后,新的套接字关闭
      4. connect:客户端调用connect与远程服务器建立连接(主动打开)
    2. 数据传送阶段:
      • send:客户端使用send发送请求;服务器使用send发送回答
      • recv:服务器使用recv接收请求;客户端使用recv接收发送请求后的回答
    3. 连接释放阶段:调用close释放连接,撤销套接字
  • 基于UDP系统的系统调用接口:无需建立连接,没有connect与listen+accept

  • 套接字描述符:AP发出socket系统调用后,OS为其分配网络通信所需系统资源,并将这些资源用套接字描述符表示并返回给AP
    注意:几乎所有网络系统调用都使用socket descriptor作为第一个参数,用于识别完成网络请求所需的各种资源(CPU、带宽 等)


二、域名系统 DNS

  • 域名系统:Internet使用的命名系统,采用层次结构的命名树作为主机名字(IP地址不易记忆),属于分布式系统

    • 域名服务器程序:实现 域名 \(\rightarrow\) IP地址 的解析,其运行在域名服务器上
    • DNS基于UDP协议实现:域名解析过程如下:
      1. AP调用域名解析程序,其成为DNS的一个客户
      2. AP将待解析的域名放在DNS请求报文中,以UDP用户数据报的形式发给本地域名服务器
      3. 本地域名服务器查找域名,并把对应的IP地址放在回答报文中返回给AP
  • Internet的域名结构:采用层次树状结构命名,不区分大小写,且域名长度 \(\le\) 255字符

    • 顶级域名TLD:国家顶级域名(.cn, .us, ...) + 通用顶级域名(.com, .edu, .gov, org, ...)

    • 域名服务器:主要分为以下4类:

      • 根域名服务器:存有其所知的所有顶级域名服务器的域名 + IP地址
        注意:根域名服务器一般并不直接将待查询域名转换为IP,而是告诉本地域名服务器下一步要查哪个顶级域名服务器
      • 顶级域名服务器:管理在该顶级域名服务器注册的所有二级域名
      • 权限域名服务器:负责一个区的域名服务器
      • 本地域名服务器:又称默认域名服务器

      注意:域名服务器定期把数据复制到多个域名服务器保存,其中一个为主域名服务器、其余为辅助域名服务器

    • 域名查询:分为递归查询 + 迭代查询

      • 主机 向 本地域名服务器 查询采用递归查询
        • 本地域名不知道待查询域名的IP,就向其它服务器发送请求报文,最终返回待查询IP地址(无需主机自己查询
      • 本地域名服务器 向 根域名服务器 查询采用迭代查询:每次迭代需要让本地域名服务器自己去查询
        • 根域名服务器知道IP地址,直接给出IP地址
        • 若其不知道IP地址,告诉本地域名服务器后续向哪个域名服务器查询:
          • 顶级域名服务器知道IP地址,直接给出IP地址
          • 若其不知道IP地址,告诉本地域名服务器后续向哪个域名服务器查询:
            • 权限域名服务器给出待查询域名对应的IP地址;本地域名服务器将该IP返回给主机

      注意:为了提高查询效率,通常使用高速缓存存储域名映射;以下8步查询共需要8个UDP用户数据报


三、文件传输协议 FTP

  • FTP的客户/服务器方式:服务器进程由以下2部分组成:

    • 主进程:负责接收新的请求,工作步骤如下:

      1. 打开熟知端口(21),使客户进程能够连接得上
      2. 等待客户进程发出连接请求
      3. 启动从属进程处理客户进程发来的请求
      4. 回到等待状态,继续接受其它客户进程发来的请求
    • 若干从属进程:负责处理单个请求,其运行过程中可能会创建其它子进程,请求处理完毕后立即终止

      • 控制连接:整个会话期间一直保持打开,客户端发送的传送请求 通过控制连接发送给 服务器的控制进程 注意:控制进程不用于传送文件,仅用于发送控制信息
      • 数据连接:收到客户发来的文件传输请求后,服务器控制进程创建数据连接,负责实际完成文件传送;传送完毕后关闭连接


四、万维网 WWW

  • 万维网概述:一个分布式的超媒体系统,是超文本系统的扩充

    • URL:标识分布在Internet上的万维网文档
    • HTTP:实现万维网上各种超链的链接
    • HTML:存储并表示万维网文档的方式

    注意:"超文本"指包含指向其它文档的链接的文本;"超媒体"还可包含图形、图像、声音等信息

  • 统一资源定位符 URL:对 Internet 上 资源位置访问方法 的一种简洁表示

    • URL一般形式:<协议>://<主机>:<端口>/<路径>

      • 协议:指出使用何种方式获取万维网文档,如http或ftp
      • 主机名:万维网文档所存放主机的域名(通常以www开头),也可用点分十进制的IP地址代替
      • 端口:指出端口号,如省略则为协议默认端口号;若不使用默认端口号,则必须写明
      • 路径:包含若干斜线的较长字符串

      注意:URL不区分大小写


  • 超文本传送协议 HTTP:面向事务的应用层协议,基于TCP协议

    • HTTP工作原理:

      1. Web服务器进程在熟知端口号80上监听
      2. 客户需要请求某个页面时,与服务器建立TCP连接,并传送文件;传送完毕后释放TCP连接
    • HTTP/1.0:每请求一个文档都需要建立一次TCP连接,非持续连接,加重服务器负担

    • HTTP/1.1:使用持续连接,发送响应后在一段时间内保持连接,包括非流水线方式 + 流水线方式

      • 非流水线方式:收到前一个响应才能发送新的请求,每访问一次对象花费一个RTT时间
      • 流水线方式:收到前一个响应就能发送新的请求,访问所有多项均只需花费一个RTT时间
    • HTTP报文类型:主要包括以下2类:

      • 请求报文:客户 \(\rightarrow\) 服务器 请求报文
      • 响应报文:服务器 \(\rightarrow\) 客户 回答报文

      注意:HTTP的两类报文都是面向文本的,报文中的字段都是ASCII码串,故每个字段长度不固定

    • HTTP报文结构:两种报文均由三部分组成:

      • 开始行:区分报文类型;请求报文中叫做请求行,响应报文中叫做状态行

        • 请求行:<方法> + <URL> + <HTTP版本>;"方法"也是命令,包括OPTION、GET、POST等

        • 状态行:<HTTP版本> + <状态码> + <简单短语>;"状态码"都是三位数字,分为以下5类:

          • 1xx:通知信息,如收到请求 or 正在处理
          • 2xx:成功,如接收 or 知晓
          • 3xx:重定向,如要完成请求必须采取进一步行动
          • 4xx:客户差错,如请求中有错误的语法 or 不能完成
          • 5xx:服务器差错,如服务器无法完成请求

      • 首部行:用来说明浏览器 or 服务器 or 报文主体的信息;每行都有首部字段名 + 对应值

      • 实体主体:请求报文中一般不使用该字段;响应报文中也可能没有这个字段


  • 超文本标记语言 HTML:制作万维网页面的标准语言(不是应用层协议);HTML文档是文本格式

    • 标签 tag:HTML用于排版的命令
    • 浏览器从服务器读取HTML文档(后缀必须是.html),根据显示器分辨率显示页面

  • 安全的HTTP协议(HTTPS):建立在SSL基础上

    • 熟知端口号:HTTPS为443,而HTTP为80
    • 安全套接层 SSL:Secure Socket Layer,为TCP协议提供信息加密完整性

五、电子邮件

  • 电子邮件系统中的实体:分为以下2类:

    • 用户代理UA:电子邮件客户端软件,是用户电子邮件系统的接口,支持撰写、显示、处理、通信
    • 邮件服务器:用于发送接收邮件,并向发信人报告传送结果;可以作为客户 or 服务器

  • 简单邮件传送协议 SMTP:用于发送邮件的协议;发件方是客户、接收方是服务器

    • SMTP通信三阶段:
      1. 连接建立:连接在 SMTP客户SMTP服务器 之间建立(无中间邮件服务器)
      2. 邮件传送
      3. 连接释放:邮件发送完毕后,SMTP释放TCP连接
    • SMTP局限性:不能传输可执行文件 or 其它二进制对象(图片、音乐 等)
  • 读取邮件的协议:POP3 和 IMAP

  • 电子邮件信息格式:电子邮件分为信封 + 内容;邮件内容分为首部 + 主体

    • 首部字段:其格式包含以下6个字段
      • To:填入若干个收件人的e-mail地址
      • Subject:邮件主题,反映邮件主要内容
      • Cc:抄送,表示给某人发送一个邮件副本
      • From:发件人的e-mail地址
      • Date:发信日期
      • Reply-to:对方回信的地址
    • 主体:由用户自由撰写
  • 通用互联网邮件扩充 MIME:增加邮件主体结构,定义了传送非ASCII码的编码规则,改善了SMTP的问题

    • MIME思路:
      • 继续沿用目前的电子邮件信息格式
      • 对二进制数据进行编码,将其转换为7位的ASCII码
    • 新增的5种头部字段:
      • MIME-Version:MIME版本号,一般为1.0
      • Content-Type:报文体中的数据类型子类型
      • Content-Transfer-Encoding:传输时的编码格式
      • Content-ID:邮件唯一的标识符
      • Content-Description:供人阅读的内容描述字符串,说明主体是否为图像、音频 or 视频
    • 传输编码规则:
      • base64:原二进制数据中每6bit被映射为8bit(ASCII字符)
      • quoted-printable:原二进制数据的8bit(1Byte)换算为2个16进制数,并在每个Byte前加"="

『computer network-5』application layer
http://larry0454.github.io/2024/06/01/computer_network/application-layer/
Author
WangLe
Posted on
June 1, 2024
Licensed under