30.企業級開發進階2:網路程式設計
網路程式設計部分開始,要求對內容的巨集觀理解的東西更加多了,簡單梳理總結一下,希望大家多提意見一起完善。
本節內容 * 網路基礎知識 什麼是網路 什麼是網路程式設計 IP地址是什麼鬼 埠號又是什麼鬼 據說還有個網路傳輸協議 * TCP程式設計 * UDP程式設計
1. 網路傳輸協議
1.1. 什麼是網路
網路是將我們執行的多臺個人PC,通過有線網或者無線網連線起來,方便多臺電腦之間的資料傳輸而出現的,如我們個人PC如果單獨使用的時候,只能當成單臺電腦執行單機軟體,寫寫文件、看看下載好的電影、玩玩單機遊戲等等,如果此時想和其他使用電腦的人說句話~你只能通過張嘴喊話的方式了;如果電腦聯網的話,就可以通過飛秋、QQ等各種手段實現,常見的網路都有哪些呢
網路根據使用的範圍和區域的不同,劃分了不同的幾個檔次 單機:單機其實也是一個網路環境,只能訪問當前PC的資料,單機的網路IP地址:127.0.0.1 區域網:兩臺或者兩臺以上的電腦,通過交換機或者路由器進行互相連線,在一定的範圍內區域網的PC可以實現互相通訊的目的;一般情況區域網的PC數量在2臺到幾千臺PC之間 都會網路:是一種大型的區域網,可以訪問的資料資訊更多,通常情況下,都會網路這個術語是從城市網路抽象出來的,也就是將一個城市中的PC進行網路連線實現資料共享的手段 廣域網:通常是指代的跨地域的網路通訊,一般情況下以國家或者地域為單位,讓資料通訊更加的廣闊
網路:其實就是通過運營商提供的一種資料通訊手段,將不同的PC進行連線,實現不同的PC之間資料通訊為目的的一種手段,根據網路操作的範圍劃分單機、區域網、都會網路、廣域網等不同的網路訪問層次結構。
1.2. 什麼是網路程式設計
如果有了網路之後,網路中的所有資料都直接可以讓別人訪問的話,就會出現非常嚴重的資料安全問題; 次數就需要一種手段,將資料通過網路進行共享的同時增加限制訪問許可權;
網路程式設計就是通過程式設計的手段,讓不同的PC之間可以使用恰當的方式進行資料的共享,同時新增各種限制許可權讓網路資料更加安全的一種技術操作。
在網路程式設計中,會出現一些專業的術語名詞,需要簡單瞭解一下 * 伺服器:專門用於資料共享的PC,將資料共享給所屬網路中其他的PC,其他的PC可以通過網路和伺服器提供的訪問手段來訪問伺服器上的資料,如:淘寶就有自己的伺服器,我們可以通過瀏覽器訪問http://www.taobao.com來訪問淘寶伺服器上的資料 * 客戶端:在網路中獲取資料的PC,當我們訪問淘寶伺服器的時候,我們自己的PC就是客戶端
1.3. 網路資料傳輸:ip地址
如果一旦多個PC組成一個網路,就會出現這樣一個問題,通過什麼樣的方式來確定某一個PC就是它自己呢,就如同讓你怎麼證明你就是你自己一樣,生活中,我們會通過身份證號碼來證明自己就是唯一的自己;網路中一般通過IP地址來確定網路中的某一個PC
IP地址也是一種網路協議,英文名稱是Internet Protobcal Address,它提供了一種統一的地址格式,為網路中的PC分配一個唯一的整數序列,通常IP地址時一個二進位制的數字序列,為了方便我們理解,轉換為10進位制整數,如:01100100.00000100.00000101.00000110就是一個IP地址,轉換成十進位制之後就是:100.4.5.6;如果大家瞭解過二進位制的表示方式的話,就能看出來IP地址中的每一組資料的範圍都是0~255之間
IP地址的編碼方案:為了區分不同的機構使用的PC,約定俗稱的將IP地址劃分成了不同的型別,一般有A/B/C/D/E五類
我們已經看出來了,IP地址可以表示的PC時期是非常有限的,總共能表示的電腦個數大概43億個左右,如果一旦PC數量超出這個範圍就表示不了了;所以在近些年,將原來的這樣的IP地址表示方式,定義為IPv4版本;並且推出了IPv6的表示方式,IPv6可以標識更加多的PC;對於這部分的瞭解,大家有時間的時候可以自己擴充一下。
1.4. 網路資料傳輸:埠號
當我們的電腦已經處於網路中時,就可以進行資料通訊了,但是此時又遇到這樣一個問題;我們在自己的PC上可能同時開啟了多個程式:QQ,微信、淘寶,如果我們向淘寶伺服器發起了資料請求,淘寶伺服器返回了我們需要的資料,那這些資料根據IP地址找到了我們的個人PC,但是資料應該交個那個應用程式呢?
此時,就如同我們從淘寶上買了一件商品,商品通過快遞(網路)寄送到我們的地址了,但是怎麼樣找到對應的人呢?答案很簡單:通過我們收貨人姓名來確定收快遞的是誰。在網路中我們訪問的資料,怎麼區分是哪個程式呢,通過埠(Port)來進行確定,每一個埠都會對應唯一的一個應用程式,如瀏覽器訪問的資料,是通過80埠進行資料傳輸的,FTP伺服器是通過21埠進行資料傳輸的等等
常見的埠:
|埠號| 描述 |
| ------------- |:-------------:|
| 21| FTP伺服器檔案傳輸介面 |
| 22| SSH連線埠 | | 23| Telnet連線埠 |
| 25| SMTP郵件服務埠 |
| 80|瀏覽器訪問網頁的埠 |
| 109| pop3郵件服務埠 |
| 443| 瀏覽器安全訪問網頁埠 |
| 1521| oracle資料庫使用埠 |
| 3306| mysql資料庫使用埠 |
1.5. 網路資料傳輸:網路傳輸協議
我們有了網路,有了IP地址,有了埠號Port,已經可以實現網路中不同的PC上的程式進行資料通訊了,但是資料通訊沒有問題的前提下又出現了新的問題:不同的PC上的資料可能互相不認識!
如果現實生活中,每個人都是一個單獨的PC,我們有了手機就算是有了網路,埠號就像每個人的手機號碼一樣都是唯一的,此時可以實現不同的人之間通過PC來進行通話了,也就是進行資料通訊了; 如果~你撥出一個號碼~對方接起了你的電話,你倆開始通訊,你說的是本地方言,對方說的是阿拉伯語,你們說的話也就是資料,對方肯定是接收到了,但是~你翻譯不了阿拉伯語,對方也翻譯不了普通話,此時的資料通訊儘管有了,但是資料由於解析不了,就相當於無效的通訊! Bingo!如果我們互相約定了,雙方都使用我們大中華的標準普通話進行交流,你說的對方聽懂了,對方說的你也聽懂了,這樣才是有效的通訊——這裡雙方約定使用普通話交流,就是約定了一個通話協議 如果我們在網路中,約定了傳輸資料使用什麼樣的方式組織資料,就是網路協議
網路協議,就是網路資料傳輸協議,簡稱為傳輸協議,是為網路中不同PC和程式之間的有效資料通訊而制定的一種資料組織和傳輸方式
常見的網路傳輸協議要歸結到國際標準化組織(ISO)制定的開發系統互聯模型(OSI)
OSI模型
|名稱 | 層次 | 功能|
|---------|:----------|:--------|
|物理層 | 1 | 實現計算機系統與網路間的物理連線|
|資料鏈路層| 2 | 進行資料打包與解包,形成資訊幀|
|網路層 | 3 | 提供資料通過的路由|
|傳輸層 | 4 | 提供傳輸順序資訊與響應|
|會話層 | 5 | 建立和中止連線|
|表示層 | 6 | 資料轉換、確認資料格式|
|應用層| 7 | 提供使用者程式介面|
常見協議
我們可以看到,前面瞭解的IP協議是底層的一種傳輸協議;基於IP協議在主機層次有TCP點對點的傳輸協議和UDP的廣播協議等等,再向上應用層有FTP檔案傳輸服務HTTP超文字資料傳輸協議等等。關於OSI模型和對應的資料傳輸協議,大家可以自行了解擴充套件一下。
在後續的章節中,我們會針對TCP協議、UDP協議的網路程式設計、以及SMTP郵件收發等給大家做詳細的介紹
未完待續,請看下一節內容····TCP程式設計
相關文章
- 30.1. 企業級開發進階2.1:TCP程式設計TCP程式設計
- 33.企業級開發進階6:資料庫操作資料庫
- 32.企業級開發進階4:正規表示式
- 30.2. 企業級開發進階2.2:TCP實戰TCP
- 30.4. 企業級開發進階2.4:服務端快捷開發服務端
- 探索企業安全建設進階路徑
- 31.2企業級開發進階3.2:接收電子郵件
- 併發程式設計進階程式設計
- Linux企業級開發技術(2)——epoll企業級開發之epoll介面Linux
- 從需求出發:專業程式設計師進階之路程式設計師
- Go進階之網路程式設計Go程式設計
- 【Go進階—併發程式設計】MutexGo程式設計Mutex
- 企業級大資料架構設計【2】大資料架構
- 企業級應用建設之道:高程式碼+低程式碼開發
- 29.企業級開發進階1:檔案輸入輸出流[IO操作]
- 【Go進階—併發程式設計】ContextGo程式設計Context
- 【Go進階—併發程式設計】WaitGroupGo程式設計AI
- Rust 程式設計影片教程(進階)——027_2 高階特性 2Rust程式設計
- shell程式設計進階程式設計
- 雲企業網CEN-TR打造企業級私有網路
- Rust 程式設計視訊教程(進階)——027_2 高階特性 2Rust程式設計
- 企業級開發框架----------Django框架Django
- Java-進階篇【網路程式設計】---09Java程式設計
- Linux企業級開發技術(1)——epoll企業級開發之簡介Linux
- Linux企業級開發技術(3)——epoll企業級開發之epoll模型Linux模型
- Linux企業級開發技術(4)——epoll企業級開發之epoll例程Linux
- 低程式碼開發平臺,快速開發企業級系統
- Linux企業級專案實踐之網路爬蟲(6)——將程式設計成為守護程式Linux爬蟲程式設計
- 企業級軟體開發新模式:低程式碼模式
- 高階程式設計語言第2次作業程式設計
- 高階語言程式設計第2次作業程式設計
- 大型企業網路系統整合方案如何設計?
- [.net 物件導向程式設計進階] (1) 開篇物件程式設計
- Rust 程式設計影片教程(進階)——026_2 高階 trait2Rust程式設計AI
- 如何搭建和設計企業組網的網路架構?架構
- 程式設計師職業發展之路思考:工程師的等級階梯程式設計師工程師
- 程式設計師的進階之路程式設計師
- 安全可控的企業級低程式碼開發平臺