应用层原理

一. 应用结构体系结构:包括客户端 - 服务端体系结构和P2P体系结构。html

1. 客户端 - 服务端体系结构是存在一个常常开机的服务器,接受来自各方客户端的请求,如浏览器请求。nginx

2. P2P体系结构是应用程序在间断链接的主机之间使用直接通讯,此时,主机能够当客户端(接受)也能够当服务端(发送),如共享文件。web

二. 进程间通讯数据库

1. 进程:在操做系统中运行的程序,它是有操做系统定义的程序,专门负责进行通讯的,而应用程序在某个操做系统中要进行通讯(计算机网络交换报文),必须调用进程。编程

2. 客户和服务端进程:网络应用程序由成对进程组成,一端进程标识为客户端,另外一端进程标识为服务端。举个例子,你要浏览google网站,首先你要打开浏览器,此时在你的主机就创建了一个进程(客户端),你输入google的网址,等待google服务器的响应,若是google服务器没有打开这个网站的进程,你就会返回一个错误。因此做为服务端,会一直开着服务进程等待客户机来链接。后端

3. 套接字(socket):是应用层和运输层的接口,负责发送或接受网络报文。进程就像是一座房子,建好了房子你得有个门吧,你要出去会见朋友,朋友也要来作客,而套接字(socket)就是进程的 "门" ,也成为应用程序和网络之间的应用程序编程接口(API)。浏览器

4. 进程寻址:要向另外一台运行的主机进程发送分组,必需要指定地址(IP地址)和用于接受分组的通道(接收socket),也成为端口号。
缓存


三. HTTP协议服务器

web相关概念:cookie

(1). web页面:有对象组成。一个对象又一个文件组成,如html文件,图片,视频文件等。

(2). web浏览器:实现了HTTP的客户端。

(3). web服务端:实现了HTTP的服务端。(Apache, IIS,nginx等web服务器)


1. HTTP:定义了web客户机向web服务端请求web页面的方式,以及web服务器向客户机发送页面的方式。

2. HTTP基本原理:HTTP使用TCP做为它的支撑运输协议,HTTP客户机首先向服务端发起TCP链接,一旦链接成功,浏览器和服务器进程就能够经过套接字接口访问TCP。(web套接字接口通常为80端口)

3. HTTP原理:


过程:

1. 非持续链接的HTTP

客户机先向服务器发出TCP报文段请求链接,服务器响应向客户机发出TCP报文段(这是一个往返时间RTT),创建好了TCP链接通道以后,客户机向服务器发起HTTP请求文件,服务器响应,向客户机传输文件(服务器传输文件时间)并等待客户机接受收文件,客户机彻底接收文件(存在接收文件时间)后,服务器关闭TCP链接,又是一个RTT。客户机浏览一个web页面要经历过 "三次握手" ,总的响应时间为2*RTT+文件/接收传输时间。(后面再讲TCP报文段格式)

2. 持续链接的HTTP

服务器在发送响应后保持该TCP的链接不间断,connection:keep-alive


四. HTTP报文格式

1.HTTP请求格式:



2. HTTP响应格式:


实例:


3. cookie:

HTTP服务器是无状态的,不会识别用户,可是服务器又但愿可以识别用户身份,因此HTTP使用了cookie,它容许站点对用户进行跟踪,识别用户身份,好比你上网购物,没有用户身份识别,你打开一个页面就是一个新的身份,服务器不知道,存在cookie,你能够以你本人的身份去浏览整个网站的全部商品。创建cookie如图:


cookie技术存在四个组件:

(1)存在HTTP响应报文中的一个cookie首部行

(2)存在HTTP请求报文中的cookie首部行

(3)用户浏览器中保留的cookie文件

(4)位于web站点的后端数据库中

实例:


4. Web缓存

Web缓存器也叫代理服务器,它可以表明初始Web服务器来知足HTTP请求的网络实体,有本身的磁盘存储空间,保存最近请求过的对象的副本。如图:


请求过程:

(1)浏览器向缓存服务器发送一个TCP链接,并向web缓存器发送一个HTTP请求

(2)web缓存器检查本地是否存储了对象,若是存储了就向客户机浏览器发送HTTP响应报文

(3)若是本地没有该对象,则web缓存器向初始服务器请求TCP链接发送HTTP请求,初始服务器发送具备该对象的HTTP响应

(4)web缓存器在本地存储一个对象副本,并向浏览器发送该对象副本。

5. 条件GET方法:HTTP容许web缓存器证明它的对象是最新的,web缓存器向初始服务器发送含有 "If-Modified-Since:"的首部行,它将和初始服务器的 "Last-Modified" 作对比,若是一致,则返回一个不包含对象(节省带宽)带有 "304 Not Modified" 的响应报文 ,说明对象是最新的,能够发送给客户机浏览器。