在正式開始學習python網路程式設計之前,先來補充一點網路基礎知識。
internet是在一些共享線路上傳送資料的。為了實現共享,tcp通過把你要傳送的資料流分解成很多小資訊包在internet傳輸,而這些資訊報到了接受者的地方會再次重新合成在一起。通過分成很小的資料報,internet鏈結就會用很少的時間來傳送資料的每乙個位元,而其他程式的資料報也可以同時傳送。(像**這種型別的裝置是獨佔線路的,如果你想跟朋友聊天的同時傳送**傳真,至少需要兩根線路。如果每個軟體都獨佔一根網線,那麼賣網線一定賺的要死)
為了準確的將資料報傳送到指定位置,tcp通過ip確定機器,通過埠號確定哪個軟體需要接收你的資料。
tcp是個可靠的協議,為了防止資料在傳輸的過程中被損壞,每個資訊包都包含乙個效驗碼,驗證失敗資訊包就會被省略;為了防止資訊報丟失,tcp要求接收方每收到乙個資訊報都要反饋一下,沒收到反饋將重發資料報;為了防止資訊包重複或者順序錯誤,tcp每傳送乙個資訊包都會傳送乙個序號,接收方將按順序合併,如果借到重複序號的資料報則拋棄。
為了使資料報順利的從機器傳送到遠端伺服器上,資料報常常會經過不同的網路。路由器是網際網路絡的樞紐,充當"交通警察"的角色。在windows中我們可以通過tracert(linux通過
traceroute、 mtr)命令檢視經由的路由器 。
ssl一般建立在tcp連線之上,它可以提供伺服器認證、加密、資料完整性的功能。tls與ssl類似,他是ssl的繼任者。
在客戶端/伺服器結構下,伺服器一直在偵聽來自客戶端的請求,有請求之後就建立連線處理他們。通常伺服器會使用大家都知道的埠號(如80),而客戶端則會由系統隨機分配乙個保證沒被使用的短命的埠。
udp被用來傳送非常短的訊息。它既不能保證資料是否真的能被收到,也不能保證資料是否只接收一次,還不能保證資訊次序是否與傳送時一致。但是,只要沒受到攻擊者繞過安全措施後的攻擊,通過udp接受的資料通常都是完整的。
tcp建立關閉連線要話費時間,而udp不需要建立連線,所以不存在花費時間建立、關閉連線的問題。
1. get用於從伺服器上獲取資料,post用於向伺服器傳送資料。
2. get是把引數資料佇列加到提交表單的action屬性所指的url中,值和表單內各個字段一一對應,在url中可以看到。
(如圖,個個引數用&分割)
post是通過http post機制,將表單內各個字段與其內容放置在html header內一起傳送到action屬性所指的url位址。使用者看不到這個過程。
3. 對於get方式,伺服器端用request.querystring獲取變數的值,對於post方式,伺服器端用request.form獲取提交的資料。
4. get傳送的資料量較小,不能大於2kb。post傳送的資料量較大,一般被預設為不受限制。但收到伺服器軟體約束,如iis4中最大量為80kb,iis5中為100kb。
5. get安全性非常低,post安全性較高。但是執行效率卻比post方法好。
建議:1、get方式的安全性較post方式要差些,包含機密資訊的話,建議用post資料提交方式;
2、在做資料查詢時,建議用get方式;而在做資料新增、修改或刪除時,建議用post方式;
http(超文字傳輸協議)封裝了web頁面服務的整個過程,他是web的基石。由於這個協議是面對客戶/伺服器通訊之用,所以它主要就是由請求(request,客戶端到伺服器)和相應(response,伺服器到客戶端)兩個補分組成。而兩者之間的伺服器上發生的事情不屬於http關心的範疇。
python網路 Python3 網路程式設計
python3 網路程式設計 python 提供了兩個級別訪問的網路服務。低階別的網路服務支援基本的 socket,它提供了標準的 bsd sockets api,可以訪問底層作業系統socket介面的全部方法。高階別的網路服務模組 socketserver,它提供了伺服器中心類,可以簡化網路伺服器...
39 網路程式設計
http協議,hyper text transfer protocol 超文字傳輸協議 是用於從全球資訊網伺服器傳送超文字到本地瀏覽器的傳輸議,http是乙個應用層協議,由請求和響應構成,是乙個標準的客戶端伺服器模型。c s模式 client和server常常分別處在相距很遠的兩台計算機上,clie...
2018 4 15 網路程式設計
單純的客戶端服務端有個侷限性,a客戶端連線上以後,未處理完之前,b客戶端連線只有等待 所以服務端最好將每個客戶端封裝到乙個執行緒中 class picthread implements runnable public void run outputstream out s.getoutputstre...