1.4分布式-通讯协议TCP/IP
服务器和浏览器的通讯依靠http协议,今天就来分析一下http协议的具体内容以及https的加密过程。除了这些协议,为了增加服务器和浏览器交互的可拓展性,也出现了rest风格的请求方式,方便调用接口。
HTTP协议的概述
1. 客户端和服务器端
2. 资源
html/文本、word、avi电影、其他资源
3. 媒体类型
MIME类型(告知浏览器如何解析此类型)。 text/html、 image/jpeg
4. URI和URL
URI:web服务器资源的名字。 index.html
URL:http://www.gupaoedu.com:80/java/index.html[?query-string] #location
分析(协议):
schema: http/https/ftp.
host: web服务器的ip地址或者域名
port: 服务端端口, http默认访问的端口是80
path: 资源访问路径
query-string: 查询参数
#location:锚点(定位)
5. 方法
GET/PUT/DELETE/POST/HEAD
报文
request参数、 response响应参数
request消息结构包含三部分: (起始行、首部字段、主体)
METHOD /path / http/version-number
Header-Name:value
空行
主体 optional request body
response
http/version-number status code message
header-name:value
body
状态码
http/1.1版本的协议里面定义了五种类型的状态码
1XX 提示信息
2XX 成功
3XX 重定向
4XX 客户端错误
5XX 服务器端的错误
缓存
服务器可以在返回的响应中设置是否使用缓存
HTTP协议的特点
1. 无状态
cookie+session(使服务器保持状态)
2. 多次请求
3. 基于TCP协议
HTTPS
在HTTP协议上多了一个加密
SSL/TLS(加密)
SSL3.0
ISOC 在SSL的基础上发布了升级版本 TLS1.2
HTTPS的工作原理
在http的基础上进行加密
第一步, 使用对称加解密
第二步,密钥是公开的,所有的客户端都可以拿到(这样可能会被截取)
第三步 针对不同的客户端使用不同的密钥
问题:协商过程是没有加密的,所以还会出现被截断的问题
第四步:使用非对称加密
非对称:公钥和私钥的概念
问题: 客户端如何拿到公钥
1. 服务器端把公钥发送给每一个客户端
2. 服务器端把公钥放到远程服务器,客户端可以请求到
3. 让浏览器保存所有的公钥(不现实)
第五步 公钥被调包的问题按照上面的方案,永远存在。
第六步:使用第三方机构来解决
通过第三方机构,使用第三方机构的私钥对我们【需要传输的公钥】进行加密
第七部分
数字证里面包含的内容:
公司信息、网站信息、数字证书的算法、公钥
连接过程
RESTful
REST 表述性状态转移
使用WEB标准来做一些准则和约束。
RESTful的基本概念
1. 在REST中,一切的内容都被认为是一种资源
2. 每个资源都由URI唯一标识
3. 使用统一的接口处理资源请求(POST/GET/PUT/DELETE/HEAD)
4. 无状态
资源和URI
1. [/]表示资源的层级关系
2. ?过滤资源
3. 使用_或者-让URI的可读性更好
统一接口
GET 获取某个资源。 幂等
POST 创建一个新的资源
PUT 替换某个已有的资源(更新操作) , 幂等
DELETE 删除某个资源
PATCH/HEAD
资源表述
MIME 类型()
accept: text/xml html文件
Content-Type告诉客户端资源的表述形式
资源链接
超媒体即应用状态引擎
状态转移
服务器端不应该保存客户端状态。
应用状态- >服务器端不保存应用状态
访问订单 根据接口去查询
访问商品 查询
RESTful的最佳设计
1. 域名
2. 版本
http://api.gupaoedu.com/v1/user/1
header里面维护版本
3. 路径
http://api.gupaoedu.com/v1/users_list //获取用户列表
http://api.gupaoedu.com/v1/goods-list //商品列表
http://api.gupaoedu.com/v1/users/{id}
4. 过滤信息
https://api.github.com/user/repos?page=2&per_page=100
https://developer.github.com/v3/#rate-limiting
5. 状态码
业务状态码
http状态码
1.4分布式-通讯协议TCP/IP的更多相关文章
- 1.6分布式通讯协议-WebService
RPC 包含的要素(webservice) 协议层:tcp/ip 应用层: http协议 SOAP: http+xml 分布式通信框架-webservice分析 什么是webservice webse ...
- 网络协议TCP/IP、IPX/SPX、NETBEUI简介
网络中不同的工作站,服务器之间能传输数据,源于协议的存在.随着网络的发展,不同的开发商开发了不同的通信方式.为了使通信成功可靠,网络中的所有主机都必须使用同一语言,不能带有方言.因而必须开发严格的标准 ...
- TCP/IP协议——TCP/IP协议栈及框架
TCP/IP协议同ISO/OSI模型一样,也可以安排成栈形式.但这个栈不同于ISO/OSI版本,比ISO/OSI栈少,所以又称之为短栈.另外,需要知道的是:TCP/IP协议栈只是许多支持ISO/OSI ...
- 常用传输层协议(tcp/ip+udp)与常用应用层协议简述(http)
一.计算机网络体系结构 二.TCP与UDP差异 1.TCP是面向连接的可靠传输,UDP是面向无连接的不可靠传输 面向连接表现在3次握手,4次挥手:可靠传输表现在未进行4次挥手时的差错重传,超时重传: ...
- TCP/IP 中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议
原文地址:http://hi.baidu.com/albyuyrgqgbbhoq/item/65006d2d002ab33195f62ba1 TCP/IP(Transmission Control P ...
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...
- tcp/ip (网络通讯协议)
介绍 TCP: 传输控制协议, IP: 网际协议, TCP/IP: 供已连接互联网的计算机之间进行通信的通信协议 在tcp/ip内部 , 包含一系列处理数据通信的协议: tcp.udp.icmp.dh ...
- TCP/IP协议基础(转)
转自 http://www.chinaunix.net 作者:Bernardus160 发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...
- TCP/IP协议详解内容总结
TCP/IP协议 TCP/IP不是一个协议,而是一个协议族的统称.里面包括IP协议.IMCP协议.TCP协议. TCP/IP分层: 这里有几个需要注意的知识点: 互联网地址:也就是IP地址,一般为 ...
随机推荐
- 自动化测试之路2---python安装
借鉴这位老哥的文章http://www.cnblogs.com/shabbylee/p/6792555.html
- 使用mybatis报错【Result Maps collection already contains value for ...BaseResultMap】的解决方法
Result Maps collection already contains value for ...BaseResultMap ...... 这个问题,相信大家在使用mybatis的重新生成 d ...
- 如何使用PowerDesigner建表
说明 个人认为,直接使用数据库管理工具如Navicat直接建表,如果后期需要进行库的迁移,不是那么方便,不如直接在PowerDesigner里面建表,更自由一些 版本:PowerDesigner15 ...
- centos7 搭建ntp时钟服务器
服务器 : 192.168.137.3 客户机: 192.168.137.6 1. 服务器端 centos7下首先确认服务器的防火墙.selinux关闭状态 # cat /etc/redhat-re ...
- Vue 自定义一个插件的用法、小案例及在项目中的应用
1.开发插件 install有两个参数,第一个是Vue构造器,第二个参数是一个可选的选项对象 MyPlugin.install = function (Vue, options) { // 1 ...
- TortoiseGit 安装
1.TortoiseGit 下载安装 2.语言包下载安装 3.配置语言 一 TortoiseGit 下载安装 官网下载地址:https://download.tortoisegit.org/tgit/ ...
- KEIL_MDK生成Bin文件
1.MDK配置 MDK是使用安装目录下的(formelf.exe)工具来生成bin文件,配置方法:勾选 "Run # 1",在后面输入框写入bin文件生成方式 2.绝对路径 &qu ...
- Java HttpURLConnection发送post请求示例
public static Map<String, Object> invokeCapp(String urlStr, Map<String, Object> params) ...
- 一、TensorFlow初探
目录 计算模型 数据模型 运行模型 TensorFlow及神经网络 import tensorflow as tf a = tf.constant([1.0, 2.0], name='a', dtyp ...
- Python Revisited Day 07 (文件处理)
目录 7.1 二进制数据的读与写 7.1.1 带可选压缩的Pickle 7.1.2 带可选压缩的原始二进制数据 7.2 文本文件的写入与分析 7.2.1 写入文本 7.2.2 分析文本 7.2.3 使 ...