一直對tcp http 和socket稀里糊塗的,今天專門的查了下:
tcp/ip是個協議組,它分為網路層,傳輸層和應用層,
網路層:
ip協議、icmp協議、arp協議、rarp協議和bootp協議。
傳輸層:
中有tcp協議與udp協議。
應用層:
ftp、http、telnet、smtp、dns等協議。
tcp 是
傳輸層協議,主要解決資料如何在網路中傳輸的,
tcp
連線是長連線
第一次握手:客戶端傳送請求包到伺服器,等待伺服器確認
第二次握手:伺服器響應客戶端請求,同時也傳送乙個回應包給客戶端
第三次握手:客戶端收到伺服器的回應包後,向伺服器傳送確認包
1.握手過程中傳送的包裡,不包含資料,三次握手完畢後,客戶端與服務端才正式的開始傳遞資料。
tcp一旦連線起來,在客戶端和服務端任何一方主動關閉連線之前,tcp連線都將被一直保持下去。
斷開連線時,伺服器和客戶端都可以主動發起斷開tcp連線的請求。
http(超文字傳輸協議)
是應用層協議
,
主要解決怎麼包裝資料
,
http連線是短連線,它是
無狀態的
,
瀏覽器和伺服器每進行一次http操作,就建立一次連線,
但任務結束就斷開連線
,http是利用tcp在兩台電腦(通常是web伺服器和客戶端)之間傳輸資訊的協議,
socket是對tcp/ip協議的封裝,socket本身並不是協議,而是乙個呼叫介面(api)。
實際上,
傳輸層的tcp是基於網路層的ip協議的,而應用層的http協議又是基於傳輸層的tcp協議的,而
socket本身不算是協議,就像上面所說,它只是提供了乙個針對
tcp或者udp程式設計的介面
https是以安全為目標的http通道,簡單講是http的安全版。即http下加入ssl層
一.https的工作原理
https在傳輸資料前
需要客服端(瀏覽器)與伺服器(**)之間進行一次握手
,在握手過程中將確立雙方加密傳輸資料的密碼資訊
.tls/ssl協議是一套加密傳輸協議,使用了非對稱加密,對稱加密,以及
hash演算法.握手過程如下:
1.客服端將自己支援的一套加密規則
傳送給**.
2.**從中選擇一組加密演算法與雜湊演算法
,並將自己的身份資訊以證書(ssl證書)的形式發回給瀏覽器.證書裡面包含了**位址,加密公鑰,以及證書的頒發機構等資訊.
3,客服端
獲得**證書之後瀏覽器要做以下幾件事情:
a) 驗證證書的合法性(頒發機構是否合法,證書中包含的**位址是否與正在訪問的位址一致等,驗證方法見附1),如果證書受信任,則瀏覽器欄裡面會顯示乙個小鎖頭,否則給出證書不受信任的提示.
b)如果證書受信,或者使用者選擇接受不受信任的證書.瀏覽器生成一串隨機數的密碼,並用證書中提供的公鑰加密.
)使用約定好的雜湊演算法計算握手訊息,並使用生成的隨機數對訊息進行加密,最後將之前生成的所有資訊傳送給**.
4.**接受瀏覽器發來的資料之後要做一下的操作:
a)使用自己的私鑰將資訊解密取出密碼,使用密碼解密瀏覽器發來的的握手訊息,並驗證hash值是否與瀏覽器發來的一直.
b)使用密碼加密一段握手訊息,傳送給瀏覽器.
5.瀏覽器解密並計算握手訊息的hash,如果與服務端發來的hash一致,此時握手過程結束,之後所有的通訊資料將由之前瀏覽器生成的隨機密碼並利用對稱加密演算法進行加密.
瀏覽器與**互相傳送加密的握手訊息並驗證,目的是為了保證雙方都獲得一致的密碼,並且可以正常的加密解密資料,為後續真正的資料傳輸做一次測試.
二:https協議和http協議的區別:
1.https協議需要到
ca申請
2.http傳輸的資訊是
明文
的,https傳輸的資訊是經過
ssl加密
3.http和https使用的是完全不同的
連線方式
,埠不一樣,http埠號80,h
ttps埠為443.
4.http連線簡單,是無狀態的.
5.https協議是有ssl+http協議構建的
可進行加密傳輸//身份認證的網路協議,比http協議安全.
三.tcp協議3次握手,4次揮手
傳輸層建立連線和斷開連線,乙個完整的過程.中間可能出現許多例外,都需要有相應的處理方法.
1. 建立連線協議,三次握手
(1).報文1,客服端傳送乙個帶syn標誌的tcp報文到伺服器.syn(synchronous)是tcp/ip建立連線時使用的握手訊號
。syn攻擊是個比較有意思的事情.
(2).報文2,伺服器端回應客服端,報文帶ack和syn編制.
(3).報文3,客服端在回應乙個ack報文.伺服器端接受到此ack訊號好才啟動連線,此時連線才算成立.
為什麼需要三次握手:由於各個網路的情況不同,可能會產生報文傳輸延時,從而變成失效的連線請求.防止失效的連線請求報文段突然
友傳到了服務端,從而產生錯誤.解決網路中存在重複分組的問題.
只是傳輸層為了防止失效的連線請求而設立的機制.
2.連線終止協議,四次揮手
tcp連線是全雙工,因此每個方向都必須單獨進行關閉.每個方向,當一方完成它的資料傳送任務後就能傳送乙個fin來終止這個方向的連線.
(1). tcp客服端傳送乙個fin,用來關閉客服到伺服器的資料傳送.
(2).伺服器端接收到fin,響應乙個ack,確認序號,為接收到的序號加1.
(3).伺服器關閉客服端的連線,傳送乙個fin給客服端.
(4).客服端發回ack報文確認,並將確認序號設定為序號加1.
4次揮手,為了斷開連線.
TCP IP HTTP和Socket的區別與聯絡
網路由下往上分為 物理層 資料鏈路層 網路層 傳輸層 會話層 表示層和應用層。通過初步的了解,我知道ip協議對應於網路層,tcp協議對應於傳輸層,而http協議對應於應用層,三者從本質上來說沒有可比性,socket則是對tcp ip協議的封裝和應用 程式設計師層面上 也可以說,tpc ip協議是傳輸...
TCP IP HTTP協議的區別
tpc ip協議是傳輸層協議,主要解決資料如何在網路中傳輸,而http是應用層協議,主要解決如何包裝資料。關於tcp ip和http協議的關係,網路有一段比較容易理解的介紹 我們在傳輸資料時,可以只使用 傳輸層 tcp ip協議,但是那樣的話,如果沒有應用層,便無法識別資料內容,如果想要使傳輸的資料...
Tcp Ip http 都是什麼鬼
http協議的底層是由tcp協議和ip 協議構建的。http協議需要遵循tcp ip的協議 http 是超文字傳輸協議 兩個電腦之間傳輸內容的協議 也就是制定傳輸的規則 tcp是傳輸控制協議。tcp是乙太網協議。規定了電子訊號如何組成資料報,解決子網內部點對點的通訊。tcp與udp的區別是什麼?tc...