java複習第9天---9.1---網絡編程---網絡通信
目錄
內容
1、軟件架構
-
C/S架構:client/server架構,即客戶端和服務器架構, 比如QQ,YY等待
-
圖示1-1:
-
B/S架構:Browser/Server,瀏覽器/服務器模式。常用瀏覽器,google,火狐等
-
圖示1-2:
2種架構各有優劣,但是都離不開網絡支持。網絡編程,在一定的協議的支持下,實現網絡中計算機之間的通信。 -
圖示1-3:
2、通信協議
-
網絡通信協議:通過計算機網絡使多臺計算機實現連接,位於同一個網絡中的計算機在進行連接和通信時需要準守一定的規則。在計算機網絡中,這些連接和通信的規則被稱爲網絡通信協議,它對數據的傳輸格式、傳輸速率、傳輸步驟等做了統一的規定,通信雙方同時要遵守,才能實現數據交換。
-
TCP/IP協議簇:傳輸控制協議/因特網互聯協議(Transmission Control Protocol/Internet Protocol),時Internet最基本、應用最廣泛的協議。它定義了計算機如何連入互聯網,以及數據如何在他們之間傳輸的標準。它的內部包含一系列的用於處理數據通信的協議,並採用了4層的分層模型,每一層都依賴於下一層所提供的協議,來完成自己的需求。
-
TCP/IP 4 層架構圖示2-1:
上圖中,TCP/IP協議中的四層分別是應用層、傳輸層、網絡層、數據鏈路層,每層負責不同的通信功能。
- 數據鏈路層:用於定義物理傳輸通道,通常是對某些網絡連接設備的驅動協議,例如針對光線、網線提供的驅動。
- 網絡層:主要用於將傳輸的數據進行分組,將分組數據發送到目標計算機或者網絡。
- 傳輸層:使網絡層進行通信,在進行網絡通信的時,可以採用TCP協議,也可以採用UDP協議。
- 應用層:負責應用程序的協議,例如HTTP協議、FTP協議等
3、通信協議分類
通信的協議還是很複雜的,在java.net包中包含的類和接口,他們提供低層次的通信細節。我們可以直接使用這些類和接口,來專注於網絡程序的開發,而不用考慮通信的細節。
java.net包中提供了兩種常見的網絡協議的支持:
- UDP:
- 用戶數據報協議(User Datagram Protocol)。UDP是無連接的通訊協議,即在數據傳輸時,數據的發送端和接收端不建立邏輯連接。簡單來說,當一臺計算機向另外一臺計算機發送數據時,發送端不會確認接收端是否存在,就會發送數據;同樣接收端在收端數據時,也不會向發送端反饋是否收到數據。
- 由於使用UDP協議消耗資源少,通行效率高,所有通常都會用於音視頻、普通數據的傳輸例如視頻會議,都是用UDP協議,以爲這種情況即使偶爾丟失一輛個數據包,也不會對接收結果產生太大影響。
- 但是在使用UDP協議傳送數據時,由於UDP的面向無連接性,不能保證數據的完整性,因此在傳輸重要數據時不建議使用UDP協議
- 特點:數據被限制在64KB以內,超出這個範圍就不能發送了
- 數據報:網絡傳輸的基本單位
+TCP:
+ 傳輸控制協議,TCP協議是面向連接的協議,即傳輸數據之前,在發送端和接收端建立邏輯連接,然後在輸出數據,它提供了兩臺計算機之間無差錯的數據傳輸。
+ 在TCP連接中必須明確客戶端和服務端,有客戶端向服務端發送連接請求,每次連接的創建都需要經過“三次握手”
+ 三次握手:
1. 客戶端向服務端發送連接建立請求,等待服務的確認
2. 服務端接收到請求,返回應答,允許建立連接
3. 客戶端接收應答,連接建立
+ 圖示3-2:
+ 完成3此握手後,連接建立,客戶端和服務端可以開始進行數據傳輸了,由於面向連接的特性,TCP協議可以保證數據傳輸的完全和完整性。應用廣泛,例如文件上傳下載,瀏覽網頁等待。
4、網絡編程3要素
4.1、網絡通信協議
上面已經提交。
4.2、IP地址
-
IP地址:指互聯網協議地址(Internet Protocol Address),俗稱IP。IP地址用來唯一標誌網絡設備。
-
分類
- IPv4:一個32位的二進制數,通常用4個點分十進制表示,比如192.168.10.110,形式a.b.c.d a~d 每個的範圍位0~255,總共地址42億作用。
- IPv6:互聯網的快速發展,IP地址的需求愈來愈大,但是網絡資源有限。爲了擴大地址空間,擬通過IPv6重寫定義地址空間,採用128位二進制,沒16位一組,分成8組16進制數,表示成ABCD:EF81:2345:6789:ABCD:EF81🔢6739。
-
常用命令
- 查看本機地址
- windows:ipconfig
- linux: ifconfig
- 檢查網絡是否連接:
- ping IP地址
- 查看本機地址
-
特殊IP地址:127.0.0.1,localhost 都表示本機地址。
4.3、端口號
網絡通信,本質上是兩個進程(應用程序)的通信。每臺計算機都有很多的進程,那麼在網絡通信時,如何區分這些進程呢?
如果說IP地址可以唯一標識網絡中的設備,那麼端口號可以唯一標識設備中的進程。
- 端口號:用2個字節表示的整數,它的取值範圍是0~65535.其中,0~1023之間的端口號用於一些知名的網絡服務和應用,普通的應用程序需要使用1024以上的端口號。如果端口號被另外一個服務或應用所佔用,會導致當前線程啓動失敗。
利用協議+IP地址+端口號可以標準網絡中的進程,可以與其他進程通信。
後記 :
本項目爲參考某馬視頻開發,相關視頻及配套資料可自行度娘或者聯繫本人。上面爲自己編寫的開發文檔,持續更新。歡迎交流,本人QQ:806797785
前端項目源代碼地址:https://gitee.com/gaogzhen/vue-leyou
後端JAVA源代碼地址:https://gitee.com/gaogzhen/JAVA