網路程式設計(二) 網路協議

2021-07-30 10:46:47 字數 4336 閱讀 6129

物理層: 電力線通訊(plc) ·sonet/sdh· g.709 ·光導纖維· 同軸電纜 · 雙絞線等

資料鏈路層

:wi-fi(ieee 802.11) · wimax(ieee 802.16) ·atm · dtm ·令牌環·乙太網·fddi ·幀中繼· gprs · evdo ·hspa · hdlc ·ppp· l2tp ·pptp · isdn·stp 等

網路層協議:ip (ipv4 · ipv6) · icmp· icmpv6·igmp ·is-is · ipsec · arp · rarp . bootp等

傳輸層協議:tcp · udp · tls ·dccp· sctp · rsvp · ospf 等

應用層協議:dhcp ·dns· ftp · gopher · http· imap4 · irc · nntp · xmpp ·pop3 · sip · smtp ·snmp · ssh ·telnet · rpc · rtcp · rtp ·rtsp· sdp · soap · gtp · stun · ntp· ssdp · bgp · rip. dns 等

圖1-1

協議組,可分為三個層次:網路層、傳輸層和應用層。

tcp:傳輸控制協議,面向連線的的協議,穩定可靠。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立乙個tcp連線,之後才能傳輸資料。

udp:廣播式資料傳輸,udp不提供可靠性,它只是把應用程式傳給ip層的資料報傳送出去,但是並不能保證它們能到達目的地。由於udp在傳輸資料報前不用在客戶和伺服器之間建立乙個連線,且沒有超時重發等機制,故而傳輸速度很快。

tcp/udp區別

1.tcp是面向連線的、可靠的、有序的、速度慢的協議;udp是無連線的、不可靠的、無序的、速度快的協議。

2.tcp開銷比udp大,tcp頭部需要20位元組,udp頭部只要8個位元組。

3.tcp無界有擁塞控制,tcp有界無擁塞控制。(擁塞控制主要是四種方法:慢開始、擁塞避免、快重傳、快恢復==這裡面有乙個擁塞視窗的概念)

例如:

qq登陸採用tcp協議和http協議,你和好友之間傳送訊息,主要採用udp協議,內網傳檔案採用了p2p(點到點)技術。總來的說:

參見鏈結

三次握手

在tcp/ip協議中,tcp協議通過三次握手建立乙個可靠的連線:

第一次握手:客戶端嘗試連線伺服器,向伺服器傳送syn包(同步序列編號synchronize sequence numbers),syn=j,客戶端進入syn_send狀態等待伺服器確認、

第二次握手:伺服器接收客戶端syn包並確認(ack=j+1),同時向客戶端傳送乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態

第三次握手:第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手

圖1-2

基於udp。udt的主要目的是支援高速廣域網上的海量資料傳輸,而網際網路上的標準資料傳輸協議tcp在高頻寬長距離網路上效能很差。udt建於udp之上,並引入新的擁塞控制和資料可靠性控制機制。udt是面向連線的雙向的應用層協議。它同時支援可靠的資料流傳輸和部分可靠的資料報傳輸。一般應用在點到點技術(p2p),防火牆穿透,多**資料傳輸等這些方面。

udt是將應用層資料打包成固定的大小,除非資料不夠這麼大。和tcp相似的是,這個固定的包大小叫做mss(最大包大小)。由於期望udt用來傳輸大塊資料流,我們假定只有很小的一部分不規則的大小的包在udt session中。mss能夠通過應用程式來安裝,mtu是其最優值(包括任何包頭)。

udt有兩種包:資料報和控制包。他們通過包頭的第一位來區分(標誌位)。假如是0,表示是資料報,1表示是控制包。

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

優點:1.傳輸資料為位元組級,傳輸資料可自定義,資料量小。相應的移動端開發,手機費用低;2.傳輸資料時間短,效能高;3.適合c/s之間資訊實時互動;4.可以加密,資料安全性高

缺點: 1.需要對傳輸的資料進行解析,轉化為應用級的資料;2.對開發人員的開發水平要求高;3.相對於http協議傳輸,增加了開發量

socket通訊流程

socket是"開啟—讀/寫—關閉"模式的實現,以使用tcp協議通訊的socket為例,其互動流程大概是這樣子的

圖1-3

伺服器根據位址型別(ipv4,ipv6)、socket型別、協議建立socket

伺服器為socket繫結ip位址和埠號

伺服器socket監聽埠號請求,隨時準備接收客戶端發來的連線,這時候伺服器的socket並沒有被開啟

客戶端建立socket

客戶端開啟socket,根據伺服器ip位址和埠號試圖連線伺服器socket

伺服器socket接收到客戶端socket請求,被動開啟,開始接收客戶端請求,直到客戶端返回連線資訊。這時候socket進入阻塞狀態,所謂阻塞即accept()方法一直到客戶端返回連線資訊後才返回,開始接收下乙個客戶端諒解請求

客戶端連線成功,向伺服器傳送連線狀態資訊

伺服器accept方法返回,連線成功

客戶端向socket寫入資訊

伺服器讀取資訊

客戶端關閉

伺服器端關閉

伺服器socket與客戶端socket建立連線的部分其實就是大名鼎鼎的三次握手

https和http的區別

超文字傳輸協議http協議被用於在web瀏覽器和**伺服器之間傳遞資訊。http協議以明文方式傳送內容,不提

供任何方式的資料加密,如果攻擊者擷取了web瀏覽器和**伺服器之間的傳輸報文,就可以直接讀懂其中的資訊,因此http協議不適合傳輸一些敏感資訊,

比如信用卡號、密碼等。

為了解決http協議的這一缺陷,需要使用另一種協議:安全套接字層超文字傳輸協議https。為了資料傳輸的安全,https在http的基礎上加入了ssl協議,ssl依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通訊加密。

https和http的區別主要為以下四點:

一、https協議需要到ca申請證書,一般免費證書很少,需要交費。

二、http是超文字傳輸協議,資訊是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。

三、http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。

四、http的連線很簡單,是無狀態的;https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。

http(超文字傳輸協議)是利用tcp在兩台電腦(通常是web伺服器和客戶端)之間傳輸資訊的協議。客戶端使用web瀏覽器發起http請求給web伺服器,web伺服器傳送被請求的資訊給客戶端。

http協議,可以認為主要是用來訪問網頁的,是比tcp更上層的協議,http裡面規定了我們訪問網頁的時候如何進行快取,以及請求什麼格式。等等,主要是為了讓人們訪問網頁的時候更快,更安全,而規定了很多引數。你可以認為tcp就是搬運工,保證搬動的東西不被損壞。http協議是做業務的,用來決定要不要搬運,以及如何搬運,從哪去搬運。

socket是乙個針對tcp和udp程式設計的介面,你可以借助它建立tcp連線等等。而tcp和udp協議屬於傳輸層 。而http是個應用層的協議,它實際上也建立在tcp協議之上(http是轎車,提供了封裝或者顯示資料的具體形式;socket是發動機,提供了網路通訊的能力)。

socket是對tcp/ip協議的封裝,socket本身並不是協議,而是乙個呼叫介面(api),通過socket,我們才能使用tcp/ip協議。socket的出現只是使得程式設計師更方便地使用tcp/ip協議棧而已,是對tcp/ip協議的抽象,從而形成了我們知道的一些最基本的函式介面。

網路程式設計學習1 網路協議分類

資料幀 frame 是一種資訊單位,它的起始點和目的點都是資料鏈路層。資料報 packet 也是一種資訊單位,它的起始和目的地是網路層。包 packet 是tcp ip協議bai通訊傳輸中的資料單位,一般也稱 資料報 有人說,區域網中傳輸的不是 幀 frame 嗎?沒錯,但是tcp ip協議是工作在...

6 3網路協議

1.telnet 測試埠,呼叫tcp,格式telnet 192.168.1.50 8080,telnet通了,網路就通了,但資料好壞不能看出來。2.ping 要看資料質量,用ping來檢查,訪問時,外網慢,內網快。3.tracert 的請求超時,不代表網路不通,代表沒有返回值,可能存在防火牆。4.d...

Android基礎 二 網路程式設計

2.訪問網路的操作不能放在主線程中,開乙個子執行緒通過傳送訊息到ui執行緒,在ui執行緒修改介面 handler handler new handler public void download view v else catch exception e start 3.快取到本地,直接從本地讀取 ...