我是靠谱客的博主 忧心冬日,最近开发中收集的这篇文章主要介绍Day4:应用层——网络应用层内容概述、网络应用基本原理(体系结构、进程通信、套接字socket、应用层协议)、Web应用与HTTP一、网络应用层内容概述。二、网络应用基本原理三、Web应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

加油!寒假偷博人

一、网络应用层内容概述。

1本篇内容:(原理、实例、编程)

网络应用体系结构 客户机/服务器  P2P  混合结构
网络应用的服务需求 可靠性 带宽 时延
Internet传输层服务模型 TCP UDP
特定网络应用及协议  HTTP  SMTP, POP, IMAP  DNS  P2P应用
Socket编程  TCP  UDP

2课后讨论

假如你要创业,你会开发什么互联网应用/服务?
互联网/Internet为全世界无数人提供了创造财富、实现梦想的机会,也成就了Google、阿里巴巴、腾讯等许多企业和扎克伯格、马云、马化腾等英雄式的人物.
今天仍然是互联网创业的繁荣阶段,每天都有很多个创业公司冒出来,通过众筹平台、天使投资等获得支持,研发新的互联网应用和服务。
那么,假如你现在要创业,你打算研发什么互联网应用和/或服务?服务于哪些用户?为用户带来/创造什么价值?如何实现盈利和可持续发展?

在这里插入图片描述

二、网络应用基本原理

一些网络应用的例子
在这里插入图片描述
在这里插入图片描述

这些都叫Internet Application

1.创建一个新的网络应用

  • 编程
     在不同的端系统上运行
     通过网络基础设施提供的服务,应用进程彼此通信
     如Web:  Web 服务器软件与浏览器软件通信
  • 网络核心中没有应用层软件
     网络核心没有应用层功能
     网络应用只在端系统上存在,快速网络应用开发和部署

2.网络应用的体系结构.(如下有3点)

2.1 客户机/服务器结构(Client-Server, C/S)

该结构扩展性差。
当所有人都访问一台服务器,性能(服务能力、数据输入输出)断崖式下降(就像抢课的时候,抢课网站必然崩了)

  • 服务器
     7*24小时提供服务
     永久性访问地址/域名
     利用大量服务器实现可扩展性
  • 客户机
     主动与服务器通信,使用服务器提供的服务
     间歇性接入网络
     可能使用动态IP地址
     不与其他客户机直接通信
  • 例如Web应用:
    在这里插入图片描述

2.2 点对点结构(Peer-to-peer, P2P)

缺点:难于管理
优点:自扩展性-新peer节点带来新的服务能力,当然也带来新的服务请求

  • 没有永远在线的服务器
  • 任意端系统/节点之间可以直接通讯
  • 节点间歇性接入网络
  • 每一个节点既是客户端又是服务器
  • 参与的主机间歇性连接且可以改变IP 地址- 优点:高度可伸缩
  • 例子: Gnutella,迅雷

P2P应用:
P2P已经统治了当今的互联网总流量的70-90%。网络的各种技术围绕在我们周围,每天在互联网中进行的活动几乎没有不沾P2P技术的。如QQ、YY、Skype、MSN都的是P2P应用。P2P允许用户之间互相沟通、交换信息、交换文件。用户之间的信息交流不是直接的,需要服务器来协调转发。直接将人们联系了起来,让人们通过互联网直接交流。它使得网络上的沟通变得更容易、更直接,真正地消除中间环节。
----来自

2.2.3混合结构(Hybrid)

  • 如Napster应用
    •  文件传输使用——P2P结构
    •  文件的搜索采用C/S结构——集中式
       每个节点向中央服务器登记自己的内容
       每个节点向中央服务器提交查询请求,
      查找感兴趣的内容
      在这里插入图片描述
      即时通信
      在线检测:集中
      当用户上线时,向中心服务器注册其IP地址
      用户与中心服务器联系,以找到其在线好友的位置
      两个用户之间聊天:P2P

3.网络应用进程通信

进程: 在主机上运行的应用程序
在这里插入图片描述

3.1网络应用的基础:进程间通信

  • 进程:
     主机上运行的程序

  • 同一主机上运行的进程之间通信
     进程间通信机制
     操作系统提供

  • 不同主机上运的进程间通信
     消息交换
    通过交换报文(Message)来通信
    使用OS提供的通信服务
     按照应用协议交换报文
     借助传输层提供的服务

3.2分布式进程通信需要解决的问题

在这里插入图片描述

p2p型结构的网络应用也有客户端进程和服务器进程之分


3.3如何寻址进程(对进程进行编址(addressing))

  • 不同主机上的进程间通信,那么每个进程必须拥有标识符即:SAP(发送也需要标示)
  • 如何寻址主机?——唯一的 32位IP地址
     Q: 主机有了IP地址后,是否足以定位进程?
     A: 否。仅仅有IP地址不能够唯一标示一个进程;在一台端系统上有很多应用进程在运行
  • 端口号/Port number
     为主机上每个需要通信的进程分配一个端口号
     HTTP: TCP 80; Mail: TCP 25 ;ftp:TCP 2
  • 进程的标识符
     用IP+port标示 端节点
     本质上,一对主机进程之间的通信由2个端节点构成(一个快递,寄件人和收件人)
  • 例如在这里插入图片描述

3.2.1传输层提供的服务-需要穿过层间的信息

在这里插入图片描述

  •  层间接口必须要携带的信息
     要传输的报文(对于本层来说:SDU)
     谁传的:对方的应用进程的标示:IP+TCP(UDP) 端口
     传给谁:对方的应用进程的标示:对方的IP+TCP(UDP)端口号
  •  传输层实体(tcp或者udp实体)根据这些信息进行TCP报文段(UDP数据报)的封装
     源端口号,目标端口号,数据等
     将IP地址往下交IP实体,用于封装IP数据报:源IP,目标IP

3.2.2传输层提供的服务-层间信息的代表

  •  如果Socket API 每次传输报文,都携带如此多的信息,太繁琐易错,不便于管理
  •  用个代号标示通信的双方或者单方:socket
  •  就像OS打开文件返回的句柄一样
     对句柄的操作,就是对文件的操作
  •  TCP socket:
     TCP服务,两个进程之间的通信需要之前要建立连接
     两个进程通信会持续一段时间,通信关系稳定
     可以用一个整数表示两个应用实体之间的通信关系本地标示
    穿过层间接口的信息量最小
    TCP socket:源IP,源端口,目标IP,目标IP,目标端口

3.3.1 套接字:SOCKET

  • 进程间通信利用socket发送/接收消息实现
  • 类似于寄信
     发送方将消息送到门外邮箱
     发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接收方的门外
     接收方从门外获取消息
  • 传输基础设施向进程提供API
     传输协议的选择
     参数的设置
    在这里插入图片描述
    在这里插入图片描述

3.3.1TCP之上的套接字(socket)

 对于使用面向连接服务(TCP)的应用而言,套接字是4元组的一个具有本地意义的标示
 4元组:(源IP,源port,目标IP,目标port)
 唯一的指定了一个会话(2个进程之间的会话关系)
 应用使用这个标示,与远程的应用进程通信
 不必在每一个报文的发送都要指定这4元组
 就像使用操作系统打开一个文件,OS返回一个文件句柄一样,以后使用这个文件句柄,而不是使用这个文件的目录名、文件名
 简单,便于管理

在这里插入图片描述

在这里插入图片描述s:socket p:port

3.3.3UDP之上的套接字(socket)

  •  对于使用无连接服务(UDP)的应用而言,套接字是2元组的一个具有本地意义的标示
     2元组:IP,port (源端指定)
     UDP套接字指定了应用所在的一个端节点(end point)
     在发送数据报时,采用创建好的本地套接字(标示ID),就不必在发送每个报文中指明自己所采用的ip和port
     但是在发送报文时,必须要指定对方的ip和udp port(另外一个段节点)
    在这里插入图片描述

3.4如何使用传输层提供的服务实现应用

在这里插入图片描述
 定义应用层协议: 报文格式,解释,时序等
 编制程序, 通过API调用网络基础设施提供通信服务传报文,解析报文,实现应用时序等


4. 应用层协议

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

  •  交换的报文类型:请求和应答报文
  •  各种报文类型的语法:报文中的各个字段及其描述
  •  字段的语义:即字段取值的含义
  •  进程何时、如何发送报文及对报文进行响应的规则

应用协议仅仅是应用的一个组成部分

  •  Web应用:HTTP协议,web客
    户端,web服务器,HTML

  • 公开协议
     由RFC(Request For Comments)定义
     允许互操作
     HTTP, SMTP, ……
  • 私有协议
     多数P2P文件共享应用
     协议不公开
     如:Skype

4.1应用需要传输层提供什么样的服务?

Internet 传输层提供的服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Internet应用及其应用层协议和传输协议在这里插入图片描述

如何描述/衡量传输层的服务
在这里插入图片描述
常见应用对传输服务的要求
在这里插入图片描述


4.2应用层协议的内容

  • 消息的类型(type)
     请求消息
     响应消息

  • 消息的语法(syntax)/格式
     消息中有哪些字段(field)?
     每个字段如何描述

  • 字段的语义(semantics)
     字段中信息的含义

  • 规则(rules)
     进程何时发送/响应消息
     进程如何发送/响应消息
    在这里插入图片描述

  • 常见协议(这里总结了三种常见的应用层协议:HTTP、FTP、SMTP

    • HTTP
      —超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
    • FTP协议
      文件传输协议FTP(File Transfer Protocol)是因特网中使用最广泛的文件传输协议。FTP使用交互式的访问,允许客户指定文件的类型和格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)
    • SMTP(Simple Mail Transfer Protocol)
      即简单邮件传输协议。它是一组用于由源地址到目的地址传送邮件
      的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件
      时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程
      只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。SMTP
      是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。

三、Web应用

1.Web与HTTP

  • World Wide Web: Tim Berners-Lee(蒂姆·伯纳斯·李 [1] (Tim Berners-Lee),OM,KBE,FRS,FREng,FRSA,(Sir Timothy John “Tim” Berners-Lee,1955年6月8日-),英国计算机科学家。
    他是万维网的发明者,南安普顿大学与麻省理工学院教授。)
     网页
     网页互相链接
  • 网页(Web Page)包含多个对象(objects)
     对象:HTML文件、JPEG图片、视频文件、动态脚本等
     基本HTML文件:包含对其他对象引用的链接
  • 对象的寻址(addressing) (上面讲到的是寻址进程)
     URL(Uniform Resoure Locator):统一资源定位器 RFC1738
     Scheme://host:port/path
  • 在这里插入图片描述
  • 在这里插入图片描述

2.HTTP超文本传输协议

 Web的应用层协议
 HyperText Transfer Protocol

  • 采用C/S结构
     客户—Browser:请求、接收、展示Web对象
     服务器—Web Server:响应客户的请求,发送对象
  • HTTP版本:
     1.0: RFC 1945
     1.1: RFC 2068
  • 在这里插入图片描述

2.1使用TCP传输服务

使用TCP:

  • 服务器在80端口等待客户的请求
     浏览器发起到服务器的TCP连接(创建套接字Socket)
     服务器接受来自浏览器的TCP连接
     浏览器(HTTP客户端)与Web服务器(HTTP服务器)交 换HTTP消息(应用层协议报文)
     关闭TCP连接

无状态(stateless)

  •  服务器不维护任何有关客户端过去所发请求的信息
  • 在这里插入图片描述

2.2HTTP连接

HTTP连接的两种类型:

  • 非持久性连接(NonpersistentHTTP)
     每个TCP连接最多允许传输一个对象
     HTTP 1.0版本使用非持久性连接
     下载多个对象需要多个TCP连接
  • 持久性连接(Persistent HTTP)
     每个TCP连接允许传输多个对象
     HTTP 1.1版本默认使用持久性连接

2.2.1非持久性连接

假定用户在浏览器中输入URL
www.someSchool.edu/someDepartment/home.index
包含文本和指向10个jpeg图片的链接
在这里插入图片描述
在这里插入图片描述

  • 响应时间分析与建模
    • RTT(Round Trip Time)
       从客户端发送一个很小的数据包(一个小的分组)到服务器并返回所经历的时间
    • 响应时间(Response time)
       发起、建立TCP连接:1个RTT
       发送HTTP请求消息到HTTP响应消息的前几个字节到达:1个RTT
       响应消息中所含的文件/对象传输时间
       Total=2RTT +文件发送时间
      非持久性连接的问题
    • 每个对象需要2个RTT
    •  操作系统需要为每个TCP连接开销资源(overhead)
  • 浏览器会怎么做?
    • 打开多个并行的TCP连接以获取网页所需对象
    • 给服务器端造成什么影响?
    在这里插入图片描述

2.2.2持久性HTTP

持久性连接

  •  Server发送响应后,服务器保持TCP连接的打开
  •  后续的HTTP消息可以通过这个连接发送
  •  客户端在遇到一个引用对象的时候,就可以尽快发送该对象的请求

无流水(pipelining)的持久性连接(One by one 的 Request)

  •  客户端只有收到前一个响应后才发送新的请求
  • 每个被引用的对象耗时1个RTT

带有流水机制的持久性连接

  •  HTTP 1.1的默认选项
  •  客户端只要遇到一个引用对象就尽快发出请求
  •  理想情况下,收到所有的引用对象只需耗时约1个RTT

3.HTTP报文

HTTP协议有两类消息(报文)

  •  请求消息(报文)(request)
  •  响应消息(报文)(response)

3.1HTTP请求消息(报文)

  • 请求消息
     ASCII:人直接可读

在这里插入图片描述
在这里插入图片描述

  • HTTP请求消息的通用格式

在这里插入图片描述

  • 上传输入的方法
    • POST方法
       网页经常需要填写表格(表单)(form)
       在请求消息的消息体(实体主体entity body)中上传客户端的输入
    • URL方法
       使用GET方法
       输入信息通过request行的URL字段上传

在这里插入图片描述

  • 方法的类型
    • HTTP/1.0
       GET
       POST
       HEAD
      • 要求Server不要将所请求的对象放入响应消息中→故障跟踪
    • HTTP/1.1
       GET, POST, HEAD
       PUT
      • 将消息体中的文件上传到URL字段所指定的路径
       DELETE
      • 删除URL字段所指定的文件

3.2 HTTP响应消息(报文)

在这里插入图片描述

  • HTTP响应状态代码
    响应消息的第一行
  • 示例
     200 OK(请求成功,请求对象包含在响应报文的后续部分)
     301 Moved Permanently(请求的对象已经被永久转移了;新的URL在响应报文的Location:
    首部行中指定)
     400 Bad Request(一个通用的差错代码,表示该请求不能被服务器解读)
     404 Not Found(请求的文档在该服务上没有找到)
     505 HTTP Version Not Supported
    在这里插入图片描述

3.3体验一下HTTP

  • 利用telnet登录到某个Web服务器 (Telnet的简单使用
     telnet www.hit.edu.cn 80
  • 输入一个HTTP请求
     GET /about/profile.htm HTTP/1.1
     Host: www.hit.edu.cn
  • 查看HTTP服务器所返回的响应消息

然而我到了现在还在链接
在这里插入图片描述
后来到了这个页面
在这里插入图片描述
我一动键盘就…
在这里插入图片描述
还有一个郑老师的ppt的Trying out HTTP (client side) for yourself
在这里插入图片描述


3.4Cookie技术 (扩展网络应用的功能)

Cookie技术

  • 某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
     RFC6265

Cookie的组件

  •  HTTP响应消息的cookie头部行
     HTTP请求消息的cookie头部行
     保存在客户端主机上的cookie文件,由浏览器管理
     Web服务器端的后台数据库

3.4.1为什么需要Cookie?

HTTP协议无状态 很多应用需要服务器掌握客户端的 状态,如网上购物,如何实现?

3.4.2Cookie的原理

在这里插入图片描述

3.4.3Cookie的作用

  • Cookie能够用于:
     身份认证
     购物车
     推荐
     Web e-mail

    …….
  • 隐私问题
    在这里插入图片描述

3.5Web缓存/代理服务器技术 (提升网络应用的性能)

功能

  •  在不访问原始服务器的前提下,满足客户端的HTTP请求。

为什么要发明这种技术?

  •  缩短客户请求的响应时间
     减少机构/组织的流量
     在大范围内(Internet)实现有效的内容分发

  • Web缓存/代理服务器
    • 用户设定浏览器,通过缓存进行Web访问
    • 浏览器向缓存/代理服务器发送所有的HTTP请求
      • 如果所请求对象在缓存中,缓存返回对象
      • 否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象
    • 缓存既充当客户端,也充当服务器
    • 一般由ISP(Internet服务提供商)架设
      在这里插入图片描述

在这里插入图片描述
使用缓存可以~~~~

3.5.1Web缓存示例

来看郑老师将示例,第64min处
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上是郑老师的ppt例子内容。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3.5.2条件性GET方法 (对Web缓存/代理服务器技术的功能完善

目标:

  •  如果缓存有最新的版本,则不需要发送请求对象

缓存:

  •  在HTTP请求消息中声明所持有版本的日期 If-modified-since: <date >

服务器:

  •  如果缓存的版本是最新的,则响应消息中不包含对象
     HTTP/1.0 304 Not Modified
    在这里插入图片描述

本篇结束

最后

以上就是忧心冬日为你收集整理的Day4:应用层——网络应用层内容概述、网络应用基本原理(体系结构、进程通信、套接字socket、应用层协议)、Web应用与HTTP一、网络应用层内容概述。二、网络应用基本原理三、Web应用的全部内容,希望文章能够帮你解决Day4:应用层——网络应用层内容概述、网络应用基本原理(体系结构、进程通信、套接字socket、应用层协议)、Web应用与HTTP一、网络应用层内容概述。二、网络应用基本原理三、Web应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部