应用层协议总览

**应用层概念:**网络应用是普通网络用户使用网络服务的直接途径和"界面",网络应用也是计算机网络发展最快也是最丰富的层。

应用层功能

应用层与提供给用户的网络服务相关,这些服务非常丰富,包括文件传输、电子邮件、P2P应用等。应用层为用户提供了一个使用网络应用的接口。

网络应用体系结构

  1. 客户端 / 服务器(C / S)结构网络应用
    C/S结构的网络应用是最经典、最基本的网络应用。
    特点:通信的双方是服务器端客户端,服务器端需要先运行,做好接受通信的准备,客户端程序后运行,主动请求与服务器端进行通信。
    优点:充分发挥客户端的处理能力,很多工作可以在客户端处理后再提交给服务器端,客户端响应速度快。
    缺点:系统维护和升级成本非常高。C/S架构需要安装专用的客户端软件,当电脑出现问题,如病毒。硬件损坏,都需要进行进行安装或维护;每次系统软件升级时,客户机都需要重新安装。
    例如:WWW应用、文件传输FTP协议,电子邮件等
服务器
Internet
客户端1
客户端2
客户端3
...
  1. 浏览器 / 服务器(B / S)结构网络应用:
    该体系可以理解为对C/S架构的改变和促进。在这种架构下,用户工作界面是通过WWW浏览器实现,极少部分事务逻辑在前端实现,主要事务逻辑在服务器端实现,形成所谓的三层结构。

    • 浏览器端:即用户使用的浏览器,是用户操作系统的接口,用户通过浏览器界面向服务器端提出请求,并对服务器端返回的结果进行处理并展示,通过界面可以将系统的逻辑功能更好的表现出来。
    • 服务器端:提供数据服务,操作数据,然后把结构返回中心层,结果显示在系统界面上。
    • 中心件:这是运行在浏览器和服务器之间的。这层主要完成系统逻辑、实现具体的功能,接收用户的请求并把请求传送给服务器,然后将服务器的结果返回给用户,浏览器端和服务器端需要交互的信息是通过中心件完成的。

    C/S与B/S架构的区别:
    - CS是建立在局域网、专用网络的小范围网络的基础上,局域网之间再通过专门服务器提供连接和数据交换服务;BS是建立在广域网的基础上,不需要是专门的网络硬件环境。
    - CS客户端并不是毫无运算能力的输入、输出设备,而是具有一定的数据处理数据存储能力BS客户端则只是简单的输入、输出设备
    - 数据安全性:由于CS结构软件的数据分布特性,客户端发生的一切事故都可能丧失数据,如火灾、黑客等,对于集团级的异地软件应用,CS架构必须在各地安装多个服务器,此时多个服务器之间进行数据同步和数据一致性都会受到影响,并且一个服务器出现问题,将会影响整个应用的数据安全;而BS架构的数据集中存放于总部的数据库服务器,客户端不保存任何数据,也就不需要考虑数据同步之类的问题,安全性也会更加牢靠
    - CS响应速度快:由于CS架构客户端具有一定的数据存储和计算能力,很多工作在客户端计算之后才传到服务器。
    - 可移植性:CS对客户端的操作系统一般会有限制。可能适应于Win98,但不一定用于Win2000,或者不适用于微软其它新的操作系统,更不用说Linux、Unix等;BS架构所有的客户端只是浏览器,不需要做任何维护。

  2. 纯P2P结构网络应用
    特点:在纯P2P结构网络应用中,没有传统的服务器与客户端之分,都统称为对等端
    P2P结构网络性能优异,传输速度快。
    优点:即 “地位相等” 。对等端通常运行于普通用户的计算设备中。
    缺点:对等端都是动态加入或离开应用,新加入的对等端需要知道有哪些对等端在线、在线对等端的地址以及在线对等端提供的服务等。对于纯P2P应用,由于没有中心服务器,所以这些问题解决起来非常困难。

对等端1
对等端2
对等端3
对等端4
对等端5
  1. 混合结构网络应用
    在混合结构网络应用中,存在客户端和服务器端之间的传统C/S结构的通信,也存在客户之间直接通信。
    通信流程:
    1.每个客户通过C/S方法想服务器注册自己的网络地址,声明可共享的资源或可提供的服务
    2.通过中心服务器发现其它在线的客户,检索其它客户可以共享的资源等信息
    3.当某个客户希望获取另一个客户拥有的资源或服务时,便可以直接与该客户发起通信,请求其提供服务。

HTTP协议

又称为超文本传输协议,端口号为80

HTTP连接原理:

  1. HTTP客户端进程向服务器的80号端口请求建立TCP连接
  2. HTTP客户端进程基于建立的TCP连接向服务器端发送请求报文,常见的请求方式有 GET、HEAD、POST、OPTION、PUT等。
     -GET:请求读取有URL所标记的信息。
     -HEAD:请求读取有URL所标记的信息的首部,即无需在响应报文中包含对象。
     -POST:给服务器添加信息,如注释。
     -OPTION:请求一些选项的信息。
     -PUT:在指明的URL下存储一个文档。
  3. HTTP服务器进程接收到该请求报文,按照请求报文的要求进行操作,并将需要返回的信息封装到一个响应报文中,发送给客户进程
  4. HTTP服务器进程通知TCP断开连接
  5. HTTP客户端接收响应报文,并断开TCP连接,浏览器从响应报文中提取出HTML文件,进行解析显示

HTTP连接方式:
HTTP基于传输层的TCP传输报文。

  1. 非持久连接:HTTP客户端与HTTP服务器端建立TCP连接,通过该连接发送HTTP请求报文、接收HTTP响应报文,然后断开连接。
  2. 并行连接:建立多条并行的TCP连接,并行发送HTTP请求和并行接收HTTP响应。
  3. 持久连接:重用已建立的TCP连接,从而减少了新建TCP连接的事件开销。
    • 非流水方式持久连接:也称为非管道方法持久连接,客户端在接收到前一个响应报文后,才可以发出下一个请求报文。 请求 --> 响应 --> 请求
    • 流水方式持久连接:也成为管道方法持久连接,客户端可以多个请求同时发送多个响应同时接收,无需等待响应报文即可连续的发送请求报文。

HTTP状态码的分类和常见的状态码:

HTTP状态码用于服务器向客户端通告响应情况。

HTTP状态码分类

状态码类别 取值范围 作用 说明
1xx 100 ~ 199 信息提示 通告信息,可能还需要进一步交互
2xx 200 ~ 299 成功 成功完成客户端请求操作,并进行响应
3xx 300 ~ 399 重定向 表示资源已移走,需要向新URL发送请求
4xx 400 ~ 499 客户端错误 由于客户端请求错误,无法成功响应
5xx 500 ~ 599 服务器端错误 由于服务器端错误,无法成功响应

常见的HTTP状态码

状态码 短语 含义
100 Continue 表示已成功收到了请求的初始部分,请客户端继续
200 OK 成功,所请求消息在响应报文中
301 Moved Permanently 重定向,所请求堆笑被永久移走,在响应报文的首部行Location:中会给出新的URL,通常浏览器会自动再向新URL发送请求
400 Bad Request 客户端请求错误,即客户端不能正确理解客户请求
401 Unauthorized 未授权,需要输入用户名和密码
404 Not Found 客户端请求的对象,在服务器上不存在
451 Unsupported Media Type 不支持的媒体类型,可能被服务器拒绝请求,或者是请求方法或参数与服务器要求不匹配
505 HTTP Version Not Supported 请求使用的HTTP版本,服务器不支持

Cookie

Cookie中文名称为小型文本文件,指某些网站为了辨别用户身份、进行对话跟踪而储备在用户本地终端上的数据,主要用于用户跟踪

为什么要使用Cookie?

HTTP服务器端并不会保存关于客户的任何消息,所以HTTP是一种无状态的协议。因此,客户端与服务器端一旦数据交换完毕,客户端和服务器端的连接就会关闭,再次发送消息需要再次建立连接,这就意味着服务器无法跟踪用户的会话。比如用户选择一件衣服放进购物车,当再次选择一件衣服的时候,服务器端不知道这是否还是这个顾客的行为,因此需要每购买一件衣服就立刻结账。

Cookie技术:

  1. HTTP响应报文中的Cookie头行Set-Cookie。在使用Cookie技术的网站,在给用户发送的HTTP响应报文中,通过Set-Cookie头行,发送大小通常不超过 4 KB的Cookie信息,其中包含为其用户分配的ID用户对网站的访问偏好等;

  2. 用户浏览器在本地存储、维护和管理的Cookie文件。浏览器每当获得新的Cookie信息,就会在Cookie文件中追加一行Cookie信息,包括网站的域路径内容(如用户ID、访问偏好、商品选择等)、有效期安全5个字段;

    • 域(domain)和路径(path)
      这两个选项共同决定了Cookie信息能被哪些页面共享

      Domain Path
      www.google.com.hk /
      .google.com.hk /webhp
      .google.com.hk /
      .google.com.hk /

      domain参数用来控制cookie对哪个域有效,默认为设置cookie的那个域。这个值可以包含子域,也可以不包含。如上图,domain选项中,可以是**.google.com.hk不包含子域,也就是对.google.com.hk所有子域都有效,也可以是www.google.com.hk**包含子域。

      path用来控制cookie发送的指定域的路径,默认为 “/”,表示指定域下的所有路径都可以访问。他是在域名的基础上,指定可以访问的路径。例如cookie设置为“domain = .google.com.hk ; path = /webhp”,那么只有".google.com.hk/webhp"和"/webhp"下的任一子目录如"/webhp/xxx"会发送cookie信息,而".google.com.hk"不会发送。

    1. 内容(expires)和有效期(max-age)

      expires默认为Sessison,表示浏览器绘画结束的时候(即关闭浏览器)就会删除该cookie信息;
      可以通过expries设置删除时间,这个值为GMT格式的日期,如:Thu,11 Nov 2021 16:00:00 GMT,表示在2021-11-11日的16点整失效,在此期间cookie信息仍会保存在用户的机器中;
      如果失效日期是以前的时间,则cookie会被立刻删除。

      在新的HTTP协议中,逐渐使用max-age属性取代到expires。expires表示的是失效时间,是时刻;max-age是失效的时间段,以为单位。

      max-age为正值,则cookie信息在max-age秒后失效,如:“max-age = 10800;”,则cookie信息在三个小时后失效;
      max-age为负值,则cookie信息将在浏览器会话结束后失效;
      max-age为0,则表示删除cookie信息。

    2. 安全(secure):
      secure是cookie的安全标志,通过cookie直接包含一个secure单词来指定的,也是cookie字段中唯一一个非名值对的部分。

      默认情况下为空,即不指定secure选项,则不论是HTTP请求还是HTTPS请求,均会发送cookie;
      指定后,cookie只有在使用SSL连接(如HTTPS请求)时才会发送到服务器。
      注意:只有保证网页是安全协议(如HTTPS协议)请求时,才能去设置secure类型的cookie。

    3. HTTP选项(HTTPOnly)
      需要特别提一下HTTPOnly属性,该属性是用来限制客户端脚本对cookie的访问。将cookie设置为HTTPOnly可以减轻XSS攻击的危害,放置cookie被窃取,以增强cookie的安全性。

  3. HTTP请求报文中Cookie头行:Cookie。当用户向已经访问过的且获得Cookie信息的网站发送HTTP请求报文时,浏览器会自动检索本地的Cookie文件,并在每个请求报文中通过Cookie头行,携带上网站为该用户分配的Cookie信息。网站基于用户请求中的Cookie值,实现对用户的追踪、偏好统计、会话关联等功能。

  4. 网站在后台数据库中存储、维护Cookie信息、包含已分配给用户ID、每个ID用户在本网站的访问特征等。

Cookie工作原理如下:

在这里插入图片描述
Cookie缺点:

  1. 安全性:对于在公共场所多个用户使用同一台计算机使用浏览器,则会被不法分子获取用户的信息,如登录过哪些网站,购买过什么商品。
  2. 信息不同步:如果一台浏览器安装多个浏览器,不同的浏览器都会以独立的空间存放Cookie,因为Cookie不但可以确认用户,还包含计算机和浏览器的信息,对于在不同的浏览器中登录,就会得到不同的Cookie信息。

HTTPS协议

HTTPS是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密身份认证保证了传输过程的安全性。HTTPS在HTTP的基础上加入了SSL / TLS,HTTPS的默认端口号是443,存在一个加密/身份验证层(在HTTP与TCP之间)。

HTTP存在不安全性的严重缺陷:

  1. 明文数据传输:HTTP采用明文数据传输,攻击者只需要采取网络嗅探的攻击方式,就可以获取大型网站的用户信息。
  2. 消息完整性检测:HTTP检测数据完整性仅仅使用报文头部包含的本次传输数据的长度,而对信息是否被篡改不做检测,因此攻击者很容易就发动中间人攻击,修改客户端和服务器端传输的数据,甚至在传输数据中插入恶意代码,导致客户端被引流至恶意网站被植入木马。

HTTPS连接原理:

  1. 客户端将所支持的算法列表和一个用于产生密钥的随机数发送给服务器;
  2. 服务器从算法列表中选择一种加密算法,并将加密算法、一份包含服务器公用密钥的证书以及用于认证目的的服务器标识、服务器提供的一个用作产生密钥的随机数一起发送给客户端;
  3. 客户端对服务器的证书进行检验,确认是否由自己信任的证书签发机构签发,如果不是,则将是否继续通讯的决定权交给用户选择(此处为一个安全缺陷)。如果检查无误或者用户选择继续通讯,则客户端认可服务器身份;
  4. 客户端抽取服务器的公用密钥,并产生一个叫做 PreMaster Secret 的随机密码串,并使用服务器的公用密钥对其进行加密,并将加密的信息发送给服务器;
  5. 客户端和服务器端根据PreMaster Secret以及客户端和服务器的随机数值独立计算出会话密钥(Session Key) MAC算法密钥;
  6. 后续的客户端与服务器交互过程中使用会话密钥和MAC算法密钥进行加密和解密:
    • 加密过程:首先使用MAC算法对内容进行摘要,然后将摘要放在内容后面,再使用会话密钥进行加密。
    • 解密过程:首先使用会话密钥进行解密,然后取出摘要对数据完整性进行验证。

HTTP与HTTPS的优缺点:

  1. 使用HTTPS协议可认证用户和服务器,确认数据发送到正确的客户端或者服务器;
  2. HTTPS协议采用SSL + HTTP 构架的可进行加密传输身份认证的网络协议,安全性比HTTP强,但并不是绝对安全,却也大幅增加了中间人攻击的成本;
  3. 相同网络环境下,HTTPS协议会使页面的加载时间延长近 50%,且HTTPS会影响缓存,增加数据开销和功耗
  4. 因为HTTPS协议的工作需要额外的计算资源消耗,导致成本增加。如在大规模的用户访问应用的场景下,服务器需要频繁的进行加密和解密操作,几乎每个字节都需要进行加解密,这就产生了服务器成本。

Internet电子邮件

电子邮件系统结构:

组成:主要包括邮件服务器简单邮件传输协议(SMTP)、用户代理邮件读取协议(POP、IMAP)等。

电子邮箱工作流程:

SMTP协议
邮件读取协议
SMTP协议
SMTP协议
邮件读取协议
SMTP协议
用户代理A
邮件服务器A
邮件服务器B
用户代理B

对于邮件服务器来说,既是客户端也是服务器端,如邮件接收器A主动发送邮件给B,此时A为客户端,B为服务器端。

用户代理
用户代理是电子邮件应用的客户端软件,为用户提供使用电子邮件的接口。  
主要功能:支持用户撰写、显示、处理、收发邮件,为用户阅读、回复、转发、保存和撰写邮件提供编译和操作环境。

邮件服务器
  实现:邮件服务器内存维护一个外出邮件队列,在队列中暂存注册用户等待向外发送的邮件。邮件服务器之间发送和接收邮件采用C/S架构
   功能:邮件服务器的功能是发送和接收邮件,同时告诉发信人邮件传送的情况(已交付、已拒绝、丢失等),是电子邮件体系结构的核心
  发送过程:
   1. 用户A向用户B发送邮件,邮件首先发送到邮件服务器A的外出邮件队列中;
   2. 首先从服务器A依次从队列中取出邮件,当发送邮件A时,先从收件人邮件地址中解析出接收邮件服务器的域名或IP地址,然后将邮件基于SMTP协议发送给邮件服务器B。
   3. 邮件服务器B将接收到的邮件存放到用户B的邮箱中。
   4. 如果邮件A已经成功从邮件服务器A发送给邮件服务器B,则清除邮件服务器A中外出邮件队列中的邮件A,否则,邮件A将继续保存在外出邮件队列中;如果发送失败,则每隔一段时间重新发送,通常间隔30min,如果几天后仍没有发送成功,则以邮件的形式告诉用户A邮件发送失败

参考文献

《计算机网络原理2018年版》作者 :李全龙
百度百科
CSDN

以上是我自己的学习总结,如果哪里不足或者描述错误欢迎大家提出来,期待和大家一起进步!!!
码字不易,希望获得您的小小的点赞和收藏,感激不尽!!!

猜你喜欢

转载自blog.csdn.net/weixin_44081533/article/details/115509375