Flask搭建服務 一 基礎概念 力求通俗易懂

2021-10-25 10:44:36 字數 4723 閱讀 1698

1.埠

可以認為是裝置與外界通訊交流的出口。打個比方:好比銀行辦業務的視窗,1號2號3號。窗內的銀行職員是誰不一定,可能今天是小紅,明天是小明;窗外辦理業務的人今天是張三,明天可能是李四。

可以把埠視作一般程式設計概念中的介面(inte***ce), 而想 nginx, apache, tomcat 等等可以認為是這個介面的不同實現(implementation).

2.ip

3.路由

就是url到函式的對映。可以理解為乙個dict,知道key,可以拿到value,這個value就是提供的服務。

服務:這個名詞,簡單說,乙個函式,經過裡面亂七八糟的邏輯,然後返回乙個值。整個過程就是提供了服務。

4.http 請求

乙個鏈結,包含了ip、埠、服務標誌(路由)。

通過這個鏈結,這個使用該鏈結提供的功能。

專業術語:

在網路技術中,埠(port)大致有兩種意思:

物理意義上的埠,比如,adsl modem、集線器、交換機、路由器用於連線其他網路裝置的介面,如rj-45埠、sc埠等等。

邏輯意義上的埠,一般是指tcp/ip協議中的埠,埠號的範圍從0到65535,比如用於瀏覽網頁服務的80埠,用於ftp服務的21埠等等。

知名埠即眾所周知的埠號,範圍從0到1023,這些埠號一般固定分配給一些服務。比如21埠分配給ftp服務,25埠分配給smtp(簡單郵件傳輸協議)服務,80埠分配給http服務,135埠分配給rpc(遠端過程呼叫)服務等等。

動態埠的範圍從1024到65535,這些埠號一般不固定分配給某個服務,也就是說許多服務都可以使用這些埠。只要執行的程式向系統提出訪問網路的申請,那麼系統就可以從這些埠號中分配乙個供該程式使用。比如1024埠就是分配給第乙個向系統發出申請的程式。在關閉程式程序後,就會釋放所占用的埠號。

不過,動態埠也常常被病毒木馬程式所利用,如冰河預設連線埠是7626、way 2.4是8011、netspy 3.0是7306、yai病毒是1024等等。

按協議型別劃分,可以分為tcp、udp、ip和icmp(internet控制訊息協議)等埠。下面主要介紹tcp和udp埠:

- tcp埠

tcp埠,即傳輸控制協議埠,需要在客戶端和伺服器之間建立連線,這樣可以提供可靠的資料傳輸。常見的包括ftp服務的21埠,telnet服務的23埠,smtp服務的25埠,以及http服務的80埠等等。

- udp埠

udp埠,即使用者資料報協議埠,無需在客戶端和伺服器之間建立連線,安全性得不到保障。常見的有dns服務的53埠,snmp(簡單網路管理協議)服務的161埠,qq使用的8000和4000埠等等。

21埠:21埠主要用於ftp(file transfer protocol,檔案傳輸協議)服務。

22埠:22埠主要用於ssh(secure shell,安全殼協議)服務。

23埠:23埠主要用於telnet(遠端登入)服務,是internet上普遍採用的登入和**程式。

25埠:25埠為smtp(****** mail transfer protocol,簡單郵件傳輸協議)伺服器所開放,主要用於傳送郵件,如今絕大多數郵件伺服器都使用該協議。

53埠:53埠為dns(domain name server,網域名稱伺服器)伺服器所開放,主要用於網域名稱解析,dns服務在nt系統中使用的最為廣泛。

80埠:80埠是為http(hypertext transport protocol,超文字傳輸協議)開放的,這是上網衝浪使用最多的協議,主要用於在www(world wide web,全球資訊網) 服務上傳輸資訊的協議。

443埠:443埠即網頁瀏覽埠,主要是用於https服務,是提供加密和通過安全埠傳輸的另一種http。

1024埠:1024埠一般不固定分配給某個服務,在英文中的解釋是「reserved」(保留)。

1080埠:1080埠是socks**服務使用的埠,大家平時上網使用的www服務使用的是http協議的**服務。

8080埠:8080埠同80埠,是被用於www**服務的,可以實現瀏覽網頁。

在linux系統中,執行:netstat -tln 可檢視當前使用的埠

[op_dev@algo-aa wang]$ netstat -tln

active internet connections (only servers)

proto recv-q send-q local address foreign address state

tcp 0 0 0.0.0.0:873 0.0.0.0:* listen

tcp 0 0 0.0.0.0:9101 0.0.0.0:* listen

tcp 0 0 0.0.0.0:111 0.0.0.0:* listen

tcp 0 0 0.0.0.0:22 0.0.0.0:* listen

tcp 0 0 127.0.0.1:7991 0.0.0.0:* listen

tcp 0 0 127.0.0.1:25 0.0.0.0:* listen

tcp 0 0 10.19.57.108:10050 0.0.0.0:* listen

tcp6 0 0 :::873 :::* listen

tcp6 0 0 :::3306 :::* listen

tcp6 0 0 :::9100 :::* listen

tcp6 0 0 :::111 :::* listen

tcp6 0 0 :::9137 :::* listen

tcp6 0 0 :::5778 :::* listen

tcp6 0 0 :::22 :::* listen

tcp6 0 0 :::7992 :::* listen

tcp6 0 0 :::7993 :::* listen

tcp6 0 0 ::1:25 :::* listen

tcp6 0 0 :::18080 :::* listen

tcp6 0 0 :::9445 :::* listen

127.0.0.1 是乙個環迴位址。並不表示「本機」。0.0.0.0才是真正表示「本網路中的本機」。 在實際應用中,一般我們在服務端繫結埠的時候可以選擇繫結到0.0.0.0,這樣我的服務訪問方就可以通過我的多個ip位址訪問我的服務。

起始行:get 表示要獲取資源,post 表示向伺服器推送資料 (建立或修改資源, 或者產生要返回的臨時文。請求目標 (request target),通常是乙個url,或者是協議、埠和網域名稱的絕對路徑,通常以請求的環境為特徵。

head:與get方法一樣,都是向伺服器發出指定資源的請求。

post:向指定資源提交資料,請求伺服器進行處理(例如提交表單或者上傳檔案)

url到函式的對映。

route就是一條路由,它將乙個url路徑和乙個函式進行對映,例如:

/users        ->  getallusers()

/users/count  ->  getuserscount()

這就是兩條路由,當訪問 /users 的時候,會執行 getallusers() 函式;當訪問 /users/count 的時候,會執行 getuserscount() 函式。

而 router 可以理解為乙個容器,或者說一種機制,它管理了一組 route。簡單來說,route 只是進行了url和函式的對映,而在當接收到乙個url之後,去路由對映表中查詢相應的函式,這個過程是由 router 來處理的。一句話概括就是 "the router routes you to a route"。

對於伺服器來說,當接收到客戶端發來的http請求,會根據請求的url,來找到相應的對映函式,然後執行該函式,並將函式的返回值傳送給客戶端。對於最簡單的靜態資源伺服器,可以認為,所有url的對映函式就是乙個檔案讀取操作。對於動態資源,對映函式可能是乙個資料庫讀取操作,也可能是進行一些資料的處理,等等。

參考:1.埠的作用:

2.ip:

Flask基礎搭建

fromflaskimportflask flask name 後面跟function是裝飾器的左右 route 裡面填寫的是頁面,裡也可以寫 user about 這裡就是指的使用者相關頁面,這裡指的是主頁面 defhello world return hello world 返回乙個value給...

flask快速搭建服務

flask快速搭建服務 1 文字請求 伺服器端 示例 核心函式 request.form.get house code from split address ner import load model,split address from up three import addresssplit 3...

FLask學習筆記 Flask概念(一)

1.程式例項 flask類的物件,只有乙個強制指定的引數 程式主模組或包的名字。通常用如下 建立 from flask import flask2.路由和檢視函式 處理url和函式之間關係的程式稱為路由。def index return hello world 上圖中index 即為檢視函式 動態路...