1. 程式人生 > 其它 >軟體開發架構、網路程式設計簡介

軟體開發架構、網路程式設計簡介

軟體開發架構

什麼是軟體開發架構

程式設計師在編寫軟體的時候應該遵循的架構設計
類似於我們寫ATM和選課系統所採用的三層架構

軟體開發架構的分類

C/S架構

C:client(客戶端)
S:server(服務端)
'''
客戶端一般是指應用程式EXE或者是手機端的應用程式,程式需要先安裝後才能執行在使用者的電腦或手機上
'''
類比:
	客戶端相當於是需要體驗服務的客人
    服務端相當於是對外提供服務的店面
開啟應用程式的時候其實就是相當於是基於網路去到廠家的店裡面讓服務員給你提供服務


B/S架構

B:browser(瀏覽器),也算是一種客戶端
S:server(伺服器)
"""
B/S架構本質也是C/S架構
	讓瀏覽器充當各個廠家的客戶端,使用者無需對應下載相應的客戶端
"""

兩種架構優缺點

C/S架構:
	優勢:針對客戶端可以高度定製
    劣勢:需要使用者去下載才能使用
B/S架構:
	優勢:無需下載,急速體驗
    	只要有網路、瀏覽器,可以隨時隨地進行查詢、瀏覽等業務處理。
        維護簡單方便,只需要改變網頁,即可實現所有使用者的同步更新。
    劣勢:無法做到高度定製,體驗效果較差
    	個性化特點明顯降低,無法實現具有個性化的功能要求。
        
'''
目前的趨勢更加偏向於B/S架構
微信小程式,只需要下載一個微信就可以通過微信去訪問很多服務端
支付寶諸多應用,只需要下載一個支付寶就可以通過支付寶體驗很多服務
統一提供介面服務>>>:獲取大量使用者及資料,中途還可以提供廣告服務

'''

網路程式設計簡介

什麼是網路程式設計

網路程式設計的研究前提就是基於網際網路, 網路程式設計就是基於網際網路編寫程式碼

學習完網路程式設計的目的、結果

學習完網路程式設計之後就可以開發C/S架構的軟體(掌握原理,使用框架)

網路程式設計發展史

該技術源於美國軍方>>>:很多先進的技術都是由軍事發明後續轉為民用
實際應用:
    軍方想要事項不同計算機之間資料互動
    沒有網路程式設計技術的時候只能拿U盤拷貝並攜帶
    為了跨區域互動資料所以發明了網路程式設計
# 早期遠端通訊
'''
1.座機電話
	彼此打電話需要電話線
2.大屁股電腦
	資料互動需要插網線
3.智慧手機
	資料互動需要無線網絡卡
'''
# 電話線、網線、無線網絡卡等在遠端通訊的前提是必須具備一個物理連結介質
'''網際網路協議'''
不同計算機之間要想要實現無障礙互動
除了需要由物理連結介質之外還需要一臺公有的標準
這個標準就是>>>:網際網路協議(OSI七層協議)

OSI七層協議簡介

網際網路的核心就是由一層協議組成,協議就是標準,如果計算機都學會了網際網路協議,那所有的計算機都就可以按照統一的標準去收發資訊從而完成通訊了。
'''
所有的計算機在生產過程中必須有相同的部分和相同的功能
應、表、會、傳、網、數、物
'''
1.應用層
2.表示層
3.會話層
4.傳輸層
5.網路層
6.資料鏈路層
7.物理連結層
# 上述的七層也可以總結成為五層
1.應用層(包括表示層、會話層)
2.傳輸層
3.網路層
4.資料鏈路層
5.物理連結層

網路知識補充

什麼是網際網路?

internet表示的意思是網際網路,又稱網際網路,根據音譯也被叫做因特網(Internet),指的是網路與網路之間所串聯成的龐大網路
是將計算機彼此連結到一起的介質

網際網路建立的目的?

基於網際網路做資料互動

上網的本質

基於網線去訪問其他計算機上面的資源
'''
其實我們的計算機也可以稱之為是伺服器/服務端(專門對外提供服務)
'''

專業設施名詞

1.交換機
	讓接入交換機的多臺計算機之間彼此互聯
2.區域網
	由交換機組成的網路稱之為區域網(一個區域)
3.廣播與單播
	廣播:在交換機中群發
    單播:定向回覆訊息(記錄mac地址)
4.路由器
	將區域網彼此連結起來並支援資料互動
    網際網路其實可以看成是由多個區域網連結在一起
'''
在區域網中可以直接基於mac地址實現資料互動
 但是可能還會產生廣播風暴:在交換機中同一時間出現太多廣播操作mac地址只能用於區域網互動資料,不能跨區域網傳輸
'''

OSI七層協議詳細

OSI七層的本質其實就是規定了資料要想基於網路傳送出去必須在計算機上經歷了一些固定的流程

物理連結層

主要是定義裝置標準,如網線的額介面型別、管線的介面型別、各種傳輸介質的傳輸速率等。
'''物理連結介質,傳遞電訊號'''

資料鏈路層

基於物理連結層接收到了一串二進位制數,如何切分才能正常解析
1.規定了二進位制資料的分組方式
2.規定了'乙太網協議'
但凡能夠接入網際網路的計算機都必須有一塊網絡卡
每塊網絡卡在出場的時候都會燒製一個全世界獨一無二的編號
該編號是由12位16進位制陣列成
前六位是廠商編號
後六位是流水線號
這個編號獨一無二的編號也有一個稱呼>>>:'mac地址'(類似於身份證號)
ps:基於mac地址就可以實現計算機之間的資料通訊了

網路層

'''也就是路由器,交換那些具有定址功能的裝置所實現的功能。這一層定義的是IP複製,通過IP地址定址,所以產生了協議。'''
IP協議
	規定了每臺接入網際網路的計算機都必須有一個IP地址(取決於網線)
# IP地址目前有兩個版本
# IPV4:點分十進位制
最小:0.0.0.0
最大:255.255.255.255
'隨著社會的進步,計算機的使用越來越普遍   IPV4地址不夠用'
# IPV6十六進位制
'''IPV6可以表示出地球上每一粒沙子'''
ps:IP地址可以唯一標識地球上獨一無二的一臺接入網際網路的計算機
'''
IP地址可以分為公網IP和私網IP
公網IP是可以直接被瀏覽器訪問到的,但是私網IP是不可以的
我們所有人的電腦預設使用的都是私網IP
公網IP需要花錢購買並且需要實名認證並備案
很多非法的網站都是國外註冊備案
'''

傳輸層

PORT協議(埠協議)
'''
一臺計算機上面可以執行很多資料互動軟體,比如微信、qq、釘釘
他們都是從記憶體中獲取資料,因為埠協議的存在才會使每個軟體的資料互動不會錯亂,能夠識別出是哪個軟體的資料
'''
用於標識一臺計算機上正在執行的應用程式(埠號類似於手牌號)
埠號的範圍是:0~65535
	0~1024:系統經常使用的埠號
    1024~8000:常用軟體埠號
    我們以後在寫專案的時候推薦使用8000之後的埠
1.同一時間同一臺計算機上面埠號不能衝突
2.埠號是動態分配的
	eg:開啟微信隨機分配一個沒有被使用的埠號8888
    關閉微信重新開啟會重新隨機分配,可能還是8888也可能是其他
'''
IP地址:用於標識全世界獨一無二的一臺接入網際網路的計算機
PORT號:用於標識一臺計算機上面的某一個應用程式
IP+PORT:能夠標識全世界獨一無二的一臺計算機上面的某一個應用程式

日常使用樓蘭其訪問的各個網址其實就是IP+PORT
eg:
	www.baidu.com			好記
	202.108.22.5:80			難記
	ip:port
	很多常見的服務端都不需要指定埠,只要訪問了ip地址內部去會自動對映

域名解析:
	將好幾的地址解析稱真正的地址
		www.baidu.com		解析 		202.108.22.5:80
'''

應用層

應用層應該是直接面向用戶的程式或服務,包括系統程式和使用者程式,HTTP協議 HTTPS協議 FTP協議 自定義協議
使用什麼協議完全取決於程式設計師自己

TCP與UDP協議

都屬於傳輸層

TCP協議

又叫流式協議、可靠協議
基於TCP協議進行資料互動之前需要做一系列複雜的操作>>>:三次握手,四次揮手
# 三次握手建立連結
三次揮手含義:
	彼此建立單向通道
'''    
	第一次握手:客戶端傳送syn包(syn=x)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;

    第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=x+1),同時自己也傳送一個SYN包(syn=y),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;

    第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=y+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。

    握手過程中傳送的包裡不包含資料,三次握手完畢後,客戶端與伺服器才正式開始傳送資料。理想狀態下,TCP連線一旦建立,在通訊雙方中的任何一方主動關閉連線之前,TCP 連線都將被一直保持下去。

    確認號:其數值等於傳送方的傳送序號+1(即接收方期望接收的下一個序列號)。
'''
四次揮手斷開連線
	eg:彼此切斷通道
# 四次揮手含義:
'''
    與建立連線的“三次握手”類似,斷開一個TCP連線則需要“四次揮手”。

    第一次揮手:主動關閉方傳送一個FIN,用來關閉主動方到被動關閉方的資料傳送,也就是主動關閉方告訴被動關閉方:我已經不會再給你發資料了(當然,在fin包之前傳送出去的資料,如果沒有收到對應的ack確認報文,主動關閉方依然會重發這些資料),但是,此時主動關閉方還可以接受資料。

    第二次揮手:被動關閉方收到FIN包後,傳送一個ACK給對方,確認序號為收到序號+1(與SYN相同,一個FIN佔用一個序號)。
    第三次揮手:被動關閉方傳送一個FIN,用來關閉被動關閉方到主動關閉方的資料傳送,也就是告訴主動關閉方,我的資料也傳送完了,不會再給你發資料了。
    第四次揮手:主動關閉方收到FIN後,傳送一個ACK給被動關閉方,確認序號為收到序號+1,至此,完成四次揮手。

    TCP的四次揮手過程(簡言之):主動關閉方向被動關閉方傳送不會再給你發資料了的資訊;被動關閉方對收到的主動關閉方的報文段進行確認;被動關閉方向主動關閉方傳送我也不會再給你發資料了的資訊;主動關閉方再次對被動關閉方的確認進行確認。
'''
洪水攻擊:服務端接收到了大量的sys請求,處於rcvd狀態
	控制很多太計算機同一時刻去訪問服務端,造成服務端瞬間過載癱瘓

三次握手流程圖:

四次揮手斷開連線流程圖

UDP協議

# 又叫丟包協議、不可靠協議

'''
不需要建立雙下通道,資料的傳輸速度快,但是可能會丟失
就是在正式通訊前不必與對方先建立連線,不管對方狀態就直接傳送。與手機簡訊非常相似:你在發簡訊的時候,只需要輸入對方手機號就OK了。
'''
QQ使用的就是UDP協議,所以有時候會產生資料丟失現象

但是我們可以在UDP協議的基礎之上做很多額外的擴充套件來保證資料的安全

小總結:

"""
TCP協議類似於打電話:你一句我一句 又問有答
UDP協議類似於發簡訊:發了之後不管你看不看 只要發了就行
"""

來個題助助興

# TCP協議之所以比UDP協議可靠 就是因為有雙向通道 對不對?
這個問題描述的不夠精確
1.TCP協議之所以比UDP協議可靠 原因在於TCP協議傳送訊息有反饋機制
2.基於TCP傳送的訊息會在本地先儲存該訊息 如果地方確認收到才會刪除
3.否則在一定的時間內會頻繁的多次傳送知道確認或者超時為止
4.UDP協議傳送資料之後會立刻刪除記憶體資料 不會保留

域名:

什麼是域名

域名:域名是網際網路基礎架構的關鍵部分,它是由一串用點分隔的名字組成的Internet上某一臺計算機的名稱,用於在資料傳輸時標識計算機的電子方位,比如www.baidu.com就是一個就是一個域名。

域名解析:

'''
域名解析就是域名到IP地址的轉換過程。IP地址是網路上標識您站點的數字地址,為了簡單好記,採用域名來代替ip地址標識站點地址。域名解析由專門的域名解析伺服器來完成,整個過程是自動進行的
網際網路中的地址是數字的IP地址,域名解析的作用主要就是為了便於記憶。
'''

DNS伺服器

DNS是進行域名和與之相對應的IP地址轉換的伺服器、DNS中儲存了一張域名和和與之相對應的IP地址的表,以解析訊息的域名。