Part 10.網絡編程--網絡通訊過程

(一)集線器組網web

集線器:(Hub)是指將多條以太網雙絞線或光纖集合鏈接在同一段物理介質下的設備。發生在物理層。編程

集線器工做的時候,若是局域網中的一臺電腦要發送消息,則局域網內的全部電腦均可以接收到這個消息,安全性較差,並且每一次只能有一個發送,只有這個發送完畢其餘電腦才能再發送,這稱爲半雙工模式。安全

詳細通訊過程是這種:假如計算機1要將一條信息發送給計算機8。當計算機1的網卡將信息經過雙絞線送到集線器上時,集線器並不會直接將信息送給計算機8,它會將信息進行「廣播」--將信息同一時候發送給8個port,當8個port上的計算機接收到這條廣播信息時,會對信息進行檢查,假設發現該信息是發給本身的,則接收,不然不予理睬。因爲該信息是計算機1發給計算機8的,所以終於計算機8會接收該信息,而其餘7臺電腦看完信息後,會因爲信息不是本身的而不接收該信息。服務器

由於集線器在一個時鐘週期中僅僅能傳輸一組信息。假設一臺集線器鏈接的機器數目較多,並且多臺機器經常需要同一時候通訊時,將致使集線器的工做效率很是差,如發生信息阻塞、碰撞等。 網絡

(二)交換機組網socket

交換機:(Switcher)交換機也叫交換式集線器。它經過對信息進行又一次生成,並通過內部處理後轉發至指定port,具有本身主動尋址能力和交換做用,由於交換機依據所傳遞信息包的目的地址。將每一信息包獨立地從源port送至目的port。避免了和其它port發生碰撞。廣義的交換機就是一種在通訊系統中完畢信息交換功能的設備。 tcp

詳細通訊過程是:學習

集線器是採用共享工做模式的表明,假設把集線器比做一個郵遞員,那麼這個郵遞員是個不認識字的「傻瓜」--要他去送信,他不知道直接依據信件上的地址將信件送給收信人。僅僅會拿着信分發給所有的人,而後讓接收的人依據地址信息來推斷是否是本身的! 而交換機則是一個「聰明」的郵遞員--交換機處理port會查找內存中的地址對比表以肯定目的MAC(網卡的硬件地址)的NIC(網卡)掛接在哪一個port上,而後迅速將數據包傳送到目的port。spa

若是PC不知目標IP所對應的的MAC,那麼能夠看出,pc會先發送arp廣播獲得對方的MAC而後,在進行數據的傳送,交換機會「學習」新的地址,並把它加入入內部地址表中。blog

可見,交換機在收到某個網卡發過來的「信件」時,會依據上面的地址信息,以及本身掌握的「常住居民戶口簿」高速將信件送到收信人的手中。萬一收信人的地址不在「戶口簿」上,交換機纔會像集線器同樣將信分發給所有的人,而後從中找到收信人。而找到收信人以後。交換機會立馬將這我的的信息登記到「戶口簿」上,這樣之後再爲該客戶服務時。就可以迅速將信件送達了。

當交換機上的兩個port在通訊時,由於它們之間的通道是相對獨立的,所以它們可以實現全雙工通訊

(三)路由器組網

路由器(Router)又稱網關設備(Gateway)是用於鏈接多個邏輯上分開的網絡。所謂邏輯網絡是表明一個單獨的網絡或者一個子網。當數據從一個子網傳輸到另外一個子網時,可經過路由器的路由功能來完成。

  • 不在同一網段的pc,須要設置默認網關才能把數據傳送過去 一般狀況下,都會把路由器設爲默認網關
  • 當路由器收到一個其它網段的數據包時,會根據「路由表」來決定,把此數據包發送到哪一個端口;路由表的設定有靜態和動態方法
  • 每通過一次路由器,那麼TTL值就會減一

咱們經過pc+交換機+路由器三者即組成一個可在不一樣網絡號下進行通訊的網絡:

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

這個組網裏面,左邊爲兩臺pc器,用做client;中間以交換機和路由器相連;右邊是兩臺服務器,一臺爲web服務器,一臺爲DNS服務器。

下面爲其ip配置:

 

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

 

  • DNS服務器:DNS服務器用來解析出IP(相似電話簿)。
  • DFGATEWAY(默認網關):用默認網關的意思是一臺主機若是找不到可用的網關即ip不在同一網段中,就把數據包發給默認指定的網關,由這個網關來處理數據包。
  • 路由表:在路由器中路由表指定數據包的」下一跳」的地址。

 

(五)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所示。

相關文章
相關標籤/搜索