1. B/S与C/S区别
1.1 C/S
类似于QQ、WeGame、Word软件都属于是C/S的软件,其特点是:z
- 维护成本高
- 在本地安装,如果需要更新,需要安装更新程序,还可能会造成更新失败
- 只能够在局域网内访问(管理系统)
- 界面开发不够灵活
1.2 B/S
类似于taobao、京东、百度金融大型应用,其特点是:
- 维护成本相比较略低
- 无需在本地安装,如果需要更新,直接更新服务器端的内容,客户端使用浏览器进行访问
- 可以支持广域网
- 依赖于HTML5\CSS3\JS...实现更加灵活的页面设计和开发
2 . HTTP协议(面试题)
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而 消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
2.1 http协议五大特点
- 支持客户端/服务器的模式
可以支持B/S结构 - http协议简单
使得HTTP服务器的程序规模小,因而通信速度很
快。 - 允许传输任意的数据类型(content-type)
-
无连接
无连接是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。在1.1版本中,采用长连接形式,但是不代表一直保持连接,当超过连接时长限制时,就会断开连接。
-
无状态
无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面好处就是,如果后续的连接不需要之前提供的信息,响应就会比较快.而为了解决HTTP的无状态特性,出现了Cookie和Session技术。
2.2 HTTP的工作原理
- 客户端的请求的过程
2.1.向服务器发送请求。
2.2.接收服务器返回的报文并解释成友善的信息供阅读。
2.3.客户端大概有:浏览器,应用程序等。
2.4.如今时代可能使用最多的就是浏览器, 当用户在地址栏输入网址回车时,浏览器会为什
么做如下处理:
a.解析协议和域名。
b.使用HTTP协议并创建请求报文向服务端发送请求。
c.接收服务器返回的内容并展示给客户。
- 服务器端的响应过程
3.1.服务器端在接收到客户端发送的请求后会开始处理请求。
3.2.服务器处理过程:服务器软件一直在监听端口是否有新的请求达到,如iis或者tomcat在建立web站点后,默认会一直监听80端口等待HTTP请求到达服务器。
a.建立连接:如果客户端已经打开道服务器的持久连接,则可以直接使用,否则客户端需要在服务器打开一条新的连接。
b.接收请求报文:连接上有数据到时,web服务器会从网络连接中读取数据,并将请求报文中的内容解析出来。
c.处理请求:当请求被接收后,服务器便可以根据请求报文进行处理了。例如post方法中提出报文主体的数据并插入到数据库中。
d.访问资源:请求处理完后,比如web会根据数据生成一系列的HTML页面或图片等信息,此步骤将访问这些存储在服务器上的物理文
件。
e.构建响应:web服务器在识别资源后,构造响应报文,响应报文包括:状态码,响应头,响应主体等内容。
f.发送响应:服务器将响应的数据发送给客户端机器。
g.记录日志:请求结束,服务器会在日志文件中记录一条请求日志。
2.3 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://ip地址:端口号/资源?xxx=xxx&xxx=xxx
2.4 请求[响应]报文
客户端与服务器之间的信息传递使用的载体(overload)叫做报文,报文分为请求和响应两个部分。
- 组成
请求首行:包含请求方法,要访问的资源以及所舒勇的HTTP版本
请求头部:说明服务器要使用的附加信息
空行:请求报文头部后的空行是必须的
请求体:get往往不存在请求体,post请求体包含请求的参数
-
GET
-
POST
-
http的请求方式
GET(获取):请求获取Request-URI所标识的资源。
POST(更新或新增):在Request-URI所标识的资源后附加新的数据。
HEAD:请求获取由Request-URI所标识的资源的响应消息报头。
PUT(新增):请求服务器存储一个资源,并用Request-URI作为其标识。
DELETE(删除):请求服务器删除Request-URI所标识的资源。
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断。
CONNECT:保留将来使用。
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求。
GET
1.从服务器获取数据,返回响应的实体部分,可以类比数据库的select操作,不会影响数据库本身。
2.没有请求体。
3.请求参数和对应的值附在URL后,以?号开始,参数用key=value键值对的方式书写,多个参数使用&分割。
4.通常对数据不敏感的请求使用get请求,因为参数跟在URL后不安全。
5.传输的参数长度是没有限制的。不同的浏览器会对get做长度限制。
POST
1.向指定资源提交表单数据进行处理请求(例如提交表单或者上传文件)。参数数据被包含在请求体中,以名称/值的形式出现,可以传输大量的数据。POST请求可能会导致新的资源的建立和/或已有资源的修改。
2.通常post请求含有请求体。
3.请求参数存放在请求体中,可以是任意格式。
4.相对来说数据比较安全。
5.请求数据无大小限制,可以认为是无限制。
get与post
1.从参数的传递方面来看,GET请求的参数是直接拼接在地址栏URL的后面,而POST请求的参数是放到请求体里面的。
2.从长度限制方面来看,GET请求有具体的长度限制,一般不超过1024KB,而POST理论上没有,但是浏览器一般都有一个界限。
3.从安全方面来看,GET请求相较于POST,因为数据都是明文显示在URL上面的,所以安全和私密性不如POST。
4.从本质上来说,GET和POST都是TCP连接,并无实质的区别。但是由于HTTP/浏览器的限定,导致它们在应用过程中体现出了一些不同。GET产生一个数据包,POST产生两个数据包。对于GET请求,浏览器会把httpheader 和 data 一并发出去,服务器响应200(返回数据)。而对于POST,浏览器先发送header,服务器响应100continue,浏览器再发送data,服务器响应200。
2.5 http状态码
10x: 消息,指连接状态
20x: 成功
30x:重定向
40x:找不到资源【客户端错误】
50x:服务器错误
1.计算机与计算机之间的通讯语言就叫做协议,不同的计算机之间只有使用相同的协议才能通信。所以网络协议就是为计算机网络中进行数据交换而建立的规则,标准或约定的集合。
2.HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传输协议。
3.HTTP协议是应用层协议,由请求和响应构成,是一个标准的个客户端和服务器模型。
(补充)网络是由若干节点和连接这些节点的链路构成,然后网络与网络之间所串连成的庞大网络叫做互联网,HTTP(HyperText Transfer Protocol 超文本传输协议)是互联网上应用最为广泛的一种网络协议,它是由万维网协会(World Wide Web Consortium)制定发布。
2.OSI模型
1.将计算机网络体系结构的通信协议划分为7层,自上而下分别是:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。
3.流程图
4.HTTP 协议五大特点:
1.支持客户/服务器模式。
2.简单快速:
客户向服务器请求服务时,只需传送请求方法和路径。
3.灵活:
HTTP允许传输任意类型的数据对象。
正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型的标识)加以标记。
4.无连接:
无连接的含义是限制每次连接只处理一个请求。
服务器处理完客户的请求,并收到客户的应答后,即断开连接。
采用这种方式可以节省传输时间。
5.无状态:
无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。
即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息(Cookie和Session孕育而生)。
5.TCP/IP(回顾)
1.TCP协议
TCP协议全称: 传输控制协议, 就是要对数据的传输进行一定的控制.
2.报头
- 源端口号/目的端口号: 表示数据从哪个进程来, 到哪个进程去.
- 32位序号:
- 4位首部长度: 表示该tcp报头有多少个4字节(32个bit)
- 6位保留: 顾名思义, 先保留着, 以防万一
-
6位标志
-
URG: 标识紧急指针是否有效
ACK: 标识确认序号是否有效
PSH: 用来提示接收端应用程序立刻将数据从tcp缓冲区读走
RST: 要求重新建立连接. 我们把含有RST标识的报文称为复位报文段
SYN: 请求建立连接. 我们把含有SYN标识的报文称为同步报文段
FIN: 通知对端, 本端即将关闭. 我们把含有FIN标识的报文称为结束报文段
-
16位窗口大小:
- 16位检验和: 由发送端填充, 检验形式有CRC校验等. 如果接收端校验不通过, 则认为数据有问题. 此处的校验和不光包含TCP首部, 也包含TCP数据部分.
- 16位紧急指针: 用来标识哪部分数据是紧急数据.
- 选项和数据暂时忽略