1 B/S与C/S
1.1 B/S:
B/S是Brower/Server的缩写,在客户端上只需安装一个浏览器,B/S架构的软件一般都是通过访问一个网页的形式使用的,而将一些运算等操作放在远端的服务器上。类似于淘宝,京东,百度金融等大型网站。其特点是:
- 维护成本相比较略低
- 无需再本地安装,如果需要更新,直接更新服务器端的内容,客户端使用浏览器进行访问
- 可以支持广域网
- 依赖于HTML5\CSS3\JS...实现更加灵活的页面设计和开发
1.2 C/S
c/s是客户端/服务器体系结构,其中客户端依靠服务器来获取资源,是一种网络体系结构,他具有三种类型结构分别是一层架构,两层架构和三层架构。类似于QQ,WeCame,Word软件等,其特点是:
- 维护成本高
- 在本地安装,如果需要更新,需要安装更新程序,还可能会造成更新失败
- 只能够在局域网内访问(管理系统)
- 界面开发不够灵活
1.3 区别
- c/s架构主要应用于局域网内,而b/s架构主要应用于广域网中;
- c/s架构一般面向相对固定的用户群,对信息安全的控制能力很强,而b/s架构对安全的控制能力相对弱;
- B/S架构维护升级比较简单,而C/S架构维护升级相对困难。
2.http协议
2.1 协议
计算机与计算机之间的通讯语言就叫做协议,协议可以使得计算机之间进行“对话”。不同的计算机之间需要相同的协议才能进行对话。所以网络协议就是为计算机网络中进行数据交换而建立的规则,标准或约定的集合。
2.2 http协议
http和https的区别:https比http多加了一个安全协议
称为超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而 [9] 消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:
(1)客户与服务器建立连接;
(2)客户向服务器提出请求;
(3)服务器接受请求,并根据请求返回相应的文件作为应答;
(4)客户与服务器关闭连接。
2.3 http组成
1.支持客户/服务器模式。
2.由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记。
4.无连接是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。在1.1版本中,采用长连接形式,但是不代表一直保持连接,当超过连接时长限制时,就会断开连接。
5.HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面好处就是,如果后续的连接不需要之前提供的信息,响应就会比较快.而为了解决HTTP的无状态特性,出现了Cookie和Session技术。
2.4Cookie和Session(会话跟踪技术)
2.4.1 Cookie
cookie是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。通过在客户端记录信息确定用户身份。
工作原理:Cookie定义了一些HTTP请求头和HTTP响应头,通过这些HTTP头信息使服务器可以与客户进行状态交互。
下面是一个实现Cookie机制的,简单的HTTP请求过程:
1. 客户端请求服务器4
2. 服务器响应请求
3. 再次请求时,客户端请求中会包含一个Cookie请求头
2.4.2 Session
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。
工作原理:当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识,称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。
2.5工作原理
- 客户端的请求过程
1.向服务器发送请求。
2.接收服务器返回的报文并解释成友善的信息供阅读。
3.客户端大概有:浏览器,应用程序等。
4.如今时代可能使用最多的就是浏览器, 当用户在地址栏输入网址回车时,浏览器会为什么做如下处理:
a.解析协议和域名。
b.使用HTTP协议并创建请求报文向服务端发送请求。
c.接收服务器返回的内容并展示给客户。
- 服务端的请求过程
1.服务器端在接收到客户端发送的请求后会开始处理请求。
2.服务器处理过程:服务器软件一直在监听端口是否有新的请求达到,如iis或者tomcat在建立web站点后,默认会一直监听80端口等待HTTP请求到达服务器。
a.建立连接:如果客户端已经打开道服务器的持久连接,则可以直接使用,否则客户端需要在服务器打开一条新的连接。
b.接收请求报文:连接上有数据到时,web服务器会从网络连接中读取数据,并将请求报文中的内容解析出来。
c.处理请求:当请求被接收后,服务器便可以根据请求报文进行处理了。例如post方法中提出报文主体的数据并插入到数据库中。
d.访问资源:请求处理完后,比如web会根据数据生成一系列的HTML页面或图片等信息,此步骤将访问这些存储在服务器上的物理文件。
e.构建响应:web服务器在识别资源后,构造响应报文,响应报文包括:状态码,响应头,响应主体等内容。
f.发送响应:服务器将响应的数据发送给客户端机器。
g.记录日志:请求结束,服务器会在日志文件中记录一条请求日志。
2.6 http组成(URL URI)
1.协议部分
该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在”HTTP”后面的“//”为分隔符2.域名部分
该URL的域名部分为www.aspxfans.com, URL中也可以使用ip地址作为域名3.端口部分
跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。如果没有,那么说明URL使用的是默认端口80,端口不是URL的必须组成部分4.虚拟目录部分
从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”5.文件名部分
从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名6.锚部分
从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分7.参数部分
从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
http://域名/资源
http://地址:端口号/资源?xxx==xxx&xxx=xxx
2.7请求和响应报文
客户端与服务器之间的信息传递使用的载体叫做报文,报文分为请求和响应两个部分。
请求报文:客户端发送数据给服务器的过程叫做请求报文
组成:
1.请求首行:包含请求方法,要访问的资源以及所舒勇的HTTP版本
2.请求头部:说明服务器要使用的附加信息
3.空行:请求报文头部后的空行是必须的
4.请求体:get往往不存在请求体,post请求体包含请求的参数,即get包含三个,请求行,请求头,空行;post包含四个,请求行,请求头,空行,请求体。
格式:
2.7.1http的请求方式
GET(查):请求获取Request-URI所标识的资源。
POST(更新和增加):在Request-URI所标识的资源后附加新的数据。
HEAD:请求获取由Request-URI所标识的资源的响应消息报头。
PUT(新增):请求服务器存储一个资源,并用Request-URI作为其标识。
DELETE(删除):请求服务器删除Request-URI所标识的资源。
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断。
CONNECT:保留将来使用。
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求。
2.7.2get请求方式
1.从服务器获取数据,返回响应的实体部分,可以类比数据库的select操作,不会影响数据库本身。
2.没有请求体。
3.请求参数和对应的值附在URL后,以?号开始,参数用key=value键值对的方式书写,多个参数使用&分割。
4.通常对数据不敏感的请求使用get请求,因为参数跟在URL后不安全。
5.传输的参数长度是有限制的,最大不超过1024。
2.7.3post请求方式
1.向指定资源提交表单数据进行处理请求(例如提交表单或者上传文件)。参数数据被包含在请求体中,以名称/值的形式出现,可以传输大量的数据。POST请求可能会导致新的资源的建立和/或已有资源的修改。
2.通常post请求含有请求体。
3.请求参数存放在请求体中,可以是任意格式。
4.相对来说数据比较安全。
5.请求数据无大小限制,可以认为是无限制。
2.7.4区别
- 1.从参数的传递方面来看,GET请求的参数是直接拼接在地址栏URL的后面,而POST请求的参数是放到请求体里面的。
- 2.从长度限制方面来看,GET请求有具体的长度限制,一般不超过1024KB,而POST理论上没有,但是浏览器一般都有一个界限。
- 3.从安全方面来看,GET请求相较于POST,因为数据都是明文显示在URL上面的,所以安全和私密性不如POST。
- 4.从本质上来说,GET和POST都是TCP连接,并无实质的区别。但是由于HTTP/浏览器的限定,导致它们在应用过程中体现出了一些不同。GET产生一个数据包,POST产生两个数据包。对于GET请求,浏览器会把http header 和 data 一并发出去,服务器响应200(返回数据)。而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200。
2.7.5响应报文
客户端发送请求到服务器,服务器处理之后返回数据给客户端的过程叫做响应。
组成:
1.响应首行(状态行):协议版本,状态码,成功与失败的状态信息。
2.响应头部:由一些键值对构成,用来说明客户端要使用的一些附加信息。
3.空行:响应头部后面的空行是必须的。
4.响应数据(响应正文):服务器返回给客户端的数据等信息内容。
2.8http状态码
10x:消息,指连接状态
20x:成功
30x:重定向
40x:找不到资源【客户端错误】
50x:服务器错误
3.Tomcat
Tomcat是一个应用服务器。能够解析JAVA代码,生成.class文件,同时将Java转换为html响应的内容。
解压后的目录结构:
bin:放置所有的可执行文件
conf:放置所有的配置文件
lib:放置所有的支持jar包
logs:日志文件
temp:临时文件存储目录
webapps:放置所有的webyingyon
work:放置被编译之后的.class文件