iOS-HTTP協(xié)議

一. 網(wǎng)絡(luò)編程基礎(chǔ)

在移動互聯(lián)網(wǎng)時代橱夭,幾乎所有應(yīng)用都需要用到網(wǎng)絡(luò)躲撰,只有通過網(wǎng)絡(luò)跟外界進(jìn)行數(shù)據(jù)交互、數(shù)據(jù)更新弧圆,應(yīng)用才能保持新鮮赋兵、活力。一個好的移動網(wǎng)絡(luò)應(yīng)用不僅要有良好的UI和良好的用戶體驗也要具備實時更新數(shù)據(jù)的能力墓阀。網(wǎng)絡(luò)編程便是一種實時更新應(yīng)用數(shù)據(jù)的常用手段也是開發(fā)優(yōu)秀網(wǎng)絡(luò)應(yīng)用的前提和基礎(chǔ)。

1. 在網(wǎng)絡(luò)編程中拓轻,有幾個必須掌握的基本概念

客戶端(Client):移動應(yīng)用(iOS斯撮、android等應(yīng)用)
服務(wù)器(Server):為客戶端提供服務(wù)、提供數(shù)據(jù)扶叉、提供資源的機(jī)器
請求(Request):客戶端向服務(wù)器索取數(shù)據(jù)的一種行為
響應(yīng)(Response):服務(wù)器對客戶端的請求做出的反應(yīng)勿锅,一般指返回數(shù)據(jù)給客戶端

我們通過下面圖片來理解這四者之間的關(guān)系

二. HTTP協(xié)議

HTTP協(xié)議是在網(wǎng)絡(luò)開發(fā)中最常用的協(xié)議

1. 概念

協(xié)議:協(xié)議是指計算機(jī)通信網(wǎng)絡(luò)中兩臺計算機(jī)之間進(jìn)行通信所必須共同遵守的規(guī)定或規(guī)則,超文本傳輸協(xié)議(HTTP)是一種通信協(xié)議枣氧。

HTTP協(xié)議:即超文本傳輸協(xié)議(Hypertext transfer protocol)溢十。是一種詳細(xì)規(guī)定了瀏覽器和萬維網(wǎng)(WWW = World Wide Web)服務(wù)器之間互相通信的規(guī)則,通過因特網(wǎng)傳送萬維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議达吞。

HTTP協(xié)議作用:HTTP協(xié)議是用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議张弛。它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少酪劫。它不僅保證計算機(jī)正確快速地傳輸超文本文檔吞鸭,還確定傳輸文檔中的哪一部分,以及哪部分內(nèi)容首先顯示(如文本先于圖形)等覆糟。

URL:我們在瀏覽器的地址欄里輸入的網(wǎng)站地址叫做URL (Uniform Resource Locator刻剥,統(tǒng)一資源定位符)。就像每家每戶都有一個門牌地址一樣滩字,每個網(wǎng)頁也都有一個Internet地址造虏。當(dāng)你在瀏覽器的地址框中輸入一個URL或是單擊一個超級鏈接時御吞,URL就確定了要瀏覽的地址。瀏覽器通過超文本傳輸協(xié)議(HTTP)漓藕,將Web服務(wù)器上站點的網(wǎng)頁代碼提取出來陶珠,并翻譯成漂亮的網(wǎng)頁。

2.HTTP版本區(qū)別

HTTP/0.9和1.0 使用非持續(xù)連接撵术,限制每次連接只處理一個請求背率,服務(wù)器對客戶端的請求做出響應(yīng)后,馬上斷開連接嫩与,這種方式可以節(jié)省傳輸時間

HTTP/1.1 當(dāng)前版本寝姿。持久連接被默認(rèn)采用,并能很好地配合代理服務(wù)器工作划滋。還支持以管道方式同時發(fā)送多個請求饵筑,以便降低線路負(fù)載,提高傳輸速度处坪。

HTTP/1.1相較于 HTTP/1.0 協(xié)議的區(qū)別主要體現(xiàn)在:
1 緩存處理
2 帶寬優(yōu)化及網(wǎng)絡(luò)連接的使用
3 錯誤通知的管理
4 消息在網(wǎng)絡(luò)中的發(fā)送
5 互聯(lián)網(wǎng)地址的維護(hù)
6 安全性及完整

3.HTTP工作流程

一次HTTP操作稱為一個事務(wù)根资,其工作過程可分為四步:

  1. 首先客戶機(jī)與服務(wù)器需要建立連接。只要單擊某個超級鏈接同窘,HTTP的工作就開始了玄帕。
  2. 建立連接后,客戶機(jī)發(fā)送一個請求給服務(wù)器想邦,請求方式的格式為:統(tǒng)一資源標(biāo)識符(URL)裤纹、協(xié)議版本號,后邊是MIME信息包括請求修飾符丧没、客戶機(jī)信息和可能的內(nèi)容鹰椒。
  3. 服務(wù)器接到請求后,給予相應(yīng)的響應(yīng)信息呕童,其格式為一個狀態(tài)行漆际,包括信息的協(xié)議版本號、一個成功或錯誤的代碼夺饲,后邊是MIME信息包括服務(wù)器信息奸汇、實體信息和可能的內(nèi)容。
  4. 客戶端接收服務(wù)器所返回的信息通過瀏覽器顯示在用戶的顯示屏上往声,然后客戶機(jī)與服務(wù)器斷開連接茫蛹。

如果在以上過程中的某一步出現(xiàn)錯誤,那么產(chǎn)生錯誤的信息將返回到客戶端烁挟,由顯示屏輸出膘侮。對于用戶來說携栋,這些過程是由HTTP自己完成的,用戶只要用鼠標(biāo)點擊施绎,等待信息顯示就可以了。

HTTP通信過程 - 請求詳細(xì)內(nèi)容

HTTP協(xié)議規(guī)定:1個完整的由客戶端發(fā)給服務(wù)器的HTTP請求中包含以下內(nèi)容

請求頭:包含了對客戶端的環(huán)境描述、客戶端請求信息等

GET /minion.png HTTP/1.1 // 包含了請求方法、請求資源路徑、HTTP協(xié)議版本

Host: 120.25.226.186:32812 // 客戶端想訪問的服務(wù)器主機(jī)地址

User-Agent: Mozilla/5.0 // 客戶端的類型礁遣,客戶端的軟件環(huán)境

Accept: text/html // 客戶端所能接收的數(shù)據(jù)類型

Accept-Language: zh-cn // 客戶端的語言環(huán)境

Accept-Encoding: gzip // 客戶端支持的數(shù)據(jù)壓縮格式

請求體:客戶端發(fā)給服務(wù)器的具體數(shù)據(jù),比如文件數(shù)據(jù)(POST請求才會有)

HTTP通信過程 - 響應(yīng)詳細(xì)內(nèi)容

客戶端向服務(wù)器發(fā)送請求肩刃,服務(wù)器應(yīng)當(dāng)做出響應(yīng)祟霍,即返回數(shù)據(jù)給客戶端

HTTP協(xié)議規(guī)定:1個完整的HTTP響應(yīng)中包含以下內(nèi)容

響應(yīng)頭:包含了對服務(wù)器的描述、對返回數(shù)據(jù)的描述

HTTP/1.1 200 OK // 包含了HTTP協(xié)議版本盈包、狀態(tài)碼沸呐、狀態(tài)英文名稱

Server: Apache-Coyote/1.1 // 服務(wù)器的類型

Content-Type: image/jpeg // 返回數(shù)據(jù)的類型

Content-Length: 56811 // 返回數(shù)據(jù)的長度

Date: Mon, 23 Jun 2014 12:54:52 GMT // 響應(yīng)的時間

響應(yīng)體:服務(wù)器返回給客戶端的具體數(shù)據(jù),比如文件數(shù)據(jù)

常見響應(yīng)狀態(tài)碼

注意:HTTP是基于傳輸層的TCP協(xié)議呢燥,而TCP是一個端到端的面向連接的協(xié)議崭添。所謂的端到端可以理解為進(jìn)程到進(jìn)程之間的通信。所以HTTP在開始傳輸之前叛氨,首先需要建立TCP連接呼渣,而TCP連接的過程需要所謂的“三次握手”。

下圖所示TCP連接的三次握手寞埠。

簡單來說就是

  1. 客戶端向服務(wù)器發(fā)送消息屁置,告訴服務(wù)器我將要發(fā)送數(shù)據(jù)。
  2. 服務(wù)器端接收到客戶端請求后仁连,確認(rèn)自己準(zhǔn)備好接收數(shù)據(jù)蓝角,并告知客戶端,我已經(jīng)準(zhǔn)備好怖糊,可以發(fā)送請求
  3. 客戶端接受到服務(wù)器端已準(zhǔn)備好接收的消息后帅容,發(fā)送數(shù)據(jù)給服務(wù)器端颇象。

在TCP三次握手之后伍伤,建立了TCP連接,此時HTTP就可以進(jìn)行傳輸了遣钳。一個重要的概念是面向連接扰魂,既HTTP在傳輸完成之間并不斷開TCP連接。在HTTP1.1中這是默認(rèn)行為蕴茴。

4. HTTP協(xié)議的特點

HTTP協(xié)議永遠(yuǎn)都是客戶端發(fā)起請求劝评,服務(wù)器回送響應(yīng)。這樣就限制了使用HTTP協(xié)議倦淀,無法實現(xiàn)在客戶端沒有發(fā)起請求的時候蒋畜,服務(wù)器將消息推送給客戶端。

HTTP協(xié)議的主要特點可概括如下:

  1. 簡單快速:因為HTTP協(xié)議簡單撞叽,使得HTTP服務(wù)器的程序規(guī)模小姻成,因而通信速度很快插龄。
  2. 靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記科展。
  3. HTTP 0.9和1.0使用非持續(xù)連接:限制每次連接只處理一個請求均牢,服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后才睹,即斷開連接徘跪。采用這種方式可以節(jié)省傳輸時間。
    HTTP 1.1使用持續(xù)連接:不必為每個web對象創(chuàng)建一個新的連接琅攘,一個連接可以傳送多個對象垮庐。

5. URL

URL的全稱是Uniform Resource Locator(統(tǒng)一資源定位符)
URL就是資源的地址、位置乎澄⊥幌酰互聯(lián)網(wǎng)上的每個資源都有一個唯一的URL,通過這個個URL置济,能找到互聯(lián)網(wǎng)上唯一的一個資源解恰。

URL的基本格式 = 協(xié)議://主機(jī)地址/路徑
協(xié)議:不同的協(xié)議,代表著不同的資源查找方式浙于、資源傳輸方式
主機(jī)地址:存放資源的主機(jī)(服務(wù)器)的IP地址(域名)
路徑:資源在主機(jī)(服務(wù)器)中的具體位置

三. 發(fā)送HTTP請求

1.發(fā)送HTTP請求的方法

在HTTP/1.1協(xié)議中护盈,定義了8種發(fā)送HTTP請求的方法
GET、POST羞酗、OPTIONS腐宋、HEAD、PUT檀轨、DELETE胸竞、TRACE、CONNECT参萄、PATCH
各個方法的解釋如下(所有方法全為大寫):
GET: 請求獲取Request-URI所標(biāo)識的資源
POST: 在Request-URI所標(biāo)識的資源后附加新的數(shù)據(jù)
HEAD: 請求獲取由Request-URI所標(biāo)識的資源的響應(yīng)消息報頭
PUT: 請求服務(wù)器存儲一個資源卫枝,并用Request-URI作為其標(biāo)識
DELETE: 請求服務(wù)器刪除Request-URI所標(biāo)識的資源
TRACE: 請求服務(wù)器回送收到的請求信息,主要用于測試或診斷
CONNECT: 保留將來使用
OPTIONS: 請求查詢服務(wù)器的性能讹挎,或者查詢與資源相關(guān)的選項和需求

根據(jù)HTTP協(xié)議的設(shè)計初衷校赤,不同的方法對資源有不同的操作方式
PUT :增
DELETE :刪
POST:改
GET:查
最常用的是GET和POST(實際上GET和POST都能辦到增刪改查)

2. GET和POST對比和區(qū)別

GET和POST的主要區(qū)別表現(xiàn)在數(shù)據(jù)傳遞上

GET:在請求URL后面以?的形式拼接發(fā)給服務(wù)器的參數(shù),多個參數(shù)之間用&隔開筒溃。

比如http://www.test.com/login?username=123&pwd=234&type=JSON由于瀏覽器和服務(wù)器對URL長度有限制马篮,因此在URL后面附帶的參數(shù)是有限制的,通常不能超過1KB

POST:發(fā)給服務(wù)器的參數(shù)全部放在請求體中怜奖,理論上浑测,POST傳遞的數(shù)據(jù)量沒有限制(具體還得看服務(wù)器的處理能力)

注意:GET和POST都可以向服務(wù)器傳送數(shù)據(jù),也都可以從服務(wù)器獲取數(shù)據(jù)

關(guān)于URL長度的限制
首先歪玲,HTTP協(xié)議及URL官方說明均對URL長度限制沒有說明迁央,也就是說GET怎顾,POST都對URL長度沒有限制,但是HTTP客戶端和服務(wù)器的實現(xiàn)對URL長度進(jìn)行了限制漱贱,因此我們使用GET請求拼接參數(shù)槐雾,有時會導(dǎo)致URL過長而無法進(jìn)行請求。

關(guān)于安全問題
并不是POST比GET特別安全幅狮,只不過GET傳遞的參數(shù)顯示在URL中募强,我們一眼就可以看到,POST方式看不到是因為瀏覽器做了限制崇摄,我們同樣可以用第三方工具看到POST方式傳遞的數(shù)據(jù)擎值。

GET 和POST 的選擇
選擇GET和POST的建議
如果僅僅是索取數(shù)據(jù)(數(shù)據(jù)查詢),建議使用GET
如果是增加逐抑、修改鸠儿、刪除數(shù)據(jù)或者傳遞大量數(shù)據(jù),比如文件上傳厕氨,建議用POST

URL中多值參數(shù)和中文輸出

  1. 多值參數(shù)
    有時候一個參數(shù)名进每,可能會對應(yīng)多個值。例如
    http://120.25.226.186:32812/weather?place=Beijing&place=Henan&place=Hunan
    當(dāng)一個參數(shù)有多個值的時候命斧,需要使用下面這樣方式來賦值
    place=beijing&place=shanghai
    服務(wù)器的place屬性是一個數(shù)組

  2. 中文參數(shù)
    當(dāng)url中有漢字的時候田晚,我們需要先進(jìn)行中文轉(zhuǎn)碼
    GET需要轉(zhuǎn)碼,POST當(dāng)參數(shù)有漢字的時候就不用轉(zhuǎn)碼了国葬,因為POST參數(shù)在請求體中贤徒,但是當(dāng)url有漢字的時候同樣需要轉(zhuǎn)碼。

NSString *urlStr = @"http://120.25.226.186:32812/login2?username=漢字&pwd=520it";
urlStr =  [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

3. iOS中發(fā)送HTTP請求的方案

在iOS中汇四,常見的發(fā)送HTTP請求的方案有
蘋果原生(自帶)
NSURLConnection:用法簡單接奈,最古老最經(jīng)典最直接的一種方案
NSURLSession:功能比NSURLConnection更加強(qiáng)大,蘋果目前比較推薦使用這種技術(shù)(2013推出通孽,iOS7開始使用的技術(shù))

CFNetwork:NSURL*的底層序宦,純C語言

第三方框架
AFNetworking:簡單易用,提供了基本夠用的常用功能利虫,維護(hù)和使用者多
ASIHttpRequest:外號“HTTP終結(jié)者”挨厚,功能極其強(qiáng)大堡僻,可惜早已停止更新
MKNetworkKit:簡單易用糠惫,產(chǎn)自印度,維護(hù)和使用者少

為了提高開發(fā)效率钉疫,我們開發(fā)用的基本是第三方框架硼讽,但是我們同樣也需要掌握蘋果原生的請求方案

四. 服務(wù)器返回的數(shù)據(jù)格式

服務(wù)器返回給客戶端的數(shù)據(jù),一般都是JSON格式或者XML格式(文件下載除外)

1. JSON

什么是JSON
JSON(JavaScript Object Notation):一種輕量級的數(shù)據(jù)交換格式牲阁,具有良好的可讀和便于快速編寫的特性固阁∪蓝悖可在不同平臺之間進(jìn)行數(shù)據(jù)交互。

JSON的格式
JSON的格式很像OC中的字典和數(shù)組
{"name" : "jack", "age" : 10}
{"names" : ["jack", "rose", "jim"]}
標(biāo)準(zhǔn)JSON格式的注意點:key必須用雙引號

JSON解析方案
要想從JSON中挖掘出具體數(shù)據(jù)备燃,需要對JSON進(jìn)行解析碉克,將JSON數(shù)據(jù)轉(zhuǎn)換為OC數(shù)據(jù)類型
在iOS中,蘋果為我們提供了JSON的解析方案 NSJSONSerialization并齐。
NSJSONSerialization的常見方法

JSON數(shù)據(jù) 轉(zhuǎn) OC對象

/*
   參數(shù)一:JSON數(shù)據(jù)
   參數(shù)二:options 一般填kNilOptions
   參數(shù)三:錯誤信息 nil
*/
+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;

OC對象 轉(zhuǎn) JSON數(shù)據(jù)

+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;

2. XML

什么是XML

擴(kuò)展標(biāo)記語言 (Extensible Markup Language, XML) 漏麦,用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言,可以用來標(biāo)記數(shù)據(jù)况褪、定義數(shù)據(jù)類型撕贞,是一種允許用戶對自己的標(biāo)記語言進(jìn)行定義的源語言。 XML使用DTD(document type definition)文檔類型定義來組織數(shù)據(jù);格式統(tǒng)一测垛,跨平臺和語言捏膨,早已成為業(yè)界公認(rèn)的標(biāo)準(zhǔn)。

XML格式

一個常見的XML文檔一般由以下部分組成

  1. 文檔聲明
    在XML文檔的最前面食侮,必須編寫一個文檔聲明号涯,用來聲明XML文檔的類型
    最簡單的聲明
    <?xml version="1.0" ?>
    用encoding屬性說明文檔的字符編碼
    <?xml version="1.0" encoding="UTF-8" ?>

  2. 元素(Element)
    一個元素包括了開始標(biāo)簽和結(jié)束標(biāo)簽
    擁有內(nèi)容的元素:<video>小黃人</video>
    沒有內(nèi)容的元素:<video></video>
    一個元素可以嵌套若干個子元素(不能出現(xiàn)交叉嵌套)
    規(guī)范的XML文檔最多只有1個根元素,其他元素都是根元素的子孫元素

  3. 屬性(Attribute)

XML解析
要想從XML中提取有用的信息锯七,必須得學(xué)會解析XML
XML的解析方式有2種
DOM:一次性將整個XML文檔加載進(jìn)內(nèi)存诚隙,比較適合解析小文件
SAX:從根元素開始,按順序一個元素一個元素往下解析起胰,比較適合解析大文件

解析XML的工具
蘋果原生NSXMLParser: 使用SAX方式解析久又,使用簡單
GDataXML: 采用DOM方式解析,該框架由Goole開發(fā)效五,是基于xml2的

1. 使用NSXMLParser解析XML方法和步驟

//解析步驟:
//1 創(chuàng)建一個解析器
NSXMLParser *parser = [[NSXMLParser alloc]initWithData:data];
//2 設(shè)置代理
parser.delegate = self;
//3 開始解析
[parser parse];

NSXMLParser代理方法

//1.開始解析XML文檔
-(void)parserDidStartDocument:(nonnull NSXMLParser *)parser
{
}
//2.開始解析XML中某個元素的時候調(diào)用地消,比如<video>
-(void)parser:(nonnull NSXMLParser *)parser didStartElement:(nonnull NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName attributes:(nonnull NSDictionary<NSString *,NSString *> *)attributeDict
{
    //可在此方法中做字典轉(zhuǎn)模型操作,參數(shù)attributeDict存放著元素的屬性
}
//3.當(dāng)某個元素解析完成之后調(diào)用畏妖,比如</video>
-(void)parser:(nonnull NSXMLParser *)parser didEndElement:(nonnull NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName
{
}
//4.XML文檔解析結(jié)束
-(void)parserDidEndDocument:(nonnull NSXMLParser *)parser
{
}

NSXMLParser采取的是SAX方式解析脉执,特點是事件驅(qū)動,下面情況都會通知代理

當(dāng)掃描到文檔(Document)的開始與結(jié)束

當(dāng)掃描到元素(Element)的開始與結(jié)束

2. GDataXML解析XML方法和步驟

GDataXML需要配置環(huán)境

  1. 設(shè)置libxml2的頭文件搜索路徑(為了能找到libxml2庫的所有頭文件)
    在Head Search Path中加入/usr/include/libxml2

  2. 設(shè)置鏈接參數(shù)(自動鏈接libxml2庫)
    在Other Linker Flags中加入-lxml2

使用方法

//1 加載XML文檔(使用的是DOM的方式次性把整個XML加載完畢)
    GDataXMLDocument *doc = [[GDataXMLDocument alloc]initWithData:data options:kNilOptions error:nil];
//2 獲取XML文檔的根元素戒劫,根據(jù)根元素取出XML中的每個子元素
  NSArray * elements = [doc.rootElement elementsForName:@"video"];
//3 取出每個子元素的屬性并轉(zhuǎn)換為模型
for (GDataXMLElement *ele in elements) {
    //4 把轉(zhuǎn)換好的模型添加到tableView的數(shù)據(jù)源self.videos數(shù)組中
    [self.videos addObject:video];
}

3. JSON和XML比較

同一份數(shù)據(jù)半夷,既可以用JSON來表示,也可以用XML來表示
相比之下迅细,JSON的體積小于XML巫橄,并且易于解析,傳輸速度也快茵典,所以服務(wù)器返回給移動端的數(shù)據(jù)格式以JSON居多湘换。

五. HTTP應(yīng)用

1. 斷點續(xù)傳的實現(xiàn)原理

HTTP協(xié)議設(shè)置請求頭內(nèi)容,支持只請求某個資源的某一部分。
Range 請求的資源范圍彩倚;
Content-Range 響應(yīng)的資源范圍筹我;
在連接斷開重連時,客戶端只請求該資源未下載的部分帆离,而不是重新請求整個資源蔬蕊,來實現(xiàn)斷點續(xù)傳。
分塊請求資源實例:
Eg1:Range: bytes=306302- :請求這個資源從306302個字節(jié)到末尾的部分哥谷;
Eg2:Content-Range: bytes 306302-604047/604048:響應(yīng)中指示攜帶的是該資源的第306302-604047的字節(jié)袁串,該資源共604048個字節(jié);
客戶端通過并發(fā)的請求相同資源的不同片段呼巷,來實現(xiàn)對某個資源的并發(fā)分塊下載囱修。從而達(dá)到快速下載的目的。目前流行的FlashGet和迅雷基本都是這個原理王悍。

2. 多線程下載的原理

下載工具開啟多個發(fā)出HTTP請求的線程破镰,每個http請求只請求資源文件的一部分,例如:Content-Range: bytes 20000-40000/47000压储;
最后合并每個線程下載的文件鲜漩。

六. HTTPS

1. HTTPS簡介

HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標(biāo)的HTTP通道集惋,簡單講是HTTP的安全版孕似。即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL刮刑,因此加密的詳細(xì)內(nèi)容就需要SSL喉祭。

2. HTTPS通信過程

3. HTTPS與HTTP的區(qū)別

超文本傳輸協(xié)議HTTP協(xié)議被用于在Web瀏覽器和網(wǎng)站服務(wù)器之間傳遞信息。HTTP協(xié)議以明文方式發(fā)送內(nèi)容雷绢,不提供任何方式的數(shù)據(jù)加密泛烙,如果攻擊者截取了Web瀏覽器和網(wǎng)站服務(wù)器之間的傳輸報文,就可以直接讀懂其中的信息翘紊,因此HTTP協(xié)議不適合傳輸一些敏感信息蔽氨,比如信用卡號、密碼等帆疟。

為了解決HTTP協(xié)議的這一缺陷鹉究,需要使用另一種協(xié)議:安全套接字層超文本傳輸協(xié)議HTTPS。為了數(shù)據(jù)傳輸?shù)陌踩俪瑁琀TTPS在HTTP的基礎(chǔ)上加入了SSL協(xié)議自赔,SSL依靠證書來驗證服務(wù)器的身份,并為瀏覽器和服務(wù)器之間的通信加密殴蓬。

HTTPS和HTTP的區(qū)別主要為以下四點:

一匿级、https協(xié)議需要到ca申請證書,一般免費(fèi)證書很少染厅,需要交費(fèi)痘绎。

二、http是超文本傳輸協(xié)議肖粮,信息是明文傳輸孤页,https 則是具有安全性的ssl加密傳輸協(xié)議。

三涩馆、http和https使用的是完全不同的連接方式行施,用的端口也不一樣,前者是80魂那,后者是443蛾号。

四、http的連接很簡單涯雅,是無狀態(tài)的鲜结;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議活逆,比http協(xié)議安全精刷。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蔗候,隨后出現(xiàn)的幾起案子怒允,更是在濱河造成了極大的恐慌,老刑警劉巖锈遥,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纫事,死亡現(xiàn)場離奇詭異,居然都是意外死亡所灸,警方通過查閱死者的電腦和手機(jī)儿礼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庆寺,“玉大人蚊夫,你說我怎么就攤上這事∨吵ⅲ” “怎么了知纷?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長陵霉。 經(jīng)常有香客問我琅轧,道長,這世上最難降的妖魔是什么踊挠? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任乍桂,我火速辦了婚禮冲杀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘睹酌。我一直安慰自己权谁,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布憋沿。 她就那樣靜靜地躺著旺芽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辐啄。 梳的紋絲不亂的頭發(fā)上采章,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機(jī)與錄音壶辜,去河邊找鬼悯舟。 笑死,一個胖子當(dāng)著我的面吹牛砸民,可吹牛的內(nèi)容都是我干的图谷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼阱洪,長吁一口氣:“原來是場噩夢啊……” “哼便贵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起冗荸,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤承璃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蚌本,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盔粹,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年程癌,在試婚紗的時候發(fā)現(xiàn)自己被綠了舷嗡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡嵌莉,死狀恐怖进萄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锐峭,我是刑警寧澤中鼠,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站沿癞,受9級特大地震影響援雇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜椎扬,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一惫搏、第九天 我趴在偏房一處隱蔽的房頂上張望具温。 院中可真熱鬧,春花似錦筐赔、人聲如沸铣猩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剂习。三九已至蛮位,卻和暖如春较沪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背失仁。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工尸曼, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人萄焦。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓控轿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拂封。 傳聞我的和親對象是個殘疾皇子茬射,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)冒签,斷路器在抛,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,333評論 6 152
  • Http協(xié)議詳解 標(biāo)簽(空格分隔): Linux 聲明:本片文章非原創(chuàng)萧恕,內(nèi)容來源于博客園作者M(jìn)IN飛翔的HTTP協(xié)...
    Sivin閱讀 5,210評論 3 82
  • 一刚梭、URL 1、基本介紹 URL的全稱是Uniform Resource Locator(統(tǒng)一資源定位符)通過1個...
    風(fēng)輕魚蛋閱讀 1,386評論 0 3
  • 前言:最近發(fā)現(xiàn)自己在網(wǎng)絡(luò)相關(guān)這一塊基礎(chǔ)很是欠缺票唆,所以準(zhǔn)備花時間了解一下朴读,本文主要是講http協(xié)議的一些基礎(chǔ),和一些...
    justCode_閱讀 2,093評論 0 23