1.1 网络应用软件
(1) 定义
通过网络连接不同服务器、电脑、手机
实现软硬件资源共享,用户间信息交换
(2)特点
分布式,整个软件功能是由网络中的不同电脑以及其中的软件联合实现的
web / 客户端-服务器交互实现功能
1.2 网络典型架构
1.2.1 CS 架构
1、定义
Client-Server:客户端-服务器,三层结构,或两层结构(现在少见)
2、优点
(1)交互性强
(2)响应速度快
(3)存取数据安全
(4)可实现复杂的业务流程
3、缺点
(1)需安装占内存
(2)需考虑不同操作系统、电脑配置、手机机型的版本兼容
(3)开发和维护成本高
1.2.2 BS 架构
1、定义
Browser-Server:浏览器-服务器,三层结构
2、优点
(1)无需安装
(2)维护、扩展业务方便
(3)开发成本低
3、缺点
(1)不能满足个性化
(2)动态刷新页面时,响应速度慢
(3)存取安全性较低
1.2.3 CS 和 BS 区别
1、负载:CS 负载大,BS 负载小
2、安全性:CS 安全性高,BS 安全性低
3、开发和维护成本:CS 成本高,BS 成本低
1.2.4 P2P 架构
1、定义
Peer to Peer:对等式网络,点对点技术
2、特点
无中心服务器,依靠用户群交互信息
3、应用
应用于文件共享、网络视频和通话
1.3 网络结构
1.3.1 两层架构
1、客户端
界面、程序逻辑、资源
2、服务器
数据库系统存储的数据
1.3.2 三层架构
三层架构:浏览器 - Web 客户端 - 应用服务器 - 数据服务器
1、展现层
浏览器、客户端:IE/Edge、Google、Firefox、Opera、NetScape、safari
Web 服务器:IIS、Apache、Nginx
2、应用层
编程语言 + 应用服务器,实现程序逻辑:java、python、PHP、.net、Tomcat、JBOSS、weblogic、websphere
3、数据层
数据服务器,数据库存储数据:Mysql、Oracle、SQLServer
1.3.3 三层架构-编程语言
1、浏览器:IE/Edge、Google、Firefox、Opera、NetScape、safari
2、web 服务器(接待):IIS、Apache、Nginx
3、应用服务器(逻辑):Tomcat、JBOSS、weblogic、websphere
4、数据服务器(数据):Mysql、Oracle、SQLServer
5、.net 语言架构:IIS、.net、Mysql/Oracle/SQLServer
6、java 语言架构:Apache/Nginx、Tomcat/JBOSS/weblogic/websphere + java、Mysql/Oracle/SQLServer
7、PHP 语言架构:Apache/Nginx、PHP、Mysql/Oracle/SQLServer
1、Internet
International net:国际互联网
WWW:World Wide Web,万维网,页面信息服务
SMTP:简单邮件传输协议
FTP:文件传输协议
2、Intranet
Intranational net:局域网
3、URL:统一资源定位符
(1)URL 解析:协议类型:// 主机名:端口号 /(路径 /)页面文件 ? URL 参数
(2)协议类型:HTTP、HTTPS 协议
(3)主机名:域名、IP 地址
(4)默认端口:80(HTTP) 、443(HTTPS)
4、URL 参数
单个参数:? 参数名=值
多个参数:? 参数名=值 & 参数名=值 & ...
5、URI:统一资源标识符
6、代码部署路径
windows-xampp-apache:\xampp\htdocs
linux-apche:/var/www/html
linux-apache-tomcat:/tomcat/webapps
7、DNS 域名服务器:将域名与相对应的 IP 地址进行转换
3.1 协议定义
1、计算机之间交换数据时必须遵守的规则
2、传输层和应用层,用于定义计算机之间数据传输方式和数据格式
3.2 OSI 参考模型
OSI 参考模型
Open System Interconnect:开放式系统互联,网络协议模型
ISO:国际化标准组织
IOS:苹果操作系统
1、物理层:二进制传输
单位:比特流(Bit)
线缆:双绞线、电缆、光纤、无线电波
设备:中继器、集线器、调制解调器
2、链路层:数据分帧,介质访问,物理寻址
单位:帧(Frame),1 Frame = 1500 Byte = 1500 * 8 bit = 1500 * 8 * 2 二进制
设备:网卡、交换机、网桥
查看 MAC 地址:cmd - ipconfig /all
3、网络层:路由选择(最短),IP 寻址
单位:数据包(Package)
协议:IP 协议、ICMP、ARP、RARP
设备:网关、路由器
查看 IP 地址:cmd - ipconfig
测试本机的 TCP/IP 协议是否正常工作:ping 127.0.0.1
4、传输层:进程间的连接
单位:数据段(Segment)
协议:TCP 协议、UDP 协议
5、会话层:主机间通信,访问验证,会话管理
6、表示层:数据表示,加解密,编解码,解压缩
7、应用层:访问网络服务的接口
协议:Telnet(远程登录协议)、HTTP(s) 、FTP(文件传输协议)、
SMTP(简单邮件传输协议)、DNS(域名系统)、POP3
3.3 传输层与应用层的区别
1、传输层的 TCP 和 UDP 协议决定数据传输方式
2、应用层 HTTP(s) 协议定义数据格式
3、HTTP(s) 协议是基于 TCP 的短连接
3.4 数据格式
1、数据格式:在客户端和服务器之间传递的数据消息体格式
2、数据格式的主要类型:XML、JSON
- XML:Extensible Markup Language,可扩展标记语言
- JSON:JavaScript Object Notation,轻量级数据交换格式
JSON 在线工具:http://www.bejson.com
3.5 IP协议
IP 协议:Internet Protocol,国际互联网协议,因特网互联协议
TCP 和 UDP 都以 IP 数据包格式传输
特点:无连接,不可靠,网络层协议
3.6 TCP协议
1、TCP 协议:Transmission Control Protocol,传输控制协议
2、短连接
只完成一个事务即断开连接,如 HTTP 页面访问
3、长连接
(1)可完成多个事务,需要心跳机制来维持连接状态
(2)数据库属于长连接,会自动连接
(3)集群环境的主机间属于长连接
(4)心跳包:维持连接不被断开,相互检测对方是否健康
解决集群服务器环境的问题:负载均衡、故障转移
4、三次握手
(1)客户端向服务器发送请求,申请建立连接
(2)服务器收到连接申请,向客户端发送信息,确认客户端是否能收到服务器的响应信息
(3)客户端收到服务器的响应信息,向服务器发送确认信息,建立连接
5、四次挥手
(1)客户端向服务器发送请求,申请释放连接
(2)服务器收到断开申请,向客户端发送响应信息。客户端收到服务器的响应信息,此时不能向服务器发送信息报文,只能接收
(3)服务器没有可传信息时,允许断开,向客户端发送响应信息
(4)客户端收到服务器的响应信息,向服务器发送确认断开信息,等待两个时间周期,连接关闭。服务器收到客户端发来的确认断开信息后,进入关闭状态
5、三次握手(建立连接)- 发送(心跳)请求 - 接收(心跳)请求 - 四次挥手(释放连接)
特点:面向连接,三次握手,四次挥手
有序可靠,传输速度慢
传输层协议
3.7 UDP协议
1、UDP 协议:User Datagram Protocol,用户数据报协议
2、类型
(1)单播,一对一
(2)多播,一对多
(3)广播,一对所有,局域网
3、应用:直播,在线视频,QQ、微信
4、特点:非面向连接,无序不可靠,会丢包,传输速度快
3.8 TCP与UDP的区别
1、TCP:面向连接,有序可靠,传输速度慢
2、UDP:非面向连接,无序不可靠,会丢包,传输速度快
3.9 HTTP(s) 协议
3.9.1 定义
1、HTTP 协议:Hyper Text Transfer Protocol,超文本传输协议
2、HTTPS 协议:Hyper Text Transfer Protocol over Secure Socket Layer
基于安全套接层(SSL)的 HTTP 协议
HTTP + SSL/TSL (TSL:传输层安全协议,为 SSL 升级版,标准化版)
3、特点:无连接、无状态
无连接:每次连接只处理一个请求即断开
无状态:对事务处理没有记忆能力
4、HTML:HyperText Markup Language,超文本标记语言
3.9.2 请求方法
GET 和 POST 的区别
1、get 向服务器请求数据,post 向服务器传递数据
2、get 参数放在 URL 后面,post 在消息体中传参数
3、get 没有请求消息体,post 将传递参数作为请求体
4、get 数据在浏览器缓存,post 不会被缓存
POST、PUT 和 PATCH 的区别
1、POST 可用于新增
2、PUT 用于更新全部数据,如更新表单中的所有字段
3、PATCH 用于更新局部数据,如更新表单中的某个字段
请求方法 | 描述 |
---|---|
get | 请求数据 |
post | 传递数据 |
head | 请求报头 |
put | 更新全部数据 |
patch | 更新局部数据 |
delete | 删除数据 |
options | 查看服务器性能 |
trace | 用于测试诊断,回显服务器收到的请求 |
connect | 代理服务器 |
3.9.3 HTTP 响应状态码
1、1XX 临时响应:100、101
100:收到部分请求,客户端应继续请求
101:服务端根据客户端的请求切换协议
2、2XX 客户端请求成功:200、201、202
200:请求成功,一般用于 get 和 post
201:成功请求并创建新资源
202:已接受请求但未处理
3、3XX 资源重定向:300、301、302、304、305
300:请求资源多个地址,返回资源特征和地址列表
301:请求资源永久移动到新URL,返回新URL
302:请求资源临时移动
304:客户端已缓存访问资源,所以不返回任何资源
305:请求资源需通过代理访问
4、4XX 客户端请求错误:400、401、403、404
400:客户端语法错误
401:无授权,请求要求用户身份认证,如未登录
403:禁止访问,服务器理解请求但拒绝执行,如普通用户没有访问某些页面的权限
404:服务器找不到资源,资源可能失效(被删除、移动或修改)
5、5XX 服务器错误:500、502、503
500:服务器内部错误
502:错误网关,代理服务器从远端服务器收到无效请求,
如 tomcat 没有启动起来,进程端口冲突的问题
503:服务不可用,系统维护或超载,如 tomcat 超时
1XX | 临时响应 |
---|---|
100 | Continue,继续,收到部分请求,客户端应继续请求 |
101 | Switching Protocols,切换协议,服务端根据客户端的请求切换协议 |
2XX | 请求成功 |
---|---|
200 | OK,请求成功。一般用于 get 和 post |
201 | Created,已创建。成功请求并创建新资源 |
202 | Accepted,已接受。已接受请求但未处理 |
203 | Non-Authoritative Information,非授权信息。返回其他源的信息 |
204 | No Content,无内容。请求成功但不返回内容,页面未更新可保持当前页面 |
205 | Reset Conten,重置内容 。请求成功并重置页面内容,通过返回码重置表单 |
206 | Partial Content,部分 get。请求成功并处理部分 get 请求 |
3XX | 资源重定向 |
---|---|
300 | Multiple Choices,多选择。请求资源多个地址,返回资源特征和地址列表 |
301 | Moved Permanently,永久移动。请求资源永久移动到新URL,返回新URL,之后所有请求都会自定向到新URL |
302 | Found,临时移动。请求资源临时移动,客户端应继续使用原URL |
303 | See Other,查看其他地址。GET 或 POST |
304 | Not Modified,未修改。客户端缓存访问资源,请求资源未修改,不返回任何资源 |
305 | Use Proxy,使用代理。请求资源需通过代理访问 |
307 | Temporary Redirect,临时重定向。GET 重定向 |
4XX | 请求错误 |
---|---|
400 | Bad Request,语法错误。服务器无法理解 |
401 | Unauthorized,未授权。请求要求用户身份认证 |
403 | Forbidden,拒绝执行。服务端理解请求但拒绝执行 |
404 | Not Found,未找到。服务器找不到请求资源 |
405 | Method Not Allowed,方法禁用。客户端请求方法被禁止 |
406 | Not Acceptable,不接受。服务器无法完成要求 |
407 | Proxy Authentication Required,未授权。请求需要代理的身份认证。 |
408 | Request Time-out,请求超时。客户端发送请求时间过长 |
409 | Conflict,请求冲突。PUT |
410 | Gone,已删除。请求资源不存在 |
411 | Length Required,需有效长度。请求需带 Content-Length 信息 |
412 | Precondition Failed,未满足前提条件。请求前提条件错误 |
413 | Request Entity Too Large,请求实体过大,无法处理,暂时无法处理会返回 Retry-After |
414 | Request-URL Too Large,请求URL过长,无法处理 |
415 | Unsupported Media Type,不支持媒体类型。无法处理请求附带的媒体格式 |
416 | Requested Range No Satisfiable,客户端请求范围无效 |
417 | Expectation Failed,未满足期望值。服务器无法满足 Expect 请求头信息 |
418 | 请求超时,客户端发送请求时间过长 |
5XX | 服务器错误 |
---|---|
500 | Internal Server Error,服务器内部错误 |
501 | Not Implemented,服务器不支持请求方法 |
502 | Bad Getaway,错误网关。代理服务器从远端服务器收到无效请求 |
503 | Service Unavailable,服务不可用。系统维护或超载 |
504 | Gateway Time-Out,网关超时。代理服务器未及时从远端服务器获取请求 |
505 | HTTP Version Not Supported,HTTP协议不受支持。服务器不支持请求的HTTP协议版本 |
1、输入域名网址,或本地(localhost 或 127.0.0.1)、其他 IP
2、浏览器取出域名,通过 DNS 域名服务器,查询对应的 IP 地址
3、浏览器获取端口号,发起连接请求:IP + 端口
4、连接成功,浏览器向服务器发送页面请求:HTTP GET 报文
5、浏览器收到服务器的响应:HTTP 响应报文,根据 HTML、CSS、JS 的顺序加载页面
6、断开连接
5.1 Cookie 饼干
1、全局变量,存在有效期
2、服务器发送给客户端,将 cookie 存放在客户端
3、cookie 中装有 sessionId(请求凭证)
4、cookie 类型
(1)临时/会话 cookie
不设置过期时间,生命周期为浏览器会话期间,关闭浏览器,cookie 失效
(2)永久 cookie
设置了过期时间,Cookie 一直保存在本地,直到超过设定的过期时间
5、缺点:cookie 不安全,会泄露个人隐私
5.2 Session 会话
1、全局变量,存在有效期
2、客户端的 cookie 中装有 sessionId(请求凭证)
3、session 在服务器的 session 表中存放
4、客户端发送请求凭证 sessionId -> 服务器会话列表匹配 session
5、客户端发送 cookie 给服务器时,解析出 sessionId,然后在 session 表中查找是否存在该 session
4、缺点:session 会占用服务器资源
5.3 Token 令牌
1、无状态
2、服务器发送给客户端,将 token 存放在客户端
3、token 组成:uid(用户唯一标识)+ time(时间戳)+ sign(签名)加密
4、密钥由服务器保管
5、客户端每次发送请求都带上 token,服务器通过密钥解密 token
判定 token 是否存在和被修改,返回相应的响应信息
6、有点:同时解决 cookie 不安全和 session 占用服务器资源的问题