Part 10 網路程式設計 網路通訊過程

2022-08-27 04:18:11 字數 2960 閱讀 2098

(一)集線器組網

集線器:(hub)是指將多條乙太網雙絞線或光纖集合連線在同一段物理介質下的裝置。發生在物理層。

集線器工作的時候,如果區域網中的一台電腦要傳送訊息,則區域網內的所有電腦都可以接收到這個訊息,安全性較差,而且每一次只能有乙個傳送,只有這個傳送完畢其他電腦才能再傳送,這稱為半雙工模式。

詳細通訊過程是這種:假如計算機1要將一條資訊傳送給計算機8。當計算機1的網絡卡將資訊通過雙絞線送到集線器上時,集線器並不會直接將資訊送給計算機8,它會將資訊進行「廣播」--將資訊同一時候傳送給8個port,當8個port上的計算機接收到這條廣播資訊時,會對資訊進行檢查,假設發現該資訊是發給自己的,則接收,否則不予理睬。由於該資訊是計算機1發給計算機8的,因此終於計算機8會接收該資訊,而其他7臺電腦看完資訊後,會由於資訊不是自己的而不接收該資訊。

因為集線器在乙個時鐘週期中僅僅能傳輸一組資訊。假設一台集線器連線的機器數目較多,而且多台機器常常須要同一時候通訊時,將導致集線器的工作效率非常差,如發生資訊阻塞、碰撞等。 

(二)交換機組網

交換機:(switcher)交換機也叫交換式集線器。它通過對資訊進行又一次生成,並經過內部處理後**至指定port,具備自己主動定址能力和交換作用,因為交換機依據所傳遞資訊包的目的位址。將每一資訊包獨立地從源port送至目的port。避免了和其它port發生碰撞。廣義的交換機就是一種在通訊系統中完畢資訊交換功能的裝置。 

詳細通訊過程是:

集線器是採用共享工作模式的代表,假設把集線器比作乙個郵遞員,那麼這個郵遞員是個不認識字的「傻瓜」--要他去送信,他不知道直接依據信件上的位址將信件送給收信人。僅僅會拿著信分發給全部的人,然後讓接收的人依據位址資訊來推斷是不是自己的! 而交換機則是乙個「聰明」的郵遞員--交換機處理port會查詢記憶體中的位址對比表以確定目的mac(網絡卡的硬體位址)的nic(網絡卡)掛接在哪個port上,然後迅速將資料報傳送到目的port。

如果pc不知目標ip所對應的的mac,那麼可以看出,pc會先傳送arp廣播,得到對方的mac然後,在進行資料的傳送,交換機會「學習」新的位址,並把它加入入內部位址表中。

可見,交換機在收到某個網絡卡發過來的「信件」時,會依據上面的位址資訊,以及自己掌握的「常住居民戶口簿」高速將信件送到收信人的手中。萬一收信人的位址不在「戶口簿」上,交換機才會像集線器一樣將信分發給全部的人,然後從中找到收信人。而找到收信人之後。交換機會立馬將這個人的資訊登記到「戶口簿」上,這樣以後再為該客戶服務時。就能夠迅速將信件送達了。

當交換機上的兩個port在通訊時,因為它們之間的通道是相對獨立的,因此它們能夠實現全雙工通訊

(三)路由器組網

路由器(router)又稱閘道器裝置(gateway)是用於連線多個邏輯上分開的網路。所謂邏輯網路是代表乙個單獨的網路或者乙個子網。當資料從乙個子網傳輸到另乙個子網時,可通過路由器的路由功能來完成。

我們通過pc+交換機+路由器三者即組成乙個可在不同網路號下進行通訊的網路:

(四)交換機,路由器,伺服器組網

這個組網裡面,左邊為兩台pc器,用作client;中間以交換機和路由器相連;右邊是兩台伺服器,一台為web伺服器,一台為dns伺服器。

下面為其ip配置:

假設我們訪問www.baidu.com,其中的流程即為下圖:

(五)tcp三次握手

tcp/ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線,如下圖所示。

(1)第一次握手:建立連線時,客戶端a傳送syn包(syn=j)到伺服器b,並進入syn_send狀態,等待伺服器b確認。

(2)第二次握手:伺服器b收到syn包,必須確認客戶a的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器b進入syn_recv狀態。

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

完成三次握手,客戶端與伺服器開始傳送資料。

確認號:其數值等於傳送方的傳送序號 +1(即接收方期望接收的下乙個序列號)。

(六)tcp四次揮手

關閉連線:

由於tcp連線是全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成它的資料傳送任務後就能傳送乙個fin來終止這個方向的連線。收到乙個 fin只意味著這一方向上沒有資料流動,乙個tcp連線在收到乙個fin後仍能傳送資料。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。

tcp的連線的拆除需要傳送四個包,因此稱為四次揮手(four-way handshake)。客戶端或伺服器均可主動發起揮手動作,在socket程式設計中,任何一方執行close()操作即可產生揮手操作。

(1)客戶端a傳送乙個fin,用來關閉客戶a到伺服器b的資料傳送。 

(2)伺服器b收到這個fin,它發回乙個ack,確認序號為收到的序號加1。和syn一樣,乙個fin將占用乙個序號。 

(3)伺服器b關閉與客戶端a的連線,傳送乙個fin給客戶端a。 

(4)客戶端a發回ack報文確認,並將確認序號設定為收到序號加1。 

tcp採用四次揮手關閉連線如圖2所示。

七 網路通訊 面試

1.http是無狀態通訊,http的請求方式有哪些,可以自己定義新的請求方式麼。2.socket通訊,以及長連線,分包,連線異常斷開的處理。3.socket通訊模型的使用,aio和nio。4.socket框架netty的使用,以及nio的實現原理,為什麼是非同步非阻塞。5.同步和非同步,阻塞和非阻塞...

94 網路通訊之網路概述

從程序間通訊說起 最後一種程序間通訊,是用網路域套接字socket,本來就是用作程序間通訊的,兩台電腦的兩個程序間的通訊。一開始是同乙個電腦中的兩個程序間的通訊。後來可以擴充套件道不同電腦主機。注意資訊流 網路通訊是分層次的,最高是api,我們應用只管api的編寫,網絡卡是考慮硬體的問題,我們只關心...

BZOJ3651 網路通訊

description 有乙個由m 條電纜連線的 n 個站點組成的網路。為了防止壟斷,由 c 個公司控制所有的電纜,規定任何公司不能控制連線同乙個站點的兩條以上的電纜 可以控制兩條 同時規定,每個公司不能有多餘的電纜,所謂的多餘,是指屬於同乙個公司的電纜不能形成環。在運作過程中,不同公司之間會進行電...