第二章第一节 应用层协议原理

网络应用是计算机网络存在的理由,在本章中,我们学习有关网络应用的原理和实现方面的知识。我们学习包括应用沉香谷所需要的网络服务、客户和服务器、进程和运输层接口。

我们详细考察几种网络应用程序,包括Web、电子邮件、DNS 和 P2P文件分发。

Outline

  • 网络应用程序体系结构
  • 进程通信
  • 因特网提供的运输服务
    • TCP
    • UDP
  • 应用层协议

Notes

## 应用程序体系结构

应用程序体系结构由应用程序研发者设计,规定了如何在各种端系统上组织该应用程序。

三种程序结构为:客户 - 服务器体系结构、对等(P2P)体系结构混合结构

【客户-服务器体系结构】

  • 定义:有一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求
  • 服务器
    • 对外提供不间断服务
    • 服务器具有固定的、周知的地址(IP地址)
    • 利用大量服务器实现可扩展性(数据中心)
  • 客户端
    • 客户端使用服务,间歇性接入网络
    • 可能使用动态的IP地址
    • 客户端之间不相互通信
  • 栗子:Web服务器、FTP、电子邮件

【P2P体系结构】

  • 特点:

    • 对于位于数据中心的专用服务器有最小(或没有)的依赖
    • 任意端系统/节点可以直接通信,这些主机被称为对等方
    • 端系统间歇性接入网络,可能改变IP地址
  • 栗子(流量密集型应用):文件共享、对等方协助下载加速器(迅雷)、因特网电话等
  • 优点:自扩展性(成本可控、通过与其他对等方分发文件以增加服务能力)
  • 缺点:难以管理
  • 三大挑战
    • ISP友好:大多数住宅ISP的下载要比上载多得多,ISP已经受制于非对称的带宽应用
    • 安全性:因为高度分布和开放特性,P2P给安全带来挑战
    • 激励:要税负用户资源提供带宽、存储和计算资源

【混合结构】

P2P难于管理,那我们就混入C/S的集中管理。C/S中服务器压力过大,我们就混入P2P中的P们来为它减轻负担。Napster就是这样做的。

Napster:文件传输使用P2P结构,文件搜索使用C/S结构

## 进程通信

  • 进程:一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度运行的基本单位
  • 如果同一主机上运行的进程想互相通信,它们可以通过进程间通信机制来完成,这种机制是由操作系统提供的
  • 两个不同端系统上的进程,通过跨越计算机网络交换报文(message)而相互通信
  • 端系统的进程通过套接字进行接受报文或发送报文
  • 网络应用程序是由成对的进程组成,这些进程通过网络相互发送报文。对每对通信进程,我们将其中的一个标记为客户(client,一般为发起通信的一方),另一个标记为服务器(server,等待联系的一方)

【套接字(Socket)】

  • 套接字是同一台主机内应用层与运输层之间的接口

  • 套接字相当于一个公用的中间语言,让不同的主机可以顺利通话。
  • 套接字是建立网络应用程序的可编程接口,因此套接字也称为应用程序和网络之间的应用程序编程接口(Application Programming Interface,API)
  • 应用程序开发者可以控制应用层端的一切,但对于套接字运输端的控制仅限于:
    • 选择运输层协议;
    • 也许能设定几个运输层参数,如最大缓存和最大报文段长度等(将在第3章中涉及)。

【进程寻址】

  • 如果想实现不同主机上的进程间通信,每个主机必须拥有标识符——IP地址,每个进程需要拥有标识符——端口号
  • 进程的标识符 = IP地址+端口号
  • IP地址是一个32比特的量且唯一的标识主机,更多的内容请参考第4章
  • 端口号如:HTTP Sever:80

## 因特网提供的运输服务

【网络应用的需求和传输层服务】

  • 运输层协议提供的运输服务包括:

    • 可靠数据传输(容忍丢失)
    • 吞吐量(带宽敏感)
    • 时序/延迟
    • 安全性
  • 常见的应用所需的运输服务

 【Internet提供的两类传输服务——TCP服务】

  • TCP服务模型包括面向连接服务可靠数据传输服务,TCP还提供拥塞控制机制
  • 服务的具体描述:

    • 面向连接:客户机/服务器进程间需建立连接。握手过程提示客户和服务器,使它们为大量分组的到来做好准备。在握手阶段后,一个TCP连接(TCP connection)就在两个进程的套接字之间建立了。
    • 可靠的传输:通信进程能够依靠TCP,无差错、按适当顺序交付所有发送的数据。
    • 流量控制:发送方不会发送过快,超过接收方的处理能力。
    • 拥塞控制:当网络负载过重时能够限制发送方的发送速度。
    • 不提供时间/延迟保障。
    • 不提供最小带宽保障。

Internet提供的两类传输服务——UDP服务

  • UDP是一种不提供不需要服务的轻量级运输协议。
  • 无连接:它不需在两主机间建立连接。
  • 提供不可靠的数据传输
  • 不提供拥堵控制UDP的发送端可以用它选定的任何速率向其下层(网络层)注入数据(值得注意的是实际端到端吞吐量可能小于这种速率,这可能是因为中间链路的带宽受限或因为拥塞而造成的)
  • 也不提供:可靠性保障、流量控制、延迟保障、带宽保障。

【常见应用选择的运输协议】

## 应用层协议

  • 运输服务遵循应用层协议

    • 公开协议:由RFC定义,标准化的HTTP、SMTP等
    • 私有协议:多数P2P文件共享应用
  • 应用层协议的主要内容
    • 消息的类型(type):请求消息,响应消息。
    • 消息的语法(syntax)/格式:消息中有哪些字段,每个字段如何描述。
    • 字段的语义(semantics):字段中信息的含义。
    • 规则(rules):进程何时发送/响应消息等。
  • 以HTTP为例;

转载于:https://www.cnblogs.com/hithongming/p/9329180.html

【计算机网络】2.1 应用层协议原理相关推荐

  1. 计算机网络--应用层-应用层协议原理

    应用层-应用层协议原理 应用层协议原理 网络应用程序体系结构 客户-服务器体系结构 P2P体系结构 进程通信 客户和服务器进程 进程与计算机网络之间的接口 进程寻址 可供应用程序使用的运输服务 可靠数 ...

  2. 计算机网络(七):应用层协议原理

    零.基础理论 网络应用是计算机网络存在的理由,如万维网(包含了web冲浪.搜索和电子商务),以及具有好友列表的即时讯息和对等(P2P)文件共享. 网络应用都是在端系统上的. 网络应用的基本概念.原理: ...

  3. 应用层———应用层协议原理(1)

    应用层协议原理 一.网络应用程序体系结构 1.客户-服务器体系结构(client-server architecture) 2.P2P 体系结构(P2P architecture) 二.进程通信 1. ...

  4. 2 应用层 - 应用层协议原理

    应用层协议原理 一.网络应用程序体系结构 客户机/服务器 体系结构 纯P2P 体系结构 客户机/服务器与P2P的混合 二.进程通信 客户机和服务器进程 套接字(socket) 进程与套接字关系 进程寻 ...

  5. 计算机网络应用层协议实验,计算机网络实验报告--应用层协议.doc

    计算机网络实验报告--应用层协议 附件1 中北大学经济与管理学院 实验报告 课程名称 计算机网络 学号 1409044119 学生姓名 辅导教师 段庆峰 系别信息管理与信息系统实验室名称实验时间1.实 ...

  6. 计算机网络基础知识--应用层协议HTTP、FTP、SMTP

    目录 1. HTTP 协议 HTTP 特点 HTTP 与HTTPS 的区别 HTTP 请求报文 HTTP 响应报文 2. FTP 协议 与TFTP 协议 FTP 协议 TFTP 协议 3. SMTP ...

  7. 计算机网络应用层协议分析总结

    1.应用层协议原理 1.1.网络应用程序体系结构 C/S结构,有一个总是打开的主机称为服务器,它服务于来自许多其他称为客户机的主机请求.客户机主机既可能有时打开,也可能总是打开.C/S结构之下,客户机 ...

  8. [计算机网络]应用层协议,HTTP,SMTP,DNS

    应用层 应用层协议原理 网络应用程序体系结构 规定如何在各种端系统上组织应用程序,由研发者设计 客户机/服务器 服务器:对外提供服务的一系列硬件和软件 客户机:使用服务器提供的服务 服务器 7*24小 ...

  9. [计算机网络]第二章——应用层

    文章目录 [计算机网络]第二章--应用层 概述 一.应用层协议原理 1.网络应用程序体系结构 客户-服务器体系结构C/S P2P(对等)体系结构 混合C/S加P2P的体系结构 2.进程通信 客户和服务 ...

最新文章

  1. 使用Navicat定时备份mysql数据库和创建报表并邮件自动发送
  2. python语言基础-Python语言基础01-初识Python
  3. 【Flask】ORM高级操作之分组、过滤和子查询
  4. 文本转换成htmldocument
  5. uva 10562 - Undraw the Trees
  6. Telnet和FTP
  7. oracle 序列赋值变量,Oracle变量的定义、赋值及使用
  8. Delphi 常用API 函数
  9. 【渝粤教育】国家开放大学2018年秋季 0053-21T移动通信技术与移动通信设备 参考试题
  10. Java编程框架——Spring Cloud微服务架构实践经验总结
  11. 拓端tecdat|R语言提取时间序列的周期性成分应用EMD,小波滤波器,Baxter过滤器等
  12. Linux vip地址通信原理,IPv6的组播地址(掌握IPv6通信原理的关键知识点)
  13. 一个数根号3怎样用计算机计算,手机计算器怎样打出根号3
  14. 4 基于pyecharts的python数据可视化——散点图和折线图的绘制
  15. Java最常见208道面试题:Java大土豆答案
  16. Ruby语言的优点和缺点
  17. 阿里巴巴新开店铺权重提升的方法
  18. DOS命令窗口(黑窗口)
  19. 吊炸天,Spring Security还有这种用法
  20. labelme 批量转换json文件 详细步骤

热门文章

  1. 关于数学中“函数(function)”的含义
  2. DELL台式机安装Centos7无法正常展示图形化安装界面
  3. FPGA通过PCIe读写DDR4仿真IP核
  4. Android 动态修改app名称(市场和手机中显示两个不同的名称)
  5. Dojo.Book中文版
  6. java计算机毕业设计科院垃圾分类系统源码+数据库+系统+lw文档+mybatis+运行部署
  7. K8s 多节点部署流程
  8. Element UI, Ant Design Vue
  9. 小伙伴面试之成都创宇知道
  10. 记录:阿里云滑动验证