1. 程式人生 > 其它 >軟體開發架構,OSI七層協議(五層),TCP協議,UDP協議

軟體開發架構,OSI七層協議(五層),TCP協議,UDP協議

"""
物件:資料與功能的結合體
類:多個物件公共的資料與功能的結合體
父類:多個類公共的資料與功能的結合體
物件必須要由類產生!!!
"""

import json
from datetime import datetime,date

json.JSONEncoder

# 定義字典
d={'t1':str(datetime.today()),'t2':str(date.today())}
print(d) # {'t1': '2022-01-11 16:41:03.768618', 't2': '2022-01-11'}
# 序列化
res=json.dumps(d)
print(res)  #
{"t1": "2022-01-11 16:41:03.768618", "t2": "2022-01-11"} """ 時間型別預設不支援json序列化 方式1:人工智慧轉換 str() 方式2:面向物件之繼承 物件查詢屬性和方法的時候一定要遵循一個順序 先從物件自身查詢 再去產生該物件的類中查詢 最後去類的父類中查詢 """ import json from datetime import datetime,date class MyJsonClass(json.JSONEncoder): def default(self, o): if isinstance(o,datetime):
return o.strftime('%Y-%m-%d %X') elif isinstance(o,date): return o.strftime('%Y-%m-%d') return super().default(o) # 呼叫父類的方法 # 定義字典 d={'t1':datetime.today(),'t2':date.today()} # 序列化 res=json.dumps(d,cls=MyJsonClass) print(res) # {"t1": "2022-01-11 18:57:45", "t2": "2022-01-11"}

一、軟體開發架構

  c/s架構(客戶端,服務端)

    將客戶端看成是去店裡消費的客人,將服務端看成是提供服務的店面

    eg:收集各種app其實就是各大軟體的客戶端

  服務端需要具備的三大特徵

    1.24小時不間斷提供服務(24小時監聽)

    2.固定的地址(IP地址)

    3.能夠服務多個使用者(高併發)

  b/s架構(瀏覽器,伺服器)

    瀏覽器統一充當各個服務端的客戶端,本質:bs架構本質上也是cs架構

  # 網路程式設計其實研究的就是程式之間的資料通訊

  # 要想實現遠端資料互動的前提是必須要有物理連線介質

  # 除了有物理連線介質之外還應該有一些能夠保證資料彼此無障礙互動的東西(標準) OSI七層協議

二、OSI七層協議

  # 所有的計算機都必須要有這七層

  # 開發層面可以歸納為五層

    應用層

    傳輸層

    網路層

    資料鏈路層

    物理連線層

"""
從小往上研究

1.物理連線層
    提供一個物理連線介面(網線口 無線網絡卡)
2.資料鏈路層
    1.規定了電訊號的分組方式
    2.乙太網協議
        規定了計算機必須有一塊網絡卡 並且網絡卡上面要有一個固定的一串數字
        12位16進位制數 
            前六位:產商編號
            後六位:流水線號
        上述的數字也稱之為計算機的mac地址(類似於身份證號)
"""

·常見硬體

交換機:能夠使接入該機器的所有計算機之間彼此互聯
區域網:有交換機組成的網路
網際網路:可以簡單的理解為是多個區域網之間彼此互聯
"""
基於mac地址的資料傳輸
    1.廣播風暴
    2.mac地址不能跨區域網傳輸
"""
路由器:能夠連線多個區域網並實現區域網之間的資料傳輸

2.1、網路層

IP協議:規定了接入網際網路的計算機都必須有一個IP地址用於唯一標識
    IPV4版本
        最小    0.0.0.0
        最大  255.255.255.255
    IPV6版本
        能夠表示出地球上每一粒沙子
 
# IP地址能夠唯一標識接入網際網路的一臺獨一無二的計算機
公網IP與私網IP
    公網IP需要花錢購買並申請
    私網IP自帶的但是無法直接基於網際網路訪問
"""
arp協議
    將IP地址轉換成mac地址(基於網路請求)
"""

2.2、傳輸層

埠協議
    範圍:0~65535
    特性:動態分配
        eg:第一次執行微信 系統隨機取一個埠號2022
           然後關閉微信重新啟動 系統隨機取一個埠號
    埠號基本使用
        0~1024系統預設需要使用的埠號
        1024~8000常見軟體埠號
        以後我們開發的軟體最後使用8000之後的埠號
    
# 埠號(port):能夠唯一標識一臺計算機上面正在執行的一款應用程式
"""
埠號在同一臺計算機同一時刻不能重複
"""


總結
    ip+port   127.0.0.1:8080
"""
能夠唯一標識世界上某一臺接入網際網路的計算機上面的某一個正在執行的應用程式
"""

2.3、應用層

  都是人為自定義的協議標準,可遵循可不遵循

  HTTP協議、FTP協議 ...

三、TCP協議

流式協議 可靠協議

三次握手    建立連結
    重要狀態
        listen監聽態:等待對方發請求
        syn_rcvd態:忙於恢復確認建立請求
            # 洪水攻擊:服務端在同一時間接收到了大量的要求建立連結的請求

四次揮手    斷開連結
    不能合併成三次

四、UDP協議

不可靠協議

資料傳送沒有通道的概念 傳送出去了就不管了

"""
TCP協議相當於打電話 你一句我一句 你儂我儂
UDP協議相當於發簡訊 發了就完事 管你看不看
"""
早期的QQ使用的就是UDP