socket 網路通訊的要素
tcp和udp
socket的通訊流程圖
1.socket
什麼是socket
socket:又稱為套接字,網路上的兩個程式通過乙個雙向的通訊連線實現資料交換,這個連線的一端稱為socket.
socket是對tcp/ip的協議封裝,socket本身並不是協議,而是乙個呼叫的介面,只有通過socket我們才能使用tcp/ip 協議。
socket是和網路緊密相關的,網路上的兩個程式一般就是指web伺服器和我們的客戶端,資料交換的過程就是我們客戶端發乙個請求到http伺服器,伺服器返回資料,這個過程就是資料交換的過程。客戶端和伺服器之間的資料交換是需要乙個雙向的通訊連線,兩者之間是需要乙個通道去實現連線的。
客戶端->socket -------通訊管道------ socket <-服務端
通訊管道就是通訊連線,有了這個管道,我們就可以進行資料傳輸。客戶端到伺服器端必須要有乙個通道才能實現資料的互動。如果有座大山擋著了道路我們就會在珊中開闢乙個隧道,這樣我們才能走到山的另一端。socket就可以理解為這個隧道的兩個埠,乙個入口乙個出口。
乙個網路請求並不是我們所認為的請求-響應的過程,它的底層是開闢了乙個通訊管道的。所以應用程式通暢是通過socket(套接字)向網路發出請求或者應答網路請求。
soeket(sock_stream)和資料報式socket(sock_dgram). 流式是一種面向連線的socket,針對面向連線的tcp服務應用:資料報式socket是一種無連線的socket,對應於無連線的udp服務應用。
2. 網路通訊的要素
傳送乙個http請求到網路上,我們會有乙個url, url會有乙個tcp協議,ip位址和埠號。http預設的埠號是80, 沒有ip位址我們就沒辦法找到伺服器,沒有埠號我們就找不到應用程式。
網路上的請求其實就是通過socket建立乙個通訊管道實現資料互動的。ip位址就是網路上主機裝置的唯一標識。埠號就是程序的標識,乙個應用程式就是乙個程序。
總結如下:
網路上的請求是通過socket來建立連線然後互相通訊
ip位址(網路上主機裝置的唯一標識)
埠號(定位程式)
用於標識程序的邏輯位址,不同程序的標識
有效埠:0~65535, 其中0~1024由系統使用或者保留埠,開發中建議使用1024以上的埠
傳輸協議(用什麼樣的方式進行互動)
通訊的規則
常見協議:tcp, udp
3. tcp和udp
tcp(傳輸控制協議)
建立連線,形成傳輸資料的通道
在連線中進行大資料傳輸(資料不受限制)
通過三次握手完成連線,是可靠協議,安全送達
必須建立連線,效率會稍低
建立連線的傳輸協議就是tcp協議,傳送http網路請求的時候需要通過乙個通訊管道建立連線,http就是乙個tcp連線。
通道建立連線前為什麼要進行三次握手呢? 三次握手是為了保障資料的安全性和可靠性。舉乙個打**的例子來說,用手機撥號這個過程就是第一次握手,對方街道**「喂」,就是第二次握手,我們也會回應「喂」,這就是第三次握手,這三個過程沒有問題的話,就說明連線建立是沒有問題的。如果任何一方在撥號後沒有回應,那就不能保證那個連線是有效的,就能保證資料的乙個安全性和可靠性。
tcp每次傳輸資料的時候都要建立連線,所以導致其效率是較低的。我們在網路中多次請求資料,也就意味著每次都要三次握手。就比如,你給對方打**,保證通話連線後開始說一句話,之後就把**掛掉了;說第二句話的時候又要再打一次**,重複之前的操作。效率會低點但是對於我們的網路請求http請求影響不大,因為我們的下次請求時間是不固定的。由於這個請求時間不固定,如果這條資料互動還一直保持著,那我們打**來說,我們不交流了,但還是保持著通話,那我們的花費就多了。
udp(使用者資料報協議)
將資料及源和目的封裝成資料報中,不需要建立連線
每個資料報的大小限制在64k之內
因為無需連線,因此使不可靠協議
不需要建立連線,速度快
第一點不需要連線怎麼理解呢?例如我們看直播的時候,主播在他電腦上操作會及時傳遞到我們螢幕上,如果我們是通過tcp的形式傳遞的話,黨有很多使用者的話,那是比較卡的,會引起堵塞的。廣播的話是不會用tcp的,需要採用udp,只需要把資料和目的的位址封裝成包進行傳送。中間的過程是怎麼樣的,可能網路不好卡在那裡了,等網路恢復的時候,我們看到的就是最新的,而不會是之前的畫面了。這就是採用udp的情況,所以udp是不安全不可靠的,這就是udp不需要建立連線,不能保證資料安全的送給我們。
第二點為什麼資料報這麼小?因為不能保證資料安全,如果過大的話,傳輸中間出問題的可能性就比較大,一但有問題,資料就都沒有了。還是拿直播舉例,如果一次性發20分鐘的資料,出問題的話那就是20分鐘的直播畫面都沒有了,所以資料報小時為了保證資料如果丟失,資料丟失的不會那麼多。
udp無需建立連線,不用三次握手,那就速度比較快的。
總結:tcp, udp是資料傳輸的方式。 舉例說明就是發快遞的話,可以選擇多個快遞公司去發這個快遞。
Socket小白篇 附加TCP UDP簡介
socket 網路通訊的要素 tcp和udp socket的通訊流程圖 什麼是socket socket 又稱作是套接字,網路上的兩個程式通過乙個雙向的通訊連線實現資料的交換,這個連線的一端稱為socket。socket是對tcp ip的協議的封裝,socket本身並不是協議,而是乙個呼叫的介面,只...
socket程式設計(TCP UDP)
linux下的socket程式設計大體上包括tcp socket udp socket即raw socket這三種,其中tcp和udp方式的socket程式設計用於編寫應用層的socket程式,是我們用得比較多的,而raw socket則用得相對較少,不在本文介紹範圍之列。tcp socket 基於...
用Socket實現TCP,UDP通訊
udp適用於一次只傳送少量資料 對可靠性要求不高的應用環境。public class udpserver catch socketexception e catch unknownhostexception e catch ioexception e public class udpclient c...