網絡基礎

網絡通信概述

網絡通信其實就是位於網絡中不同主機上面的2個進程之間的通信。

 

網絡通信的層次

(1)硬件部分:網卡

(2)操作系統底層:網卡驅動

(3)操作系統API:socket接口

(4)應用層:低級(直接基於socket接口編程)

(5)應用層:高級(基於網絡通信應用框架庫)

(6)應用層:更高級(http、網絡控件等)

 

OSI七層網絡模型

TCP五層模型:

 

表示層:解決不同主機的通信的數據格式問題

會話層:建立和管理應用程序之間的通信(連接)(對下層的封裝) 方便用戶使用,自動收發包 報文

傳輸層:拆包組包 TCP:保證數據包的完整性 和 以及處理傳輸過程中可能發生的危險 UDP:發完就完了 報文----拆分成---->包

網絡層:路由和地址解析。選擇適當的網絡節點進行路由。 包 ---->數據幀

數據鏈路層:控制對物理設備的訪問 規定數據如何在不同物理設備上進行傳出 並提供數據糾錯功能。在不可靠的物理設備上提供可靠傳輸 數據數據幀

物理層:定義通信的物理設備的規格。網線接口類型,光纖接口類型,傳輸速率等

因爲Socket通信時候用到了IP和端口,僅這兩個就表明了它用到了網絡層和傳輸層;而且它無視多臺電腦通信的系統差別,所以它涉及了表示層;一般Socket都是基於一個應用程序的,所以會涉及到會話層和應用層。

參考博客:

https://www.cnblogs.com/carlos-mm/p/6297197.html

https://blog.csdn.net/u011774517/article/details/67631439

 

三次握手四次揮手:

三次握手:客戶端連接服務器

客戶端發送SYN包:通知服務器我要連接你 客戶端進入半連接狀態(syn_sent)

服務器發送SYN+ACK包:ACK包通知服務器我收到請求並分配好了資源 SYN通知客戶端你可以連接了(syn_recv)

客戶端發送ACK包:客戶端服務器同時進入連接狀態

 

爲什麼是三次握手??

考慮一種情況,當客戶端第一次握手時,網絡阻塞,服務器沒收到,客戶端重新發送,服務器客戶端正常通信然後關閉連接,關閉後這調阻塞的包到達了服務器,如果是兩次握手那麼服務器客戶端又重新建立了連接,而這條連接是無用的這就浪費了資源。三次握手建立連接,當客戶端收到無效的服務器連接包,不會回服務器包,連接就不會建立了。

 

四次揮手:可以任意一端發起

客戶端發送FIN包:我沒有數據要發送了 我要關閉連接 客戶端進入半關閉狀態 fin_wait1 等待服務器回覆

服務器回ACK包:ok 我收到你的請求了 客戶端進入fin_wait2 等待服務器也能關閉

-----這裏服務器還可以發送數據到客戶端 --------

服務器發送FIN包:我沒有數據要發送了 我也要關閉了 服務器進入半關閉狀態 last_ack

客戶端發送ACK包:我收到了 TIME_WAIT 服務器關閉

TIME_WAIT:等待2msl 然後關閉連接 客戶端關閉

爲什麼要等待2msl的時間???

一、放置最後一個ack包丟失,如果丟失在這2msl時間內服務器還可以重新發送FIN包

二、確保本次連接所產生的包 可以接收完

爲什麼要四次握手而不是連接時候的三次?

保證另一端的數據可以發送完

參考博客:

https://blog.csdn.net/qzcsu/article/details/72861891

https://www.cnblogs.com/thrillerz/p/6464203.html

 

TCP所謂的連接其實就是維護了一個狀態。

TCP:

工作在傳輸層 tcp對上服務於socket接口 對下調用ip

面向連接 通信前必須連接

tcp自動協商通信速率(每個包大小 每秒包個數) 逐漸調大速率 根據丟包率 測試出最優速率 (滑動窗口)

爲什麼TCP是可靠的通信???

面向連接

每次發包都會收到迴應

丟包重傳機制

每個包包含一個校驗信息 防止數據丟失

 

 

集線器:信號放大 之內對內網使用 採用廣播方式通信

交換機:內部維護一張路由表 通過廣播方式學習 而不是每次廣播

路由器:路由器相當於有2個網卡,一個對內做網關、一個對外做節點。內部對外通信都需要經過路由器。

 

DNS(Domain Name Service 域名服務):域名轉換爲IP

我們訪問一個網站的流程是:先使用IP地址(譬如谷歌的DNS服務器IP地址爲8.8.8.8)訪問DNS服務器(DNS服務器不能是域名,只能是直接的IP地址),查詢我們要訪問的域名的IP地址,然後再使用該IP地址訪問我們真正要訪問的網站。這個過程被瀏覽器封裝屏蔽,其中使用的就是DNS協議。

DHCP(dynamic host configuration protocl,動態主機配置協議):動態分配子網內主機的IP地址

NAT(network address translation,網絡地址轉換協議):內網IP轉換爲外網IP 內網IP只對內有效,內網對外通信時需要NAT將內網IP轉換爲外網可識別的外網IP

 

 

劃分子網:

好處:

1.隔離,子網相互隔離

2.減少廣播包發送量

3.節省ip資源,可以通過改變子網掩碼,將多餘的主機位'交給'網絡位使用,比如一個公司只有100個ip,如果沒有子網這個概念,那分給他一個C類網絡,可容納255個主機,那多餘的ip就浪費了。有子網,就可以只分給他一個可容納他主機數的子網就可以了。其實就是說分配網絡是不是以ABC類網絡爲單位,而是以更小的子網爲單位,宏觀來說就是節省IP。而從微觀上(可連接的主機數)減少了可連接的主機數。

壞處:

1.可連接的主機數減少,各子網中都會有一個網絡地址和廣播地址

2.通信不便,子網之間不能通信

https://blog.csdn.net/lycb_gz/article/details/2137852

http://blog.51cto.com/6930123/2113151

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章