網絡編程(一)

網絡編程(一)

1.軟件開發架構:
開發軟件,必需要開發一套 客戶端 與 服務端。html

客戶端與服務端的做用
服務端: 24小時不間斷提供服務
客戶端: 若是想要找服務,就去尋找服務並享受

軟件開發架構分爲兩種:
    C/S架構:
        Client: 客戶端
        Server: 服務端

        優勢:
            軟件的使用穩定,而且能夠節省網絡資源。

        缺點:
            1.若用戶想在同一個設備上使用多個軟件,必須下載多個客戶端。
            2.軟件的每一次更新,客戶端也必須跟着從新下載更新。

        C/S架構的軟件:
            例如: 電腦上的QQ、Pycharm等...手機端(移動端)的微信、王者榮耀等...

    B/S架構:
        Browser: 瀏覽器(客戶端)
        Server: 服務端

        優勢:
            以瀏覽器充當客戶端,無需用戶下載多個軟件,也無需用戶下載更新軟件版本,
            直接在瀏覽器上訪問須要使用的軟件。

        缺點:
            消耗網絡資源過大,當網絡不穩定時,軟件的使用也會不穩定。


        B/S架構的軟件:
            例如: 在瀏覽器(客戶端)上輸入某個軟件的域名(http://oldboyedu.com/)。

2.後期學習
網絡編程、併發編程、數據庫開發 能夠開發一套C/S架構的軟件(防優酷系統)。
前端html、css、js,web框架(網絡編程、併發編程) 能夠開發一套B/S架構的軟件(bbs系統)。前端

3.網絡編程mysql

- 網絡編程發展歷史
    全部先進的技術都源自於軍事,但願經過遠程獲取數據,因此出現了"網絡編程"。

    早期如何實現遠程通訊:
        - 打電話 ---> 電話線
        - 純平電腦(大屁股電腦) ---> 網線,有線網卡
        - 筆記本電腦 ---> 有線網卡、無線網卡

    要實現遠程通訊必須具有:
        1.物理鏈接介質 ---> 網卡....

        2.互聯網協議
            - 人與人之間溝通的介質: 中文、英語
            - 計算機之間溝通的介質: "互聯網協議"

4.互聯網協議

​ 互聯網協議又稱爲網絡七層協議,OSI七層協議,OSI是一個世界標準組織。web

OSI七層協議:
    - 應用層
    - 表示層
    - 會話層
    - 傳輸層
    - 網絡層
    - 數據鏈路層
    - 物理鏈接層

學習由下到上:
    須要優先了解的協議一共5層:

    - 物理鏈接層
       基於電信號發送二進制的數據0101010111。
       010: 你  you
       101: 我  I

    - 數據鏈路層
        數據鏈路層的 "以太網協議",專門用於處理基於電信號發送二進制的數據。

        以太網協議:
            1.規定好電信號數據的分組方式。
            2.每一臺鏈接網線的電腦都必需要由一塊 "網卡"。
                - 網卡由不一樣廠商生產的
                    - 每塊網卡都會有世界上獨一無二12位的編號 "mac"地址。
                        - 前6位: 廠商號
                        - 後6位: 流水號

        - 交換機:
            可讓多臺電腦鏈接到一塊兒。

        基於以太網協議發送數據:
            特色:
                廣播、單播

            弊端:
                廣播風暴、不能跨局域網通訊。

        - 互聯網:
            讓局域網之間進行通訊。

    - 網絡層
        IP地址: 用於標識惟一的一臺計算機(局域網)的地址。
        IP: 點分十進制
            最小值: 0.0.0.0
            最大值: 255.255.255.255

        IPV4(瞭解):
            一開始用電腦的人很少,因此出現IPV4的協議版本。

        IPV6(瞭解):
            括號IP。

        本機IP: 迴環地址 127.0.0.1 ---> localhost

    - 傳輸層
        TCP/UDP協議,他們都是基於端口工做的。

        - 端口號: 標識電腦上某個一個軟件。

        - 端口號範圍: 0-65535

        注意:
            1.操做系統中,通常0-1024的端口都被默認使用了(0-1024不要動)
            2.儘可能使用8000以後的端口號 8001

        開發中經常使用軟件的默認端口號 (默寫) :
            mysql: 3306
            mongodb: 27017
            Django: 8000
            Tomcat: 8080
            Flask: 5000
            Redis: 6379


        若想服務端與客戶端進行通訊,必需要創建鏈接,產生雙向通道。
            一條是客戶端往服務端發送消息的。
            另外一條是服務端往客戶端發送消息的。

    - 應用層
        http
        ftp

總結:

​ ip:用於惟一標識某一臺計算機的位置。
​ port: 端口用於確認計算機上的一個應用軟件。sql

ip + port: 世界上某一臺電腦上的一個應用軟件。
  • TCP協議的工做原理:

    • TCP是一個流式協議mongodb

    • 三次握手,四次揮手(*******):
      • 三次握手建鏈接:
        創建雙向通道,創建好鏈接。數據庫

        • listen: 監聽
  • established: 確認請求創建鏈接編程

    - 發送數據:
          write
          read

    客戶端往服務端發送數據,數據存放在內存中,須要服務端確認收到,數據纔會在內存中釋放掉。瀏覽器

    不然,會隔一段時間發送一次,讓服務端返回確認收到。

    在一段時間內,若服務端仍是不返回確認收到,則取消發送。並釋放內存中的數據。

    - 四次揮手斷鏈接:
    
          - TIME_WAIT: 時間等待

5.Socket:

1.什麼是Socket?

​ socket是一個模塊,能夠寫一套C/S架構的套接字。

2.爲何要使用Socket?

​ socket套接字會封裝好各層協議的工做。
​ 好處:
​ 能夠節省開發成本。

3.如何使用

​ import socket

注意:

客戶端與服務端必須尊循: 一端send,另外一端recv 不一樣兩端同時send或recv

相關文章
相關標籤/搜索