zoukankan      html  css  js  c++  java
  • HTTP与HTTPS

    1、什么是http协议

    2、http与https的区别

    应用架构

    互联网的飞速发展是商业经济推动的,目前几乎所有的商业应用都是基于互联网的,它们一般采用c/s架构,b/s架构或者m/s架构

    c/s 即 client server 客户端 服务端

    b/s 即 browser server 浏览器 服务端

    m/s 即 moblie server 移动端 服务端

    HTTP协议

    目前互联网上90%的网络传输都是基于http协议

    HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议

    HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)

    HTTP请求流程

    一次http请求的基本流程是,由客户端向服务端发起一次请求(request), 而服务器在接收到以后返回给客户端一个响应(response),所以一次完整的http请求包含请求和响应两部分。

    默认的http协议端口为80端口

    URL

    发送http请求时,通过url对网络资源进行定位

    URL(Uniform Resource Locator),中文叫统一资源定位符,是用来标识某一处资源的地址,也即是我们常说的网址

    普通url一般以下几部分组成

    当我们在浏览器输入一个url按回车键的时候,它做了哪些事情

    域名解析(找到对应的IP地址)

    三次握手(http协议是基于tcp/ip协议的,完成三次握手,客户端 [浏览器也属于客户端] 与服务器开始传送数据)

    1. 第一次握手:建立连接时,客户端发送SYN包到服务器,并进入SYN_SENT状态,等待服务器确认       ###(网购东西时,你向商家提交订单,等待商家过目这个订单)
    2. 第二次握手:服务器收到SYN包,必须确认客户的SYN,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态      ###(商家看过这个订单后,将看过的订单,和等待你确认的收货单同货物邮寄给你)
    3. 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手      ###(你收到后,核对货物与订单相同,签收,将你确认过的收货单邮寄给商家)

    HTTP请求格式

    客户端发送一个HTTP请求到服务器的请求消息包括以下部分:请求行,请求头,空行和请求数据

    请求报文的一般格式

    协议版本只有1.0和1.1

    /r/n/r/n表示报文结束 

    HTTP请求方法

    根据http标准,http请求可以使用多种请求方法

    1.0定义了三种请求方法:GET,POST和HEAD方法

    1.1新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法

     常用方法是 get和post

    GET:简单来说,`GET`方法一般用来负责获取数据,或者将一些简短的数据放到URL参数中传递到服务器。比`POST`更加高效和方便

    POST:由于`GET`方法最多在url中携带1024字节数据,且将数据放到URL中传递太不安全,数据量大时URL也会变得冗长。所以传递数据量大或者安全性要求高的数据的时候,最好使用`POST`方法来传递数据

    HTTP请求正文

    请求正文(报文后面的请求数据)通常是使用POST方法进行发送的数据,GET方法是没有请求正文的

    请求正文跟上面的消息报头由一个空行隔开

    比如你修改头像的时候,上传的那张图片就是请求正文

    HTTP响应

    HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文

    HTTP响应状态码

    当客户端向服务端发起一次请求后,服务端在返回的响应头中会包含一个HTTP状态码

    HTTP的状态码是由三位数字来表示的,由第一位数字来表示状态码的类型,一般来说有五种类型:

      403:拒绝请求

    404:找不到页面

    HTTP请求头

    User-Agant:简称UA,内容包含发出请求的用户信息,通常UA包含浏览者的信息,主要是浏览器的名称版本和所用的操作系统。这个UA头不仅仅是使用浏览器才存在,只要使用了基于HTTP协议的客户端软件都会发送,无论是手机端还是PDA等,    这个UA头是辨别客户端所用设备的重要依据

    Referer:页面跳转处,表明产生请求的网页来自于哪个URL,用户是从该Referer页面访问到当前请求的页面。这个属性可以用来跟踪Web请求来自哪个页面,是从什么网站来的

    Host:指定的请求资源的域名(主机和端口号)。 HTTP请求必须包含HOST,否则系统会以400状态码返回

     Accept-Encoding:指定所能接收的编码方式,通常服务器会对页面进行GZIP压缩后再输出以减少流量,一般浏览器均支持对这种压缩后的数据进行处理,如果不想接收到这些看似乱码的数据,可以指定不接收任何服务器端压缩处理,要求其原样返回

    HTTP响应报头

    Content-Type:WEB服务器告诉客户端自己响应的对象的类型和字符集

    Date:表示消息发送的时间

     HTTP协议的特点

    1. HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间
    2. HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送
    3. HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快

    HTTPS协议

    HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版

    HTTP协议是基于TCP/IP协议的,而HTTPS是在HTTP协议的基础之上,再加了一层SSL/TLS协议,数据在传输过程中是加密的

    HTTPS协议的默认端口是443

  • 相关阅读:
    iOS 11: CORE ML—浅析
    Android 平台 Native 代码的崩溃捕获机制及实现
    H5直播避坑指南
    Mac系统升级至OS X Mavericks后Genymotion出现的问题及解决方法
    Android 4.4 KitKat终于支持录屏(Screen Recording)了!
    Android开发者资源大汇总
    用AndroidSDK中的Face Detector实现人脸识别
    [Android设计模式]Android退出应用程序终极方法
    ActionBarCompat 教程-实现Action Bar
    使用Roboguice依赖注入规划Android项目
  • 原文地址:https://www.cnblogs.com/jiyu-hlzy/p/11732748.html
Copyright © 2011-2022 走看看