web服务的本质
PC端:以BS为主
手机端:CS为主,逐渐向BS靠拢
注意:BS本质上也是CS
BS开发分两端开发:
客户端开发:前端开发,html,CSS,javascript
服务端开发:python有WSGI ,Django,flask,tornado
在浏览器中输入网址,回车发生的事情
- 向指定服务器地址发送请求
- 服务端接收请求,并处理
- 返回相应的响应
- 浏览器接收并渲染出好看的页面,给用户看
请求方式
-
get请求
向服务器要资源
例:输入www.baidu.com
-
post请求
向服务器提交数据
例:登录功能
HTTP协议
https://www.cnblogs.com/gotodsp/p/6366163.html
超文本传输协议
规定了服务端与浏览器端数据传输的数据格式
HTTP数据格式
分为request和response
request:浏览器向服务器发起的请求.
请求格式
请求首行(请求方式 协议版本)
请求头(一大堆k:v键值对)
(这一行回车一定要由,/r/n)
请求体(敏感信息,密码,身份证号)
response:服务器对客户端请求的响应.
响应格式
响应首行(请求方式 协议版本)
响应头(一大堆k:v键值对)
(这一行回车一定要由,/r/n回车换行)
响应体(敏感信息,密码,身份证号)
响应状态码
状态码在响应头第一行
1xx 提示信息,表示请求已被成功接收,继续处理
2xx 表示正常响应
200 正常返回了网页内容
3xx 重定向
301 页面永久性移走,永久重定向,返回新的URL,浏览器会根据返回的url发起新的request请求
302 临时重定向
304 资源未修改,浏览器使用本地缓存
4xx 客户端请求错误
404 not found,网页找不到,客户端请求的资源有错
400 请求语法错误
401 请求要求身份验证
403 服务器拒绝请求
5xx 服务器端错误
500 服务器内部错误
502 上有服务器错误,比如nginx反向代理的时候
四大特性
-
基于TCP/IP作用于应用层的协议
-
基于请求响应
请求对应响应
-
无状态
HTTP协议是无状态协议,指的是协议对于事务处理没有记忆能力.即同一个客户端的两次请求无任何关系,从服务器端角度来说,它不知道这两个请求来自同一个客户端.
cookie session 来记录用户登录状态
-
无连接
限制每次连接只处理一个请求.服务器处理完客户的请求,并收到客户的应答后,即断开连接.用这种方式来节省传输时间.
长连接
HTTP/1.1起,默认使用长连接.网页打开完成后,客户端和服务器之间的用于传输HTTP数据的TCP连接不会关闭,客户端再次访问,继续使用此通道,需要在响应头中加入
Connection:keep_alie
,但是keep-alive不会永久连接,有保持时间,可以在服务器软件中设定时间,短链接
HTTP/1.0中默认使用短链接.客户端与服务器每进行一次HTTP操作,就建立一次连接,任务结束就终端连接.
注意:HTTP的长短连接实际上是TCP协议的长连接和短链接.所以从HTTP自身来看,是无连接的.
无连接是HTTP的特性,长短连接是一种实现.
WebSocket的长连接
是一个全双工的连接.可由服务端主动发起信息,长连接第一次TCP链路链路建立之后,后续数据可以都进行发送,不需要发送请求头.
HTTP协议和TCP/IP协议的关系
HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.
IP协议主要解决网络路由和寻址问题,
TCP协议只要解决如何在IP层之上可靠的传输数据包
TCP协议是可靠的,面向连接的.
W3C标准
万维网联盟(world wild web consortium)
网页由三个部分组成:结构(structure),表现(presentation)行为(behavior)
结构:
- html(超为本标记语言)
- xml(可扩展标记语言)
- xhtml(1,2之和)(可扩展超文本标记语言)
表现:
层叠样式表 CSS
行为:
1.文档对象模型(DOM):使得你可以访问页面其他的标准组件,让他们来访问他们站点中的数据,脚本和表现层对象.
2.ES