30 網絡編程 OSI七層協議

一.網絡編程
  一、軟件開發架構
  c/s架構
    c:客戶端(client)
    s:服務端(service)對外一直提供服務,穩定運行
  b/s架構
    b:瀏覽器(browser)
    s:服務器(service)前端

 手機端:好像C/S架構比較火,其實否則,微信小程序,支付寶第三方接口    mysql

  統一接口!  redis

pc端:b/s比較火    sql

  本質:b/s其實也是c/s數據庫

  二、學習網絡編程能作什麼?django

  網絡編程                                      >>>  開發cs架構的軟件
  併發編程,前端,數據庫,框架 >>>  開發bs架構的軟件
 
3. 如何實現遠程溝通交流?
  電話插電話線
  電腦插網線
  筆記本電腦無線網卡
 
   要想實現遠程通訊,第一個須要具有的條件就是:物理鏈接介質 編程

不一樣國家的人交流須要有一個公共的語言做爲媒介 >>> 英文flask

計算機於計算機要想實現遠程通訊,光有物理鏈接介質是不夠,小程序

他們也須要一個共同的標準   >>> 協議微信小程序

二.OSI七層協議(模型)

  互聯網協議按照功能不一樣分爲osi七層或tcp/ip五層或tcp/ip四層

  每層都運行特定的協議,越往上越靠近用戶,越往下越靠近硬件

  

  每層運行常見物理設備

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

 

 二、數據鏈路層("以太網協議 ethernet")
    1)規定了二進制數據的分組方式
    2)規定了只要是接入互聯網的計算機,都必須有一塊網卡!

網卡上面刻有世界惟一的編號:mac地址
  長度爲48位2進制,一般由12位16進制數表示(前六位是廠商編號(IEEE分配),後六位是流水線號) 

基於以太網協議通訊:通訊基本靠吼!!!
  弊端:廣播風暴
 
交換機:若是沒有交換機,你的電腦就變成了馬蜂窩(接口)

    有了交換機以後,全部的電腦只須要有一個網卡鏈接交換機,便可實現多臺電腦之間物理鏈接

 三、網絡層(IP協議
  1)規定了計算機都必須有一個ip地址

  2)IP協議能夠跨局域網傳輸 

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

ip地址特色:點分十進制
  有兩個版本ipv4和ipv6 爲了可以兼容更多的計算機
  最小:0.0.0.0    
  最大:255.255.255.255

 四、傳輸層(端口協議)
  TCP,UDP基於端口工做的協議!
  其實計算機之間通訊實際上是計算機上面的應用程序於應用之間的通訊


  端口(port):

    惟一標識一臺計算機上某一個基於網絡通訊的應用程序

    端口範圍:0~65535(動態分配)

    注意:0~1024一般是歸操做系統分配的端口號

一般狀況下,咱們寫的軟件端口號建議起在8000以後:
  flask框架默認端口    5000
  django框架默認端口   8000
  mysql數據庫默認端口  3306
  redis數據庫默認端口  6379

 注意:一臺計算機上同一時間一個端口號只能被一個應用程序佔用 

 總結:
    IP 地址:惟一標識全世界接入互聯網的獨一無二的機器
    port 端口號:惟一標識一臺計算機上的某一個應用程序
    ip+port :可以惟一標識全世界上獨一無二的一臺計算機上的某一個應用程序
 
 補充:
    arp協議:根據ip地址解析mac地址

TCP協議(流式協議,可靠協議)

synchronize同步(請求)|   acknowledge應答(確認)

三次握手建鏈接

  創建雙向通訊

  傳輸數據可靠的緣由:

    給對方發消息,對方回覆確認收到,傳輸的數據纔會被刪除

    不然,會在必定時間間隔以內反覆發送,直到對方接收或者超時

四次揮手斷鏈接

  在斷開連接的時候,雙方都要確認是否還有數據須要發送

洪水攻擊:

  服務端大量處於接收鏈接請求的狀態

UDP協議(數據報協議)
  無需創建雙向鏈接,而且傳輸數據不可靠,可能會出現丟包的狀況
  通訊速度比較快,可是發送的數據不會在內存中保留!
qq用的就是udp協議

五、應用層(HTTP協議,FTP協議

用戶使用的都是應用程序,均工做於應用層,互聯網是開放的,你們均可以開發本身的應用程序,數據多種多樣,必須規定好數據的組織形式 

應用層功能:規定應用程序的數據格式。

例:TCP協議能夠爲各類各樣的程序傳遞數據,好比Email、WWW、FTP等等。

  那麼,必須有不一樣協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了「應用層」。

 

六、 socket

兩個進程若是須要進行通信最基本的一個前提是可以惟一的標示一個進程,在本地進程通信中咱們可使用PID來惟一標示一個進程;

但PID只在本地惟一,網絡中的兩個進程PID衝突概率很大,這時候咱們須要另闢它徑了,咱們知道IP層的ip地址能夠惟一標示主機,而TCP層協議和端口號能夠惟一標示主機的一個進程,這樣咱們能夠利用ip地址+協議+端口號惟一標示網絡中的一個進程。

可以惟一標示網絡中的進程後,它們就能夠利用socket進行通訊了,socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層複雜的操做抽象爲幾個簡單的接口供應用層調用已實現進程在網絡中通訊。

socket起源於UNIX,在Unix一切皆文件哲學的思想下,socket是一種"打開—讀/寫—關閉"模式的實現,服務器和客戶端各自維護一個"文件",在創建鏈接打開後,能夠向本身文件寫入內容供對方讀取或者讀取對方內容,通信結束時關閉文件。

相關文章
相關標籤/搜索