網絡基礎 + 簡易服務端和客戶端

網絡架構及其演變過程

單機架構

- 就只有一個客戶端,不須要和服務器交換數據

CS架構

- 客戶端(Client)--- 服務端(Server)
- - 客戶端:用戶安裝軟件
- - 服務端:統一管理數據庫的主機中的軟件就叫作服務端,再後來服務端不僅是管理數據,外加處理業務邏輯

CS架構要求

- 要求操做系統安裝客戶端;產商操做系統部署服務端
- 每一個用戶須要獨立安裝軟件、服務端升級也要每一個用戶升級

面試題:數據放在服務端和客戶端的利與弊?

數據若是放在服務端處理安全性,穩定性並且升級很容易,可是對於服務器的負荷比較大
數據若是放在客戶端處理,安全性、穩定性會下降,而且升級須要每一個客戶端都去升級,不利於節約網絡資源

BS架構

- 瀏覽器(Browser) --- 服務端(Server)
- 統一客戶端即默認安裝用戶電腦中的資源,訪問同種類的網站,具體業務的處理根據相應的協議和標磚提供的服務器程序,在服務器中處理

- 原理上來講BS架構其實就是CS架構,就如今來講BS架構與OS架構的區別:
在技術架構,核心技術,在線預訂等層面上來講BS架構實際上是優於CS架構的,但在原理上來講BS架構其實也是一個cs架構,由於BS的瀏覽器端,其實也能夠說成是客戶端

互聯網的組成

互聯網的組成(教材)

互聯網的拓撲結構很是複雜,而且在地理位置上覆蓋了全球,從工做方式上看,能夠劃分爲兩大塊: - 1.邊緣結構:這部分由全部鏈接在互聯網上的主機組成,這部分是用戶直接使用的,用來進行通訊和資源共享 - 2.核心部分:由大量網絡和鏈接這些網絡的路由器組成,這部分用來爲邊緣結構提供服務. 以上是教材中所劃分的:css

互聯網的組成(科普):

說道互聯網你們都不陌生,利用互聯網打開手機或者電腦看新聞,刷淘寶,看抖音,如今的互聯網已然成爲了人們生活的一部分python

區塊鏈號稱是下一代互聯網面試

互聯網的基礎設施很是龐大,包含硬件,軟件兩部分.下面咱們先來看一下當你打開你的瀏覽器沒輸入一個網址,這樣一個簡單的動做,有計算機實現的過程: - 1.瀏覽器檢查是否有緩存過域名對應ip地址 - 2.若是沒有緩存的域名對應的ip,請求域名服務器解析成對應的ip地址 - 3.瀏覽器創建Scoket鏈接,根據http協議組裝get類型的http header,經過tcp/ip發送報文. - 4.tcp/ip協議會經過網絡層網卡(wifi或者網線)發射信號到家庭的路由器,家裏面的路由器發送信號到電訊廠商的交換機中, 找到目標服務器,服務器也許託管在IDC機房,也許在阿里雲VPS,也許在國外 - 5.機房裏面有不少大型的交換機,機櫃,專業的精密空調,你要訪問的那臺ip的服務器就在某個機櫃中 - 6.在服務器接收到信號後,會根據tcp/ip協議解出http的協議頭,根據get的請求決定須要返回的數據 - 7.在服務器端實際上根據業務還有很複雜的邏輯,服務器後面還有不少臺服務器,到底指定那一臺服務器來處理請求,須要負載均衡設備來完成 - 8.要返回的數據是在緩存裏面,仍是在靜態文件中,仍是在數據庫中. - 9 .根據瀏覽器返回的數據,發現一些靜態資源(css,js等)時又從新發起新的http請求,而這些靜態資源文件可能在CDN網絡中,請求靜態資源的整個過程須要從第一步再走一遍.而且極可能中間通過的交互機,路由的過程是不同的數據庫

互聯網的硬件組成

- 1.終端設備
	- 2.網絡設備
	- 3.主機設備

互聯網的軟件組成

- 1.網路協議類
	- 2.操做系統類
	- 3.平臺中間插件類
	- 4.應用類

OSI七層協議

互聯網的本質其實就是一些列的網絡協議,這個協議就叫作OSI協議,是人爲劃分的,主要是區別每一層的做用,方便理解 七層:應用層,表示層,會話層,傳輸層,網絡層,數據鏈路層,物理層 五層:應用層,傳輸層,網絡層,數據鏈路層,物理層 四層:應用層,傳輸層,網絡層,網絡接口層 以上這三張劃分方式其實意義是同樣的,只是人記得不一樣而已瀏覽器

1.物理層:接收高低壓電平 2.數據鏈路層:解釋高低壓電平,將一電信號劃分爲一個一個的數據包,數據幀(由報頭和數據組成) -head包含(固定18個字節) - 發送者/源地址 6個字節 - 接收者/目標地址 6個字節 - 數據類型 6個字節 -data包含:(最短46個本身,最長1500個字節) 3.網絡層:引入一套新的地址用來區分不一樣的廣播域/子網,這套地址即網絡地址 - 規定網絡地址的協議叫作IP協議,定義的地址叫作IP地址緩存

- 子網掩碼就是表示網絡特徵的一個參數,他在形式上等同於一個ip地址

- IP協議的做用主要是,爲每一臺計算機分配ip地址和肯定那些地址在同一個網絡

- 有了MAC地址+IP地址,咱們就能夠肯定世界上獨一無二的一臺計算機了

- APR協議:獲取對方的MAC地址(經過廣播的形式),由於每臺計算機的IP地址是已知的,因此只須要獲取MAC地址,就能夠肯定計算機了

4.傳輸層:創建端口到端口的通訊 - 找到肯定了的計算機上的應用,就須要經過端口,端口是應用程序與網卡關聯的編號 - TCP協議: 可靠傳輸(須要創建鏈接,三次握手,四次揮手) - UDP協議: 不可靠傳輸(不須要創建鏈接,數據容易丟失,就是玩lol丟包) 5.應用層:規定應用層的數據格式 - TCP協議能夠爲各類各樣的程序傳遞數據,因此就有了爲各類應用程序規定數據格式的協議存在.就構成了應用層 - TCP協議就是一個老好人協議,誰都能來安全

使用socket創建簡易的服務端和客戶端

服務端服務器

#導入一個socket模塊
import socket

#想象成買手機打電話:socket.SOCK_STREAM 表示創建tcp鏈接 ,udp鏈接socket.SOCK_DGRAM
#買了個手機
soc=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#插電話卡:綁定ip地址  傳元組:(ip,端口號)
soc.bind(('192.168.11.146',8080))  #若是寫本機ip,局域網外部能夠訪問
# soc.bind(('127.0.0.1',8080))    #若是寫127.0.0.1,只能本身訪問

#開機,監聽,這個5 是半鏈接池的大小
soc.listen(5)
#等待別人給我打電話
print('xxxx')
conn,addr=soc.accept()
print('yyyy')
print(addr)
# conn 就是通路
#接收1024個字節
data=conn.recv(1024)
print('我收到客戶端發的',data)
#conn.send  發送數據,數據必須是bytes格式
conn.send(b'xxxxx')

#掛斷電話
conn.close()
#銷燬手機
soc.close()

客戶端網絡

import socket
#建立一個socket對象
soc=socket.socket()
#鏈接服務端
soc.connect(('192.168.11.146',8080))
#發送消息
soc.send(b'xxx')

data=soc.recv(1024)
print('我收到服務端回的',data)
#關閉鏈接
soc.close()
相關文章
相關標籤/搜索