socket長連線和短鏈結區別

2022-03-10 19:15:46 字數 1923 閱讀 5949

短連線

連線->傳輸資料->關閉連線

http是無狀態的,瀏覽器和伺服器每進行一次http操作,就建立一次連線,但任務結束後就中斷連線。短連線是指socket連線後傳送後接收完資料後馬上斷開連線。

長連線連線->傳輸資料->保持連線->傳輸資料->....->關閉連線

長連線指建立socket連線後不管是否使用都保持連線,但安全性較差。

http的長連線

http也可以建立長連線的,使用connection:keep-alive,http1.1預設進行持久連線。http1.1和http1.0相比較而言,最大的區別就是增加了持久連線支援,但還是無狀態的,或者說是不可以信任的。

那什麼場景下使用長連線或者短連線?

長連線多用於操作頻繁,點對點的通訊(及時通訊),而且連線數不能太多。每個tcp連線都需要三次握手,建立連線,會比較耗時。如果每個操作都要先連線,再操作的話,處理速度會降低很多。長連線的特點是每個操作完後都不斷開連線,直接傳送資料報就可以了,不需要每次都建立連線。

使用場景如下:

1.資料庫的連線用長連線。如果用短連線頻繁的通訊會造成socket錯誤,而且頻繁的socket建立也是對資源的浪費。

2.像web**的http服務一般都是用短連線,因為長連線對於伺服器來說會耗費一定的資源,而像web**這麼頻繁的成千上萬甚至上億客戶端的連線用短連線會更省一點資源,如果用長連線,而且同時又成千上萬的使用者,如果每個使用者都占用乙個連線的話,併發量大,對伺服器的壓力比較大。如果每個使用者無需頻繁操作情況下需用短連線。

在長連線中一般無法判斷讀寫什麼時候結束,必須要加長度報文頭。讀函式先是讀取報文頭的長度,再根據這個長度讀相應長度的報文。

socket是什麼

socket是應用層與tcp/ip協議族通訊中間軟體抽象層,它是一組介面。在設計模式中,socket其實就是乙個facade模式,它把複雜的tcp/ip協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議。

通訊過程:

主機a的應用程式要能和主機b的應用程式通訊,必須通過socket建立連線,而建立socket連線必須需要底層tcp/ip協議來建立tcp連線。建立tcp連線需要底層ip協議來定址網路中的主機。網路層使用的ip協議可以幫助我們根據ip位址來找到目標主機,但是一台主機上可能執行著多個應用程式,如何才能與指定的應用程式通訊就要通過埠號來指定。這樣就可以通過socket例項唯一代表乙個主機上的乙個應用程式的通訊鏈路了。

建立通訊鏈路

當客戶端要與伺服器端通訊,客戶端首先要建立乙個socket例項,作業系統將為這個socket例項分配乙個沒有被使用的本地埠號,並建立乙個包含本地和遠端位址、埠號的套接字資料結構,這個資料結構將一直儲存在系統中直到這個連線關閉。在建立socket例項的建構函式正確返回之前,將要進行tcp的三次握手協議,tcp握手協議完成後,socket例項物件將建立完成,否則將丟擲ioexception錯誤。

tcp和udp的區別

tcp(transport control protocol,傳輸控制協議)是面向連線的,面向流的,提供高可靠服務。收發兩端都要有一一成對的socket,因此,傳送端為了將多個發往接收端的包,更有效的發到對方,使用了優化方法(nagle演算法),將多次間隔較小且資料量小的資料,合併成乙個大的資料塊,然後進行封包。這樣,接收端就難於分辨出來了,必須提供科學的拆包機制。即面向流的通訊是無訊息保護邊界的。

udp(user datagram protocol,使用者資料報協議)是無連線的,面向訊息的,提供高效率服務。不會使用塊的合併優化演算法,由於udp支援的是一對多的模式,所以接收端的skbuff(套接字緩衝區)採用了鏈式結構來記錄每乙個到達的udp包,在每個udp包中就有了訊息頭(****位址,埠等資訊),這樣對於接收端來說,就容易進行區分處理了。即面向訊息的通訊是有訊息保護邊界的。

Socket長連線和短連線的區別

短連線連線 傳輸資料 關閉連線 http是無狀態的,瀏覽器和伺服器每進行一次http操作,就建立一次連線,但任務結束後就中斷連線。短連線是指socket連線後傳送後接收完資料後馬上斷開連線。長連線連線 傳輸資料 保持連線 傳輸資料 關閉連線 長連線指建立socket連線後不管是否使用都保持連線,但安...

Socket長連線和短連線

短連線 連線 傳輸資料 關閉連線 http是無狀態的,瀏覽器和伺服器每進行一次http操作,就建立一次連線,但任務結束後就中斷連線。短連線是指socket連線後傳送後接收完資料後馬上斷開連線。長連線 連線 傳輸資料 保持連線 傳輸資料 關閉連線 長連線指建立socket連線後不管是否使用都保持連線,...

socket短連線 長連線

通常短連線是這樣 連線 傳輸資料 關閉連線 那什麼是長連線?一般長連線相對短連線而言的,長連線在傳輸結束後不關閉連線,而不斷的傳送包保持連線等待處理下乙個資料報。一般長連線用於少數client end to server end的頻繁的通訊,例如 資料庫的連線用長連線,如果用短連線頻繁的通訊會造成s...