初識網絡編程

c/s b/s 架構
client 客戶端/server 服務端
browser 瀏覽器/server 服務端

如今多數都是客戶端與服務端之間進行交互,獲取信息
但像微信小程序,支付寶等一些應用都開始發展小程序功能,經過微信就可直接在內部調用其餘程序,也就是b/s架構
本質:b/s架構也是c/s架構

服務端是24小時都在等待客戶端發送請求,而後進行處理
客戶端是隨時,想發送請求就發送請求,想斷開就斷開


不一樣的國家之間有不一樣的語言,因此咱們制定了一個規定,規定一門語言爲通用語言。
計算機之間的進行交流也有協議

OSI 七層協議

應表會傳網數物
應用層 表示層 會話層 傳輸層 網絡層 數據鏈路層 物理鏈接層

 


目前咱們須要掌握的只有五層:應用層 傳輸層 網絡層 數據鏈路層 物理鏈接層

物理鏈接層:實現計算機之間的物理鏈接,計算之間都是用010101這樣的二級制進行傳輸數據
電信號的工做原理就是高低電頻

 


數據鏈路層:這層須要遵循 以太網協議
以太網協議:
一、規定了二進制的分組方式
二、規定只要接入互聯網的計算機都必須有一塊網卡
網卡出廠時都有惟一的編號,成爲mac編號,由12位十六進制的數表示。
前六位是廠商編號,後六位是流水線編號,保證了mac地址的惟一性
以上這兩項規定就是以太網協議

基於以太網協議通信基本靠吼~
一個計算機在網絡中給另一臺發消息,另一臺接收到消息後恢復一個消息回去。
可是在發送消息是他不會一下發到所要找的機器,而是發送給全部的計算機,只有匹配結果的那臺,纔會回覆
若是有不少臺電腦這樣同時發送消息,就會形成廣播風暴

補充:一臺電腦和另一臺通訊,他們之間須要創建鏈接,若是不少臺電腦之間進行通信,那就須要進行不少的鏈接,
因此有了一個叫 交換機 的,能夠實現一臺電腦只須要有一個網卡鏈接計算機。

網絡層:(IP協議)
規定一臺計算機只能有一個IP地址
ip地址特色:點分十進制
有ipv4和ipv6兩個版本
最小:0.0.0.0 最大:255.255.255.255
IP地址能夠跨局域網傳輸
IP可以惟一標識互聯網中獨一無二的一臺機器


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

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

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



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

基於tcp傳輸數據的兩個特色:
  1、tcp成爲流式協議,顧名思義,這種方式傳數據想水流同樣源源不斷,咱們在接收數據是規定了接收數據的長度,
  接收的長度一旦大於咱們規定接收的,就會接收咱們能接受的最大長度,剩下的會在下次執行時在傳輸過來。

  2、若是兩次傳輸數據的間隔短,長度短,那麼會自動合併成一條消息傳送。

  因此有了新的問題 粘包點擊查看粘包問題的解決方案


三次握手四次揮手

三次握手建鏈接:
TCP協議下服務端和客戶端之間經過三次握手創建雙向鏈接。
1、客戶端向服務端發送鏈接請求
2、服務端回覆贊成請求的同時向客戶端發送鏈接請求
3、客戶端回覆贊成請求

四次揮手斷鏈接
1、客戶端向服務端發送斷開鏈接請求
2、服務端回覆請求,並檢查是否還有爲發送完的數據
3、服務端請求和客戶端斷開鏈接
4、客戶端回覆

星軌:明星出軌
用來表示網站能承受的明星出軌所帶來的巨大流量

 

 

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

 

應用層(HTTP協議,FTP協議):
相關文章
相關標籤/搜索