服务器和浏览器的通讯依靠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. 域名

http://api.gupaoedu.com

http://api/gupaoedu.com/api

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. 1.6分布式通讯协议-WebService

    RPC 包含的要素(webservice) 协议层:tcp/ip 应用层: http协议 SOAP: http+xml 分布式通信框架-webservice分析 什么是webservice webse ...

  2. 网络协议TCP/IP、IPX/SPX、NETBEUI简介

    网络中不同的工作站,服务器之间能传输数据,源于协议的存在.随着网络的发展,不同的开发商开发了不同的通信方式.为了使通信成功可靠,网络中的所有主机都必须使用同一语言,不能带有方言.因而必须开发严格的标准 ...

  3. TCP/IP协议——TCP/IP协议栈及框架

    TCP/IP协议同ISO/OSI模型一样,也可以安排成栈形式.但这个栈不同于ISO/OSI版本,比ISO/OSI栈少,所以又称之为短栈.另外,需要知道的是:TCP/IP协议栈只是许多支持ISO/OSI ...

  4. 常用传输层协议(tcp/ip+udp)与常用应用层协议简述(http)

    一.计算机网络体系结构 二.TCP与UDP差异 1.TCP是面向连接的可靠传输,UDP是面向无连接的不可靠传输 面向连接表现在3次握手,4次挥手:可靠传输表现在未进行4次挥手时的差错重传,超时重传: ...

  5. TCP/IP 中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议

    原文地址:http://hi.baidu.com/albyuyrgqgbbhoq/item/65006d2d002ab33195f62ba1 TCP/IP(Transmission Control P ...

  6. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  7. tcp/ip (网络通讯协议)

    介绍 TCP: 传输控制协议, IP: 网际协议, TCP/IP: 供已连接互联网的计算机之间进行通信的通信协议 在tcp/ip内部 , 包含一系列处理数据通信的协议: tcp.udp.icmp.dh ...

  8. TCP/IP协议基础(转)

    转自 http://www.chinaunix.net 作者:Bernardus160  发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...

  9. TCP/IP协议详解内容总结

    TCP/IP协议 TCP/IP不是一个协议,而是一个协议族的统称.里面包括IP协议.IMCP协议.TCP协议. TCP/IP分层:   这里有几个需要注意的知识点: 互联网地址:也就是IP地址,一般为 ...

随机推荐

  1. c/c++ 网络编程 getaddrinfo 函数

    网络编程 getaddrinfo 函数 解析网址,返回IP地址. 例子: #include <iostream> #include <string.h> #include &l ...

  2. Python爬虫之pyquery库的基本使用

    # 字符串初始化 html = ''' <div> <ul> <li class = "item-0">first item</li> ...

  3. Java多线程与并发相关问题

    1.什么是线程? 2.线程和进程有什么区别? 3.如何在Java中实现线程? 4.Java关键字volatile与synchronized作用与区别? volatile修饰的变量不保留拷贝,直接访问主 ...

  4. How To Size Your Apache Flink® Cluster: A Back-of-the-Envelope Calculation

    January 11, 2018- Apache Flink Robert Metzger and Chris Ward A favorite session from Flink Forward B ...

  5. CentOS 7 中使用NTP进行时间同步

    1. NTP时钟同步方式说明NTP在linux下有两种时钟同步方式,分别为直接同步和平滑同步: 直接同步 使用ntpdate命令进行同步,直接进行时间变更.如果服务器上存在一个12点运行的任务,当前服 ...

  6. ORACLE 常见等待事件

    一. 等待事件的相关知识 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件.1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候, ...

  7. (十三)Batch Processing

    In addition to being able to index, update, and delete individual documents, Elasticsearch also prov ...

  8. SkylineGlobe TerraExplorer for Web 7.1.0版本 接口示例

    在SkylineGlobe TerraExplorer for Web 7.1.0版本(俗称H5免插件版本)中,如何使用SGWorld接口的三维视域分析方法呢? 请参考下面的示例: 通过下面的代码大家 ...

  9. Lepus搭建企业级数据库慢查询分析平台

    前言 Lepus的慢查询分析平台是独立于监控系统的模块,该功能需要使用percona-toolkit工具来采集和记录慢查询日志,并且需要部署一个我们提供的shell脚本来进行数据采集.该脚本会自动开启 ...

  10. Web项目中出现乱码

    (不知道怎么写才好) 分两种情况: 1.如果是 get 方式 单独修改: new String(str.getBytes("原来的编码"), "想要的编码") ...