標籤:短串連 lin 手機 即時監控 客戶 特性 應用程式層協議 指定 其他
http://blog.csdn.net/jenminzhang/article/details/47017741
http協議:處於互連網協議的應用程式層,角色是規定資料轉送的格式,http是建立在socket(這裡的上下文指的是http socket)之上的
TCP/IP協議是傳輸層協議,主要解決資料如何在網路中傳輸,HTTP是應用程式層協議,主要解決如何封裝資料。HTTP協議詳細規定了瀏覽器與伺服器之間相互連信的規則,是全球資訊網交換資訊的基礎。HTTP是基於要求-回應形式並且是短串連,並且是無狀態的協議。針對其無狀態特性,在實際應用中又需要有狀態的形式,因此一般會通過session/cookie技術來解決此問題。
短串連: 一次HTTP請求的完成經過了建立TCP連結->用戶端發送報文->服務端返回報文->服務端或用戶端關閉此串連這個過程,由於每次都要建立串連,並在完成一次請求響應後關閉串連,所以大家稱為“短串連”。
1、TCP串連
手機能夠使用連網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網路建立TCP串連。TCP協議可以對上層網路提供介面,使上層網路資料的傳輸建立在“無差別”的網路之上。
建立起一個TCP串連需要經過“三向交握”:
第一次握手:用戶端發送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三向交握:用戶端收到伺服器的SYN+ACK包,向伺服器發送確認包ACK(ack=k+1),此包發送完畢,用戶端和伺服器進入ESTABLISHED狀態,完成三向交握。
握手過程中傳送的包裡不包含資料,三向交握完畢後,用戶端與伺服器才正式開始傳送資料。理想狀態下,TCP串連一旦建立,在通訊雙方中的任何一方主動關閉串連之前,TCP 串連都將被一直保持下去。中斷連線時伺服器和用戶端均可以主動發起斷開TCP串連的請求,斷開過程需要經過“四次握手”.
Socket:Socket不屬於協議範疇,而是一個調用介面(API),Socket是對TCP/IP協議的封裝,通過調用Socket,才能使用TCP/IP協議。Socket串連是長串連,理論上用戶端和伺服器端一旦建立串連將不會主動斷開此串連。Socket串連屬於要求-回應形式,服務端可主動將訊息推送給用戶端。
1. 建立socket串連
建立Socket串連至少需要一對通訊端,其中一個運行於用戶端,稱為ClientSocket ,另一個運行於伺服器端,稱為ServerSocket 。
通訊端之間的串連過程分為三個步驟:伺服器監聽,用戶端請求,串連確認。
伺服器監聽:伺服器端通訊端並不定位具體的用戶端通訊端,而是處於等待串連的狀態,即時監控網路狀態,等待用戶端的串連請求。
用戶端請求:指用戶端的通訊端提出串連請求,要串連的目標是伺服器端的通訊端。為此,用戶端的通訊端必須首先描述它要已連線的服務器的通訊端,指出伺服器端通訊端的地址和連接埠號碼,然後就向伺服器端通訊端提出串連請求。
串連確認:當伺服器端通訊端監聽到或者說接收到用戶端通訊端的串連請求時,就響應用戶端通訊端的請求,建立一個新的線程,把伺服器端通訊端的描述發給用戶端,一旦用戶端確認了此描述,雙方就正式建立串連。而伺服器端通訊端繼續處於監聽狀態,繼續接收其他用戶端通訊端的串連請求。
2、SOCKET串連與TCP串連
建立Socket串連時,可以指定使用的傳輸層協議,Socket可以支援不同的傳輸層協議(TCP或UDP),當使用TCP協議進行串連時,該Socket串連就是一個TCP串連。
3、Socket串連與HTTP串連
由於通常情況下Socket串連就是TCP串連,因此Socket串連一旦建立,通訊雙方即可開始相互發送資料內容,直到雙方串連斷開。但在實際網路應用中,用戶端到伺服器之間的通訊往往需要穿越多個中間節點,例如路由器、網關、防火牆等,大部分防火牆預設會關閉長時間處於非活躍狀態的串連而導致 Socket 串連斷連,因此需要通過輪詢告訴網路,該串連處於活躍狀態。
而HTTP串連使用的是“請求—響應”的方式,不僅在請求時需要先建立串連,而且需要用戶端向伺服器發出請求後,伺服器端才能回複資料。
http 與 TCP 與 socket 定義,區別