2.1 应用层协议原理

  2.1.1网络应用程序体系结构

  1)在客户-服务器体系结构 (client-server architecture)中,有一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求。著名的应用程序包括Web、FTP、Telnet和电子邮件.

  2)在一个P2P体系结构(P2P architecture)中,对位于数据中心的专用服务器有最小的(或者没有)依赖。相反,应用程序在间断连接的主机对之间使用直接通信,这些主机对被称为对等方。

  2.1.2 进程通信

  1)客户与服务器进程

  在一对进程之间的通信会话场景中,发起通信(即在该会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程是服务器.

  2) 进程与计算机网络之间的接口

  进程通过一个称为套接字(socket)的软件接口向网络发送报文和从网络接收报文。应用程序可以控制套接字在应用层端的一切,但是对该套接字的运输层几片没有控制权。除选择运输层协议与设定几个运输层参数,如最大缓存和最大报文段长度等。

  3)进程寻址

  Web服务器用端口号80来标识,邮件服务器进程(使用SMTP协议)用端口号25来标识。

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

  一个运输层协议能够为调用它的应用程序提供什么样的服务呢?从四个方面对应用程序服务要求进行分类:可靠数据传输、吞吐量、定时、安全性.

  2.1.4 因特网提供的运输服务

  1)TCP服务

  TCP服务模型包括面向连接服务和可靠数据传输服务,TCP还提供拥塞控制机制

  • 面向连接:客户机/服务器进程间需建立连接。握手过程提示客户和服务器,使它们为大量分组的到来做好准备。在握手阶段后,一个TCP连接(TCP connection)就在两个进程的套接字之间建立了。这条连接是全双工的,即连接双方的进程可以在此连接上同时进行报文收发。
  • 可靠的传输:通信进程能够依靠TCP,无差错、按适当顺序交付所有发送的数据。

  2) UDP服务

  UDP是一种不提供不需要服务的轻量级运输协议,无连接:它不需在两主机间建立连接,提供不可靠的数据传输

  3) 因特网运输协议所不提供的服务

  2.1.5 应用层协议

  • 公开协议:由RFC定义,标准化的HTTP、SMTP等
  • 私有协议:多数P2P文件共享应用

2.2 Web和HTTP

  2.2.1 HTTP 概况

  Web 的应用层协议是超文本传输协议(HyperText Transfer Protocl,HTTP),它是Web的核心。

  • web页面=多个对象组成(对象只是一个文件,如一个html文件,一个图形,一个java小程序或一个视频)。每个对象通过一个对应的URL寻址。
  • HTTP使用TCP作为它的支撑运输协议。
  • HTTP服务器并不保存关于客户的任何信息,所以我们说HTTP是一个无状态协议(stateless protocol)

  2.2.2 非持续连接和持续连接

  使用持续连接或非持续连接是由应用层决定的(HTTP默认使用的是持续连接)

  1)采用非持续连接的HTTP

  每个TCP连接只传输一个请求报文和一个响应报文。每次服务器发送响应报文后,会通知该TCP断开该TCP连接。HTTP客户接收响应报文,TCP连接关闭。

  2)采用持续连接的HTTP

  非持续连接的两个缺点:

  • 要为每个请求的对象建立一个连接,对于每个连接,客户和服务器中都要分配TCP缓冲区和保持TCP变量,给服务器带来严重负担;
  • 每个对象都要遭受两倍RTT的交付时延,一个RTT用来创建TCP,另一个RTT用来请求和接受一个对象。

  服务器在发送响应之后保持该TCP连接打开。因此,位于同一台服务器的多个Web页面都可以在单个TCP上进行传输。请求可以一个接一个地发而不必等待未决请求的回答(流水线)。

  2.2.3 HTTP报文格式

  1.HTTP请求报文

  一个典型的http请求报文:

GET /somedir/page.html HTTP/1.1
Host: www.hans941.tk
Connection: close
User-agent: Chrome/57.0
Accept-language: ch

  下图是请求报文的通用格式

  

  首部行后面的 实体体(Entity body),在使用 POST 方法时存储用户提交的表单。

  2.HTTP响应报文

  http响应报文由三部分组成:一个初始状态行(status line),之后有6个首部行(header line),然后是实体体(entity body)

HTTP/1.1  OK
Connection: close
Date: Tue, Aug :: GMT
Server: Apache/2.2. (CentOS)
Last-Modified: Tue, Aug :: GMT
Content-Length:
Content-Type: text/html (data data data data data ......)

  一个HTTP响应报文的通用格式

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

  HTTP服务器是无状态化的,这简化了服务器的设计,这让工程师可以去开发能同时处理大量数据的高性能服务器。但是有时Web站点希望能去识别用户,为此HTTP使用了cookie来进行用户跟踪。

  cookie技术有4个组件:

  • 在 HTTP 响应报文中的一个 cookie 首部行;
  • 在 HTTP 请求报文中的一个 cookie 首部行;
  • 在用户端系统中保留有一个 cookie 文件,并由用户的浏览器进行管理;
  • 位于 Web 站点的一个后端数据库。

  

  2.2.5 Web缓存

  Web缓存器(Web cache)也叫代理服务器(proxy server),它是能够代表初始Web服务器来满足HTTP请求的网络实体.Web缓存器有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本。

  客户对过Web缓存器请求对象:

  

  2.2.6 条件GET方法

  那么Web缓存器什么时候才会去刷新缓存下来的页面,以保存提供给客户是最新的对象呢?

  HTTP协议有一处机制-----条件GET(conditional GET)方法。

  若同时满足以下两点的则称为 条件 GET 方法:

  • 请求报文使用 GET 方法。
  • 请求报文中包含一个 If-Modified-Since: 首部行。

  例:

  客户端发送请求:

GET / HTTP/1.1
Host: www.sina.com.cn:
If-Modified-Since:Thu, Feb :: GMT
Connection: Close

  当没有更新时服务器的响应:

HTTP/1.0  Not Modified
Date: Thu, Feb :: GMT
Content-Type: text/html
Expires: Thu, Feb :: GMT
Last-Modified: Thu, Feb :: GMT
Age:
X-Cache: HIT from sy32-.sina.com.cn
Connection: close

  状态行中的Not Modified,它告诉缓存器可以使用该对象,能向请求的浏览器转发它(该代理缓存器)缓存的该对象副本。

2.3 因特网中的电子邮件

  电子邮件系统有3个重要组成部分:用户代理(user agent)、邮件服务器(mail server)和简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)

 

 

  

  用户代理允许用户阅读、回复、转发、保存和撰写报文。

  邮件服务器组成了电子邮件体系结构的核心。每个接收方在其中的某个服务器上有一个邮箱。邮箱包含用户的到达报文、离开(将发送)邮件报文的报文队列;在发送电子邮件报文的邮件服务器之间采用SMTP协议。

  SMTP是因特网电子邮件中主要的应用层协议。它使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。

  2.3.1 SMTP

  • SMTP是电子邮件应用的核心,使用TCP从客户机到服务器可靠地传输电子邮件报文,用端口25,属于TCP/IP协议族。
  • SMTP一般不使用中间邮件服务器发送邮件,他采用直接传输的方式,从发送服务器到接受服务器
  • 传输共有三个阶段:握手、报文传输、关闭

  2.3.2 与HTTP的对比

  相同:当进行文件传送时,持续的HTTP和SMTP都使用持续连接

  不同:

  • HTTP主要是一个拉协议(pull protocol):即在方便的时候,某些人在Web服务器上装载信息,用户使用HTTP从该服务器拉取这些信息;SMTP主要是一个推协议(push protocol):即发送邮件服务器把文件推向接收邮件服务器,这个连接是由要发送该文件的机器发起的。
  • SMTP要求每一个报文(包括他们的体)使用7比特ASCII码格式,若非如此,则强制转化;HTTP没有这样的编码限制
  • HTTP把每个对象封装到它自己的HTTP响应报文中;SMTP把所有报文对象放在一个报文之中。

  2.3.3 邮件报文格式

  一个典型的报文首部如下:

From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Searching for the meaning of life.

  在报文首部之后,紧接着是一个空白行,然后是以ASCII格式表示的报文主体。

  2.3.4 邮件访问协议

  在上述分析中,有一个疏漏的环节,那就是在Alice向Bob发送邮件的过程中,Bob是如何通过运行在他本地PC上的用户代理,获得位于某ISP的邮件服务器上的他的邮件呢?注意到Bob的用户代理不能使用SMTP来取回邮件,因为取邮件时一个拉操作,而SMTP是一个推协议。因此我们要引入邮件访问协议,包括第三版的邮局协议(POP3)、因特网邮件访问协议(IMAP)以及HTTP。

  下图总结了应用于因特网电子邮件的一些协议:SMTP用来将邮件从发送发的邮件服务器传输到接收方的邮件服务器。如POP3这样的邮件访问协议用来将邮件从接收方的邮件服务器传送到接收方的用户代理。

 

  1)POP3

  • POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,是TCP/IP协议族中的一员(默认端口是110)。
  • 它被用户代理用来邮件服务器取得邮件。POP3采用的也是C/S通信模型,对应的RFC文档为RFC1939。
  • POP3支持电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。

  2) IMAP

  • IMAP 全称是 Internet Mail Access Protocol,即互联网邮件访问协议,是一个应用层协议(端口是143)。用来从本地邮件客户端(Outlook Express、Foxmail、Mozilla Thunderbird等)访问远程服务器上的邮件。
  • 开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。

  3) 基于Web的电子邮件

  当用户用Web浏览器使用电子邮件时,用户和他远程邮箱之间的通信则通过HTTP;然而,用户的邮件服务器在与其他的邮件服务器之间发送和接收邮件时,仍然使用的是SMTP。

参考:

https://www.cnblogs.com/hithongming/p/9343593.html

https://www.jianshu.com/p/1b53e88e5864

计算机网络自顶向下方法第2章-应用层(application-layer).1的更多相关文章

  1. 计算机网络自顶向下方法第2章-应用层(application-layer).2

    2.4 DNS:因特网的目录服务 2.4.1 DNS提供的服务 DNS的定义 实体层面看,DNS是一个由分层的DNS服务器实现的分布式数据库 协议层面看,DNS是一个使得主机能够查询分布式数据库的应用 ...

  2. 计算机网络自顶向下方法第3章-传输层 (Transport Layer).1

    3.1 概述和运输层服务 运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication)功能. 3.1.1 运输层和网络层的关系 网络层提供了主机之间的逻辑通信,而 ...

  3. 计算机网络自顶向下方法第4章 网络层:数据平面 (Network layer)

    4.1 网络层概述  网络层主要功能为转发(将数据从路由器输入接口转移到合适的输出接口)和路由选择(端到端的路径选择),每台路由器都有一张转发表,用最长前缀匹配规则来转发. 4.1.1 转发和路由选择 ...

  4. 计算机网络自顶向下方法第3章-传输层 (Transport Layer).2

    3.5 面向连接的运输: TCP 3.5.1 TCP连接 TCP是因特网运输层的面向连接的可靠的运输协议. TCP连接提供全双工服务(full-duplex service). TCP连接是点对点的连 ...

  5. 《计算机网络 自顶向下方法》 第2章 应用层 Part1

    常见的应用层协议有哪些?  HTTP(HyperText Transfer  Protocol):超文本传输协议 FTP(File Transfer Protocol):文件传输协议 SMTP(Sim ...

  6. 《计算机网络 自顶向下方法》 第2章 应用层 Part2

    域名.主机名?   从范围上看: 域名的范围比主机名大 一个域名下通常有多个主机名 从组成上看: 主机名 = 服务器名(或计算机名) + 域名 举例说明: baidu.com 是百度的域名 www.b ...

  7. 《计算机网络 自顶向下方法》 第8章 计算机网络中的安全 Part2

    SSL(使 TCP 连接安全) SSL(Secure Socket Layer),即安全套接字层,是对 TCP 的强化 HTTPS 使用 SSL,而 HTTP 不使用 SSL 通过采用机密性.数据完整 ...

  8. 《计算机网络 自顶向下方法》 第3章 运输层 Part2

    待补充完善 TCP 相关基本点 1.面向连接 两个不同主机上的进程在通过 TCP 进行通信之前,必须先通过三次握手来建立 TCP 连接 2.全双工服务 即,如果一台主机上的进程 A 与另一台主机上的进 ...

  9. 《计算机网络 自顶向下方法》 第3章 运输层 Part1

    由于个人精力和智商有限,又喜欢想太多.钻牛角尖,导致学习系统性知识很痛苦,尝试改变学习方式,慢慢摸索 现在看到 rdt2.0,又有点看不下去 现在的想法: 要有个目标,且有截止时间(作业模式.考试模式 ...

随机推荐

  1. 九度OJ 1143:Primary Arithmetic(初等数学) (进位)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:616 解决:254 题目描述: Children are taught to add multi-digit numbers from ri ...

  2. Java版TicTacToe

    MainFrame.java package com.bu_ish; import java.awt.BorderLayout; import java.awt.Color; import java. ...

  3. java URI 编码解码

    import java.io.UnsupportedEncodingException; /** * url转码.解码 */ public class UrlUtil { private final ...

  4. css中IE判断语句 if !IE

    1. <!–[if !IE]><!–> 除IE外都可识别 <!–<![endif]–> 2. <!–[if IE]> 所有的IE可识别 <! ...

  5. 常见的LINUX发行版安装libiconv库方法

    今天编译程序,发现程序报错,如下 cannot find -liconv collect2: ld returned 1 exit status 或者 undefined reference to ` ...

  6. hdu-5748 Bellovin(LIS)

    题目链接: Bellovin Time Limit: 6000/3000 MS (Java/Others)     Memory Limit: 131072/131072 K (Java/Others ...

  7. HihoCoder1470 : 公平的游戏

    描述 有一些人在玩一个游戏.游戏的舞台发生在一个 n 个点的树上. 这个游戏分为很多轮,每一轮都有一些玩家参与,每个玩家都会降落在一条给定的边上(不同玩家的边不同).之后这 n 个点上都会随机出现一个 ...

  8. BZOJ2599:[IOI2011]Race

    浅谈树分治:https://www.cnblogs.com/AKMer/p/10014803.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem. ...

  9. 微信小程序把玩(三十)wx.request(object) API

    这里通过干活集中营的API接口真实请求下数据.如果提示URL 域名不合法,请在 mp 后台配置后重试修改asdebug.js两行代码即可可看下面图 百牛信息技术bainiu.ltd整理发布于博客园 定 ...

  10. PYTHON 异常处理 一 ASSERT

    assert语句,如果没记错,这个东西在C或者C++里面也有的.属于短小的断言.下面的是来自python help document的说明: Assert statements are a conve ...