標籤:簡單的 32位 -- 電腦 使用者 除了 div ike 編程
知識內容:
1.網路基礎
2.socket文法及相關
3.SocketServer實現多並發
參考:
http://www.cnblogs.com/Eva-J/articles/8244551.html
http://www.cnblogs.com/alex3714/articles/5227251.html
一、網路基礎
1.C/S架構與B/S架構
(1)C/S架構:client-server架構
C/S即client/server架構,是當前大多數網路編程所採用的架構模型。通過它可以充分利用兩端硬體環境的優勢,將任務合理分配到client端和server端來實現,降低了系統的通訊開銷。client/server架構一般有一台後台電腦作為伺服器,使用者的個人機上的軟體程式作為用戶端
server:服務端 client:用戶端
典型應用:QQ、LOL
(2)B/S架構:browser-server架構
B/S即browser/server架構,是web興起後流行起來的一種網路架構模式,B/S架構使用瀏覽器當作客戶點的應用軟體,所以B/S架構可以看作C/S的一種特殊情況,是對C/S架構模式的一種改進
serve:服務端 browser:瀏覽器
典型應用:所有的網站
(3)B/S架構的優點
a.便於部署、維護和升級: B/S的應用程式都部署在後台伺服器上,一般無需更新用戶端軟體(即瀏覽器)
b.跨平台、對客戶機要求低: 用戶端的電腦硬體環境千差萬別,傳統C/S架構需要對不同作業系統開發不同的用戶端軟體,而每種作業系統都支援web瀏覽器,基於web開發的B/S架構系統只需開發一套用戶端程式並且用戶端程式是部署在web伺服器上,由瀏覽器在訪問時下載到用戶端運行 (注: 這裡的用戶端程式一般指前端代碼 eg: HTML\CSS\JavaScript等)
c.對安全性要求極高: B/S架構系統一般建立在廣域網路上,也就是有很多人能訪問,面向的是未知使用者,所以開發B/S系統時更要注意系統的防攻擊、資料加密、備份、非偽造等能力
(4)B/S架構與C/S架構的關係
B/S架構其實C/S架構的一種,不過client變成了browser,browser其實也是一種用戶端
2.IP地址、連接埠、網域名稱與URL
(1)IP地址
網路地址是一個網路層中的概念,是物聯網上的主機在網路中具有的邏輯地址,電腦網路中採用IP地址表示網路地址。現在的IP地址可以分為IPv4和IPv6兩種
IPv4: 一個32位位元的地址,一般表示為4個十進位數字,比如: 172.16.32.3、10.38.96.243等
一個IPv4地址被劃分為兩部分: 網路地址和主機地址。根據網路地址和主機地址的不同位元規定,可以將IP地址劃分為3類:
A(8位網路地址和24位主機地址) B(16位網路地址和16位主機地址) C(24位網路地址和8位主機地址),由於某些原因,A類和B類地址幾乎分配殆盡
IPv6: 由於IPv4的數量限制,就推出了IPv6,IPv6由1128位位元表示,在表達方式上使用8個16進位數字表示,比如: d23:4334:0:0:23:ade:9853:23
IPv4與IPv6比較: 單從數量級上來說,IPv6所擁有的地址容量大概是IPv4的8*10^28倍,達到2^128個。IPv6不但解決了網路地址資源數量的問題,也為除了電腦外的裝置分配IP地址來連入互連網提供了方便。當然目前廣泛使用的還是IPv4,但是毫無疑問IPv6將是未來IP地址的主流。
為什麼需要IP地址:為了方便找到其他主機,可以通過ARP協議將IP地址轉化成MAC地址, MAC地址是一個主機的唯一標識
關於ARP協議:https://baike.baidu.com/item/ARP/609343?fr=aladdin&fromid=1742212&fromtitle=ARP%E5%8D%8F%E8%AE%AE
保留IP地址:保留IP地址不會在互連網中使用,其主要被用在企業機構內部作為區域網路地址使用
保留地址主要在以下四類:
- A類:10.0.0.0-10.255.255.255(長度相當於1個A類IP地址)
- A類:100.64.0.0-100.127.255.255
- B類:172.16.0.0-172.31.255.255(長度相當於16個連續的B類IP地址)
- C類:192.168.0.0-192.168.255.255(長度相當於256個連續的C類IP地址)
這些地址是不會被互連網分配的,也不會被路由通過
127.0.0.1 -> 迴環地址
(2)連接埠
在web中,連接埠是一個軟體級的概念,是虛擬連接埠,IP地址是網路層的定址方式,而連接埠就是傳輸層的定址方式。連接埠是一個16位位元表達的正整數,數字範圍為0到65535
註:在同一時間內只能有只會有一個程式佔用一個連接埠,不可能同時有兩個程式佔用同一個連接埠,一般情況下我們自己使用8000之後的連接埠
常用的預設連接埠號碼:
IP地址與連接埠:
- IP-->確定一台主機
- 連接埠-->確定唯一的程式
- IP+連接埠-->確定唯一的一台機器上的唯一的一個程式
(3)網域名稱
IP地址由純數字組成,讓人難以記住,且不能表達功能、地理位置等資訊,所以標準化組織就定義了網域名稱這種主機地址表示方式
網域名稱: 網域名稱是應用程式層概念,是由一串用點分割的名字組成的網路上某台電腦或電腦群組的名稱,網域名稱可以說是IP地址的一個面具
常見的網域名稱: www.baidu.com www.sina.com.cn等
注:
網域名稱中的符號都由英文字母和數字組成,每個標點不超過63個字元,也不區分大小寫字母,標號中除了連字號(-)以外不能使用任何其他標點符號
(4)URL
URL: 全球統一資源定位器 其實就是一個連結,連結背後是資源,資源可以是一張圖片、一首歌、一張網頁、、、
URL的標準形式: [協議]://[主機]:[連接埠]/[路徑]?[參數] 注: 一般協議有: http、https、ftp等 連接埠一般都省略了
eg: https://www.nowcoder.com/1476481
http://www.cnblogs.com/wyb666/p/8494861.html
3.OSI七層模型
osi七層模型是人們按照分工不同將互連網協議從邏輯上劃分了層級:
4.TCP/UDP協議
(1)TCP
TCP是一種連線導向的、可靠的、基於位元組流的傳輸層通訊協定
TCP的特性: 有序性、真確性、可靠性、可控性,TCP使用連線導向的方式收發資料,在收發資料之前需建立串連,在資料轉送之後釋放串連,建立串連時採用3次握手的方式來保證發送的可靠性、可控性
在雙方成功握手之後將在兩個應用程式之間建立一個全雙工系統的通訊,這個全雙工系統通訊將佔用兩個電腦之間的通訊線路,直到它被一方關閉或雙方關閉為止
全雙工系統:雙方可以互發訊息,接受訊息
(2)UDP
UDP是一種不需連線的傳輸層協議,提供物件導向的簡單的不可靠資訊傳送服務,雖然UDP不可靠,但是由於UDP的開銷小一般UDP適用於輸送量大(輕量級控制)、可以承受資訊丟失(傳輸不可靠)的應用情境。而且在網路狀況良好的情況下,UDP的丟包率在實際情況下也非常少,所以有很多經典的協議採用UDP進行傳輸,比如SNMP、NFS、DNS等
5.HTTP協議
(1)HTTP介紹
HTTP即超文字傳輸通訊協定 (HTTP),是web中的最主要的web應用程式層標準,B/S架構的應用系統用HTTP在用戶端於伺服器之間進行傳輸資料。HTTP可以傳輸任何格式的資料,比如說文本、圖片甚至視頻都可以通過HTTP進行傳輸
(2)HTTP流程
HTTP連接埠號碼預設為80,當伺服器發現有用戶端建立串連並提交了一個HTTP請求後,就根據請求的內容執行相應的操作,並將結果返回給用戶端
通常來說客戶在瀏覽器中輸入URL發起一次網路訪問的步驟如下:
- 輸入URL(網址),比如訪問http://mysite:8080/app/index.html
- 瀏覽器通過網域名稱系統查詢mysite對應的真實IP,比如212.34.98.20
- 向伺服器212.34.98.20的8080連接埠(HTTP連接埠)發送TCP串連請求並建立串連
- 發送HTTP請求的內容包括訪問的地址(/app/index.html)、訪問方式(get)、瀏覽器本身的產品名等資訊
- 伺服器返回對應地址(/app/index.html)中的資料作為response發送給用戶端,如果請求的不是一個檔案,則伺服器需執行相應的代碼,動態產生並返回給用戶端
- 瀏覽器接受到結果後關閉與伺服器的TCP串連
- 瀏覽器將接受到的結果(HTML、CSS、JavaScript)解析並最後呈現在顯示器上
6.socket
(1)socket基礎
網路上的兩個程式通過一個雙向的通訊串連實現資料的交換,這個串連的一端稱為一個socket。
建立網路通訊串連至少要一對連接埠號碼(socket)。socket本質是編程介面(API),對TCP/IP的封裝,TCP/IP也要提供可供程式員做網路開發所用的介面,這就是Socket編程介面;HTTP是轎車,提供了封裝或者顯示資料的具體形式;Socket是發動機,提供了網路通訊的能力
(2)socket串連過程
伺服器監聽->伺服器socket並不定位具體的用戶端socket,而是處於等待連結的狀態,即時監控網路狀態
用戶端請求->用戶端socket發出串連請求,要串連的目標是服務端socket,為此,用戶端socket必須先描述它要已連線的服務端socket,指出服務端socket的地址和連接埠號碼,然後想服務端socket提出串連請求
串連確認->當服務端socket監聽到或者說是接收到用戶端socket的串連請求,它就響應用戶端socket的請求,建立一個新的線程,把服務端socket的描述發給用戶端,一旦用戶端確認了,串連就好了。服務端socket基礎處於監聽狀態
(3)socket兩種模式
socket有兩種操作方式:連線導向和不需連線的。連線導向的socket操作就像一部電話,必須建立一個串連和一個呼叫,所有事情在到達是的順序和它們出發的順序一樣,不需連線的socket就想一個郵件投遞,沒有什麼保證,順序很可能會不同。
具體使用什麼模式得看情境,如果可靠性更重要的話,用連線導向的好一些。
不需連線的操作使用資料報協議(udp),這種模式下的socket不需要串連一個目的socket,只是簡單的透出資料報,不需連線的操作是高效的,但是不安全。
連線導向的操作使用tcp協議。效率低一些,但是安全性高
(4)socket層
(5)理解socket
Socket是應用程式層與TCP/IP協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,Socket其實就是一個門面模式,它把複雜的TCP/IP協議族隱藏在Socket介面後面,對使用者來說,一組簡單的介面就是全部,讓Socket去組織資料,以符合指定的協議
二、socket文法及相關
三、SocketServer實現多並發
python網路編程