http和https的區(qū)別胶哲?http與TCP/IP區(qū)別?http/TCP三次握手四次揮手

https是什么潭辈?

https, 全稱Hyper Text Transfer Protocol Secure鸯屿,相比http澈吨,多了一個secure,這一個secure是怎么來的呢寄摆?這是由TLS(SSL)提供的谅辣,這個又是什么呢?估計你也不想知道婶恼。大概就是一個叫openSSL的library提供的屈藐。https和http都屬于application layer,基于TCP(以及UDP)協(xié)議熙尉,但是又完全不一樣联逻。TCP用的port是80, https用的是443(值得一提的是检痰,google發(fā)明了一個新的協(xié)議包归,叫QUIC,并不基于TCP铅歼,用的port也是443公壤, 同樣是用來給https的。谷歌好牛逼啊椎椰。)總體來說厦幅,https和http類似,但是比http安全慨飘。

在http(應用層) 和TCP(傳輸層)之間插入一個SSL協(xié)議, 就是https确憨。一句話:http+加密+認證+完整性保護=https

http缺省工作在TCP協(xié)議80端口(需要國內備案),用戶訪問網站http://打頭的都是標準http服務瓤的,http所封裝的信息都是明文的休弃,通過抓包工具可以分析其信息內容,如果這些信息內容包含你的銀行卡賬號圈膏、密碼塔猾,你肯定無法接受這種服務,那有沒有可以加密這些敏感信息的服務呢稽坤?那就是https丈甸!

https是http運行在SSL/TLS之上,SSL/TLS運行在TCP之上尿褪。所有傳輸?shù)膬热荻冀涍^加密睦擂,加密采用對稱加密,但對稱加密的密鑰用服務器方的證書進行了非對稱加密茫多。此外客戶端可以驗證服務器端的身份祈匙,如果配置了客戶端驗證,服務器方也可以驗證客戶端的身份。

https缺省工作在tcp協(xié)議443端口夺欲,它的工作流程一般如以下方式:

1跪帝、完成tcp三次同步握手;

2些阅、客戶端驗證服務器數(shù)字證書伞剑,通過,進入步驟3市埋;

3黎泣、DH算法協(xié)商對稱加密算法的密鑰、hash算法的密鑰缤谎;

4抒倚、SSL安全加密隧道協(xié)商完成;

5坷澡、網頁以加密的方式傳輸托呕,用協(xié)商的對稱加密算法和密鑰加密,保證數(shù)據(jù)機密性频敛;用協(xié)商的hash算法進行數(shù)據(jù)完整性保護项郊,保證數(shù)據(jù)不被篡改。

附:https一般使用的加密與hash算法如下:

非對稱加密算法:RSA斟赚,DSA/DSS

對稱加密算法:AES着降,RC4,3DES

hash算法:MD5拗军,SHA1任洞,SHA256

如果https是網銀服務,以上SSL安全隧道成功建立才會要求用戶輸入賬戶信息食绿,賬戶信息是在安全隧道里傳輸侈咕,所以不會泄密!


HTTP與TCP/IP區(qū)別器紧?

TPC/IP協(xié)議是傳輸層協(xié)議,主要解決數(shù)據(jù)如何在網絡中傳輸楼眷,而HTTP是應用層協(xié)議铲汪,主要解決如何包裝數(shù)據(jù)。Web使用HTTP協(xié)議作應用層協(xié)議罐柳,以封裝HTTP 文本信息掌腰,然后使用TCP/IP做傳輸層協(xié)議將它發(fā)到網絡上。

下面的圖表試圖顯示不同的TCP/IP和其他的協(xié)議在最初OSI(Open System Interconnect)模型中的位置:

(圖片來源網絡)

CA證書是什么张吉?

CA(Certificate Authority)是負責管理和簽發(fā)證書的第三方權威機構齿梁,是所有行業(yè)和公眾都信任的、認可的。

CA證書勺择,就是CA頒發(fā)的證書创南,可用于驗證網站是否可信(針對HTTPS)、驗證某文件是否可信(是否被篡改)等省核,也可以用一個證書來證明另一個證書是真實可信稿辙,最頂級的證書稱為根證書。除了根證書(自己證明自己是可靠)气忠,其它證書都要依靠上一級的證書邻储,來證明自己。


https和ssl在握手方向有什么區(qū)別:

https大致過程:

1旧噪、建立服務器443端口連接 吨娜;

2、SSL握手:隨機數(shù)淘钟,證書萌壳,密鑰,加密算法日月;

3袱瓮、發(fā)送加密請求 ;

4爱咬、發(fā)送加密響應尺借;

5、關閉SSL精拟;

6燎斩、關閉TCP.

SSL握手大致過程:

1、客戶端發(fā)送隨機數(shù)1蜂绎,支持的加密方法(如RSA公鑰加密)栅表;

2、服務端發(fā)送隨機數(shù)2师枣,和服務器公鑰怪瓶,并確認加密方法;

3践美、客戶端發(fā)送用服務器公鑰加密的隨機數(shù)3洗贰;

4、服務器用私鑰解密這個隨機數(shù)3陨倡,用加密方法計算生成對稱加密的密鑰給客戶端敛滋;

5、接下來的報文都用雙方協(xié)定好的加密方法和密鑰兴革,進行加密.

TCP與UDP區(qū)別總結:

1绎晃、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的蜜唾,即發(fā)送數(shù)據(jù)之前不需要建立連接

2、TCP提供可靠的服務庶艾。也就是說袁余,通過TCP連接傳送的數(shù)據(jù),無差錯落竹,不丟失泌霍,不重復,且按序到達;UDP盡最大努力交付述召,即不保證可靠交付

3朱转、TCP面向字節(jié)流,實際上是TCP把數(shù)據(jù)看成一連串無結構的字節(jié)流(流模式);UDP是面向報文的(報文模式)积暖,UDP沒有擁塞控制藤为,因此網絡出現(xiàn)擁塞不會使源主機的發(fā)送速率降低(對實時應用很有用,如IP電話夺刑,實時視頻會議等)

4缅疟、每一條TCP連接只能是點到點的;UDP支持一對一,一對多遍愿,多對一和多對多的交互通信

5存淫、TCP要求系統(tǒng)資源較多,UDP較少沼填。TCP首部開銷20字節(jié);UDP的首部開銷小桅咆,只有8個字節(jié)

TCP三次握手四次揮手:

SYN:同步序列編號; ? ACK=1: 確認序號 ; ?FIN附加標記的報文段(FIN表示英文finish)

一個TCP連接必須要經過三次“對話”才能建立起來,其中的過程非常復雜坞笙,只簡單的 描述下這三次對話的簡單過程:主機A向主機B發(fā)出連接請求數(shù)據(jù)包:“我想給你發(fā)數(shù)據(jù)岩饼,可以嗎?”薛夜,這是第一次對話籍茧;主機B向主機A發(fā)送同意連接和要求同步 (同步就是兩臺主機一個在發(fā)送,一個在接收梯澜,協(xié)調工作)的數(shù)據(jù)包:“可以寞冯,你什么時候發(fā)?”腊徙,這是第二次對話简十;主機A再發(fā)出一個數(shù)據(jù)包確認主機B的要求同 步:“我現(xiàn)在就發(fā),你接著吧撬腾!”,這是第三次對話恢恼。三次“對話”的目的是使數(shù)據(jù)包的發(fā)送和接收同步民傻,經過三次“對話”之后,主機A才向主機B正式發(fā)送數(shù)據(jù)。

為什么需要“三次握手”?

? ? ? ? ? ? 在謝希仁著《計算機網絡》第四版中講“三次握手”的目的是“為了防止已失效的連接請求報文段突然又傳送到了服務端漓踢,因而產生錯誤”牵署。在另一部經典的《計算機網絡》一書中講“三次握手”的目的是為了解決“網絡中存在延遲的重復分組”的問題。這兩種不一樣的表述其實闡明的是同一個問題喧半。

??????????? 謝希仁版《計算機網絡》中的例子是這樣的奴迅,“已失效的連接請求報文段”的產生在這樣一種情況下:client發(fā)出的第一個連接請求報文段并沒有丟失,而是在某個網絡結點長時間的滯留了挺据,以致延誤到連接釋放以后的某個時間才到達server取具。本來這是一個早已失效的報文段。但server收到此失效的連接請求報文段后扁耐,就誤認為是client再次發(fā)出的一個新的連接請求暇检。于是就向client發(fā)出確認報文段,同意建立連接婉称。假設不采用“三次握手”块仆,那么只要server發(fā)出確認,新的連接就建立了王暗。由于現(xiàn)在client并沒有發(fā)出建立連接的請求悔据,因此不會理睬server的確認,也不會向server發(fā)送數(shù)據(jù)俗壹。但server卻以為新的運輸連接已經建立科汗,并一直等待client發(fā)來數(shù)據(jù)。這樣策肝,server的很多資源就白白浪費掉了肛捍。采用“三次握手”的辦法可以防止上述現(xiàn)象發(fā)生。例如剛才那種情況之众,client不會向server的確認發(fā)出確認拙毫。server由于收不到確認,就知道client并沒有要求建立連接棺禾∽禾悖”。主要目的防止server端一直等待膘婶,浪費資源缺前。

為什么需要“四次揮手”?

? ? ? ? ? ? ? 可能有人會有疑問悬襟,在tcp連接握手時為何ACK是和SYN一起發(fā)送衅码,這里ACK卻沒有和FIN一起發(fā)送呢。原因是因為tcp是全雙工模式脊岳,接收到FIN時意味將沒有數(shù)據(jù)再發(fā)來逝段,但是還是可以繼續(xù)發(fā)送數(shù)據(jù)垛玻。 ??

握手,揮手過程中各狀態(tài)介紹:?

3次握手過程狀態(tài):?

LISTEN: 這個也是非常容易理解的一個狀態(tài)奶躯,表示服務器端的某個SOCKET處于監(jiān)聽狀態(tài)帚桩,可以接受連接了。?

SYN_SENT: 當客戶端SOCKET執(zhí)行CONNECT連接時嘹黔,它首先發(fā)送SYN報文账嚎,因此也隨即它會進入到了SYN_SENT狀態(tài),并等待服務端的發(fā)送三次握手中的第2個報文儡蔓。SYN_SENT狀態(tài)表示客戶端已發(fā)送SYN報文郭蕉。(發(fā)送端)

SYN_RCVD: 這個狀態(tài)與SYN_SENT遙想呼應這個狀態(tài)表示接受到了SYN報文,在正常情況下浙值,這個狀態(tài)是服務器端的SOCKET在建立TCP連接時的三次握手會話過程中的一個中間狀態(tài)恳不,很短暫,基本上用netstat你是很難看到這種狀態(tài)的开呐,除非你特意寫了一個客戶端測試程序烟勋,故意將三次TCP握手過程中最后一個 ACK報文不予發(fā)送。因此這種狀態(tài)時筐付,當收到客戶端的ACK報文后卵惦,它會進入到ESTABLISHED狀態(tài)。(服務器端)

ESTABLISHED:這個容易理解了瓦戚,表示連接已經建立了沮尿。

4次揮手過程狀態(tài):(可參考下圖):


FIN_WAIT_1: 這個狀態(tài)要好好解釋一下,其實FIN_WAIT_1和FIN_WAIT_2狀態(tài)的真正含義都是表示等待對方的FIN報文较解。而這兩種狀態(tài)的區(qū)別是:FIN_WAIT_1狀態(tài)實際上是當SOCKET在ESTABLISHED狀態(tài)時畜疾,它想主動關閉連接,向對方發(fā)送了FIN報文印衔,此時該SOCKET即進入到FIN_WAIT_1狀態(tài)啡捶。而當對方回應ACK報文后,則進入到FIN_WAIT_2狀態(tài)奸焙,當然在實際的正常情況下瞎暑,無論對方何種情況下,都應該馬上回應ACK報文与帆,所以FIN_WAIT_1狀態(tài)一般是比較難見到的了赌,而FIN_WAIT_2狀態(tài)還有時常常可以用netstat看到玄糟。(主動方)

FIN_WAIT_2:上面已經詳細解釋了這種狀態(tài)勿她,實際上FIN_WAIT_2狀態(tài)下的SOCKET,表示半連接阵翎,也即有一方要求close連接嫂拴,但另外還告訴對方播揪,我暫時還有點數(shù)據(jù)需要傳送給你(ACK信息)贮喧,稍后再關閉連接筒狠。(主動方)

TIME_WAIT:?表示收到了對方的FIN報文,并發(fā)送出了ACK報文箱沦,就等2MSL后即可回到CLOSED可用狀態(tài)了辩恼。如果FIN_WAIT_1狀態(tài)下,收到了對方同時帶FIN標志和ACK標志的報文時谓形,可以直接進入到TIME_WAIT狀態(tài)灶伊,而無須經過FIN_WAIT_2狀態(tài)。(主動方)

CLOSING(比較少見): 這種狀態(tài)比較特殊寒跳,實際情況中應該是很少見聘萨,屬于一種比較罕見的例外狀態(tài)。正常情況下童太,當你發(fā)送FIN報文后米辐,按理來說是應該先收到(或同時收到)對方的 ACK報文,再收到對方的FIN報文书释。但是CLOSING狀態(tài)表示你發(fā)送FIN報文后翘贮,并沒有收到對方的ACK報文,反而卻也收到了對方的FIN報文爆惧。什么情況下會出現(xiàn)此種情況呢狸页?其實細想一下,也不難得出結論:那就是如果雙方幾乎在同時close一個SOCKET的話扯再,那么就出現(xiàn)了雙方同時發(fā)送FIN報文的情況芍耘,也即會出現(xiàn)CLOSING狀態(tài),表示雙方都正在關閉SOCKET連接熄阻。

CLOSE_WAIT: 這種狀態(tài)的含義其實是表示在等待關閉斋竞。怎么理解呢?當對方close一個SOCKET后發(fā)送FIN報文給自己饺律,你系統(tǒng)毫無疑問地會回應一個ACK報文給對方窃页,此時則進入到CLOSE_WAIT狀態(tài)。接下來呢复濒,實際上你真正需要考慮的事情是察看你是否還有數(shù)據(jù)發(fā)送給對方脖卖,如果沒有的話,那么你也就可以 close這個SOCKET巧颈,發(fā)送FIN報文給對方畦木,也即關閉連接。所以你在CLOSE_WAIT狀態(tài)下砸泛,需要完成的事情是等待你去關閉連接十籍。(被動方)

LAST_ACK: 這個狀態(tài)還是比較容易好理解的蛆封,它是被動關閉一方在發(fā)送FIN報文后,最后等待對方的ACK報文勾栗。當收到ACK報文后惨篱,也即可以進入到CLOSED可用狀態(tài)了。(被動方)

CLOSED: 表示連接中斷围俘。

TCP的具體狀態(tài)圖可參考:


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末砸讳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子界牡,更是在濱河造成了極大的恐慌簿寂,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宿亡,死亡現(xiàn)場離奇詭異常遂,居然都是意外死亡,警方通過查閱死者的電腦和手機挽荠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門克胳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坤按,你說我怎么就攤上這事毯欣。” “怎么了臭脓?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵酗钞,是天一觀的道長。 經常有香客問我来累,道長砚作,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任嘹锁,我火速辦了婚禮葫录,結果婚禮上,老公的妹妹穿的比我還像新娘领猾。我一直安慰自己米同,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布摔竿。 她就那樣靜靜地躺著面粮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪继低。 梳的紋絲不亂的頭發(fā)上熬苍,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音,去河邊找鬼柴底。 笑死婿脸,一個胖子當著我的面吹牛,可吹牛的內容都是我干的柄驻。 我是一名探鬼主播狐树,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凿歼!你這毒婦竟也來了褪迟?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤答憔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后掀抹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虐拓,經...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年傲武,在試婚紗的時候發(fā)現(xiàn)自己被綠了蓉驹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡揪利,死狀恐怖态兴,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情疟位,我是刑警寧澤瞻润,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站甜刻,受9級特大地震影響绍撞,放射性物質發(fā)生泄漏。R本人自食惡果不足惜得院,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一傻铣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧祥绞,春花似錦非洲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至丧荐,卻和暖如春缆瓣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背虹统。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工弓坞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留隧甚,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓渡冻,卻偏偏與公主長得像戚扳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子族吻,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容