TCP TCP/IP HTTP Socket URL 等一些概念

TCP/IP :

    實用性高於七層。廣爲流傳,模型本身沒有多大用處。它對服務,接口和協議沒有明確的區分, 下圖也是人們對它進行了改進,使它更像OSI.它的網絡層只支持一種面向無連接的服務, 但傳輸層同時支持TCP(面向連接)和UDP(面向無連接)兩種通信模式。

面向連接和無連接的概念:

面向連接:

   ->服務:是指用戶首先必須先建立一個連接,然後用這個連接傳輸數據,再釋放或關閉連接.如:一個管道,發送方把數據壓入管道的一端, 接收方在另一端將它們取出來.基本保持順序.

    ->協議: TCP, 全雙工, 收發兩端可以同時發送和接收.連接建立需要經過3次握手, 連接斷開需要4次所致手.連接方式是點對點的, 無法做到多播.

面向無連接:

   ->服務:不保證傳輸的數據到達,且可能無序.每個報文都攜帶了完整的目標地址, 由系統的中間路由出去.

   ->協議:UDP,幾乎是直接和網絡層的IP協議通信.在兩個進程通信之前沒有握手的過程, 因此稱爲無連接服務.當一端需要發送報文時, 通過UDP套接字發送報文,UDP不保證有序, 不保證一定被接收端收到.且沒有擁塞的控制.

1.應用層

應用層決定了向用戶提供應用服務時的通信活動。

FTP(文件傳輸協議)和DNS(域名系統)域名系統提供域名到ip地址的解析服務、http協議都是處於該層。

2.傳輸層

傳輸層對上層應用層、提供處於網絡連接中的兩臺計算機之間的數據傳輸。

傳輸層有兩個不同的協議:TCP(傳輸控制協議)和UDP(用戶數據報協議)、UDP不能保證數據無誤的傳輸,協議不可靠。

3、網絡層(IP)

用來處理網絡上的數據包,數據包是網絡傳輸的最小數據單位,該層規定了通過怎麼樣的路徑到達對方計算機,並把數據包傳送給對方。

與對方計算機之間通過多臺計算機或者網絡設備進行傳輸時,網絡層所起的作用就是在衆多的選項內選擇一條傳輸路線。

4、鏈路層(數據鏈路層、網絡接口層)

用來處理連接網絡的硬件部分。包括控制操作系統、硬件的設備驅動、網卡,及光纖等物理課件部分。硬件上的範疇均在鏈路層的作用範圍之內。

爲了將數據準確無誤的傳遞到目標處,TCP進行了三次握手,握手採用TCP的標誌 -----SYN(synchronize)和ACK(acknowledgement)。

客戶端首先發送一個帶SYN標誌的數據包給對方。接收端收到後,回傳一個帶有SYN/ACK標誌的數據包以示傳達確認信息,最後客戶端再回傳一個帶ACK標誌的數據包,代表握手結束。

握手過程中傳送的包裏不包含數據,三次握手完畢後,客戶端與服務器才正式開始傳送數據。理想狀態下,TCP連接一旦建立,在通信雙方中的任何一方主動關閉連接之前,TCP 連接都將被一直保持下去。斷開連接時服務器和客戶端均可以主動發起斷開TCP連接的請求,斷開過程需要經過“四次握手”(過程就不細寫了,就是服務器和客戶端交互,最終確定斷開)。

實例一:
IP 192.168.1.116.3337 > 192.168.1.123.7788: S 3626544836:3626544836
IP 192.168.1.123.7788 > 192.168.1.116.3337: S 1739326486:1739326486 ack 3626544837
IP 192.168.1.116.3337 > 192.168.1.123.7788: ack 1739326487,ack 1

第一次握手:192.168.1.116發送位碼syn=1,隨機產生seq number=3626544836的數據包到192.168.1.123,192.168.1.123由SYN=1知道192.168.1.116要求建立聯機;
第二次握手:192.168.1.123收到請求後要確認聯機信息,向192.168.1.116發送ack number=3626544837,syn=1,ack=1,隨機產生seq=1739326486的包;
第三次握手:192.168.1.116收到後檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ack是否爲1,若正確,192.168.1.116會再發送ack number=1739326487,ack=1,192.168.1.123收到後確認seq=seq+1,ack=1則連接建立成功。

 

Socket

套接字(socket)是通信的基石,是支持TCP/IP協議的網絡通信的基本操作單元。它是網絡通信過程中端點的抽象表示,包含進行網絡通信必須的五種信息:連接使用的協議,本地主機的IP地址,本地進程的協議端口,遠地主機的IP地址,遠地進程的協議端口。

應用層通過傳輸層進行數據通信時,TCP會遇到同時爲多個應用程序進程提供併發服務的問題。多個TCP連接或多個應用程序進程可能需要通過同一個TCP協議端口傳輸數據。爲了區別不同的應用程序進程和連接,許多計算機操作系統爲應用程序與TCP/IP協議交互提供了套接字(Socket)接口。應用層可以和傳輸層通過Socket接口,區分來自不同應用程序進程或網絡連接的通信,實現數據傳輸的併發服務。

套接字之間的連接過程分爲三個步驟:服務器監聽,客戶端請求,連接確認。

通過下圖可以看, 實際上socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個調用接口(API),通過Socket,我們才能使用TCP/IP協議:

URL和URI區別

URL是統一資源定位符,URI是統一資源標識符,URI用字符串標識某一互聯網的資源,而URL標識資源的地點(互聯網所處的位置)。

 

HTTP協議

1.HTTP協議請求報文

請求報文是由請求方法、請求URI、協議版本、可選的請求首部字段和內容實體構成。

HTTP協議響應報文

響應報文是由西一版本、狀態碼以及結識狀態碼的短語,可選響應首部字段和實體組成的。

3.HTTP協議方法

GET:獲取資源

用來請求訪問已被URI標識的資源。制定的資源經服務器解析後返回響應內容,也就是說請求的資源是文本,那就保持原樣返回。

POST:傳輸實體主體

雖然GET方法也能傳輸實體主體,但是一般不用GET方法進行傳輸,而是用POST,POST請求參數在body中,用戶不可見,而get傳輸內容拼接在URL中,用戶可見,安全性較差。

PUT:傳輸文件

用來傳輸文件,就像FTP協議的文件上傳一樣,要求在請求報文中主體重包含文件內容,然後保存到URI指定的位置。

但是PUT不帶驗證機制,存在安全問題,web網站一般不使用。

HEAD:獲取報文首部

HEAD和GET一樣,只是不返回報文主體,用於確認URI的有效性及資源更新的日期時間等。

DELETE:刪除文件

與PUT相反的方法,用來按請求URI刪除制定文件。

與PUT一樣不帶驗證機制,存在安全問題,web網站一般不使用,使用必須配合程序驗證機制一起使用。

OPTIONS:詢問支持的方法

OPTIONS方法用來查詢針對請求URI指定資源的支持方法。

TRACE:追蹤路徑

讓web服務器端將之前的請求通信環會給客戶端的方法。

CONNECT:要求用隧道協議連接代理

要求和代理服務器通信時建立隧道,實現隧道協議進行TCP通信,主要使用SSL(安全套接字)和TSL(傳輸層安全)協議把通信內容加密後經網絡隧道傳輸。

Websocket

Websocket協議解決了服務器與客戶端全雙工通信的問題。

注:什麼是單工、半雙工、全工通信? 
信息只能單向傳送爲單工; 
信息能雙向傳送但不能同時雙向傳送稱爲半雙工; 
信息能夠同時雙向傳送則稱爲全雙工。

websocket協議解析 
wensocket協議包含兩部分:一部分是“握手”,一部分是“數據傳輸”。

WebSocket和Socket區別

可以把WebSocket想象成HTTP(應用層),HTTP和Socket什麼關係,WebSocket和Socket就是什麼關係。

HTTP 協議有一個缺陷:通信只能由客戶端發起,做不到服務器主動向客戶端推送信息。

WebSocket 協議在2008年誕生,2011年成爲國際標準。所有瀏覽器都已經支持了。 
它的最大特點就是,服務器可以主動向客戶端推送信息,客戶端也可以主動向服務器發送信息,是真正的雙向平等對話,屬於服務器推送技術的一種。
 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章