網絡編程一

1.重寫json.JSONEncoder

    import json
   from datetime import datetime
   #重寫default方法實現json.dumps能夠序列化json不支持的對象(用if判斷將不支持的類型轉爲字符串類型)

   class MyJson(json.JSONEncoder):
       def default(self, o):
           if isinstance(o, datetime):
               return o.strftime('%Y-%m-%d %Y')
           else:
               super().default(self, 0)

   print(json.dumps(datetime.now(), cls=MyJson))

2.網絡編程

 '''
軟件開發架構
c/s架構
c:客戶端
s:服務端
b/s架構
b:瀏覽器
s:服務器
手機端:好像C/S架構比較火,其實否則,微信小程序,支付寶第三方接口
統一接口!
pc端:b/s比較火
本質:b/s其實也是c/s

服務端:24小時不間斷提供服務,誰來我就服務誰
客戶端:想體驗服務的時候,就去找服務端體驗服務



學習網絡編程 >>> 開發cs架構的軟件
併發編程,前端,數據庫,框架 >>> 開發bs架構的軟件

起源於:美國軍事!!!
想實現遠程數據傳輸

如何實現遠程溝通交流?
電話插電話線
大屁股電腦插網線
筆記本電腦無線網卡

要想實現遠程通訊,第一個須要具有的條件就是:物理鏈接介質

不一樣國家的人交流須要有一個公共的語言做爲媒介 >>> 英文
計算機於計算機要想實現遠程通訊,光有物理鏈接介質是不夠,
他們也須要一個共同的標準 >>> 協議

OSI七層協議(模型)!
應用層
表示層
會話層
傳輸層
網絡層
數據鏈路層
物理鏈接層

咱們只須要了解五層
應用層
傳輸層
網絡層
數據鏈路層
物理鏈接層

1.物理鏈接層:
實現計算機之間物理鏈接,傳輸的數據都是01010的二進制
電信號工做原理:電只有高低電平

2.數據鏈路層("以太網協議"!):
1.規定了二進制數據的分組方式
2.規定了只要是接入物聯網的計算機,都必須有一塊網卡!
網卡上面刻有世界惟一的編號:
每塊網卡出廠時都被燒製上一個世界惟一的mac地址,
長度爲48位2進制,一般由12位16進制數表示(前六位是廠商編號,後六位是流水線號)
咱們管網卡上刻有的編號叫電腦的>>>mac地址
----->上面的兩個規定其實就是 "以太網協議"!

基於以太網協議通訊:通訊基本靠吼(廣播)!!!以太網協議沒法跨局域網,各局域網鏈接要利用路由器。
弊端:廣播風暴(若是每臺計算機都吼,產生的數據量沒法想象)
  

交換機:若是沒有交換機,你的電腦就變成了馬蜂窩,有了交換機以後,全部的電腦只須要有一個網卡鏈接交換機
便可實現多臺電腦之間物理鏈接


3.網絡層(IP協議)
規定了計算機都必須有一個ip地址
ip地址特色:點分十進制
有兩個版本ipv4和ipv6 爲了可以兼容更多的計算機
最小:0.0.0.0    
最大:255.255.255.255
IP協議能夠跨局域網傳輸

ip地址可以惟一標識互聯網中獨一無二的一臺機器!



4.傳輸層(端口協議)
TCP,UDP基於端口工做的協議!
其實計算機之間通訊實際上是計算機上面的應用程序與應用程序之間的通訊
端口(port):惟一標識一臺計算機上某一個基於網絡通訊的應用程序
端口範圍:0~65535(動態分配)
注意:0~1023一般是歸操做系統分配的端口號
一般狀況下,咱們寫的軟件端口號建議起在8000以後
flask框架默認端口5000
django框架默認端口8000
mysql數據庫默認端口3306
redis數據庫默認端口6379
注意:一臺計算機上同一時間一個端口號只能被一個應用程序佔用

小總結:
IP地址:惟一標識全世界接入互聯網的獨一無二的機器
port端口號:惟一標識一臺計算機上的某一個應用程序
ip+port :可以惟一標識全世界上獨一無二的一臺計算機上的某一個應用程序

補充:
arp協議:根據ip地址解析mac地址


應用層(HTTP協議,FTP協議):



TCP協議(流式協議,可靠協議)
     #TCP協議可靠的緣由是:給對方發消息,對方必須回覆確認收到,傳輸的數據纔會被刪除(刪除前均緩存在內存中),
      不然會在必定時間內反覆發送,直到對方接收或者超時
三次握手四次揮手:客戶端與服務端是雙向鏈接的(Client:客戶端, Server:服務端)
三次握手建鏈接:第一次握手是客戶端請求鏈接服務端,
               第二次握手是服務端贊成客戶端鏈接並請求鏈接客戶端(贊成客戶端鏈接請求、請求鏈接客戶端,兩步並作一次握手),
               第三次握手是客戶端贊成服務端鏈接(固然握手時能夠不一樣意鏈接請求,此時就會結束握手)
       

四次揮手斷鏈接:第一次揮手是客戶端請求斷開鏈接,
               第二次揮手是服務端贊成客戶端的斷開請求,
               第三次揮手是服務端請求斷開鏈接, (第二次與第三次揮手沒法同握手同樣並作一步,由於斷開鏈接時雙方都須要確認是否還有數據須要發送)
               第四次揮手是客戶端贊成服務端的斷開請求
       
       #SYN洪水攻擊:利用服務端的SYN_RCVD,讓大量客戶端去請求鏈接服務端,使服務端大量處於鏈接請求的狀態,直到服務端崩潰。
     
   星軌:明星出軌,一個高併發級別的量詞,好比說微博由於明星出軌就會有大量客戶端訪問,這時候就很考驗一個服務端的高併發能力。
'''
相關文章
相關標籤/搜索