网络基础 + 简易服务端和客户端
網絡架構及其演變過程
單機架構
- 就只有一個客戶端,不需要和服務器交換數據CS架構
- 客戶端(Client)--- 服務端(Server) - - 客戶端:用戶安裝軟件 - - 服務端:統一管理數據庫的主機中的軟件就叫做服務端,再后來服務端不只是管理數據,外加處理業務邏輯CS架構要求
- 要求操作系統安裝客戶端;產商操作系統部署服務端 - 每個用戶需要獨立安裝軟件、服務端升級也要每個用戶升級面試題:數據放在服務端和客戶端的利與弊?
數據如果放在服務端處理安全性,穩定性而且升級很容易,但是對于服務器的負荷比較大 數據如果放在客戶端處理,安全性、穩定性會降低,并且升級需要每個客戶端都去升級,不利于節約網絡資源BS架構
- 瀏覽器(Browser) --- 服務端(Server) - 統一客戶端即默認安裝用戶電腦中的資源,訪問同種類的網站,具體業務的處理根據相應的協議和標磚提供的服務器程序,在服務器中處理- 原理上來說BS架構其實就是CS架構,就現在來說BS架構與OS架構的區別: 在技術架構,核心技術,在線預訂等層面上來說BS架構其實是優于CS架構的,但在原理上來說BS架構其實也是一個cs架構,因為BS的瀏覽器端,其實也可以說成是客戶端互聯網的組成
互聯網的組成(教材)
互聯網的拓撲結構非常復雜,并且在地理位置上覆蓋了全球,從工作方式上看,可以劃分為兩大塊:
- 1.邊緣結構:這部分由所有連接在互聯網上的主機組成,這部分是用戶直接使用的,用來進行通信和資源共享
- 2.核心部分:由大量網絡和連接這些網絡的路由器組成,這部分用來為邊緣結構提供服務.
以上是教材中所劃分的:
互聯網的組成(科普):
說道互聯網大家都不陌生,利用互聯網打開手機或者電腦看新聞,刷淘寶,看抖音,現在的互聯網已然成為了人們生活的一部分
區塊鏈號稱是下一代互聯網
互聯網的基礎設施非常龐大,包含硬件,軟件兩部分.下面我們先來看一下當你打開你的瀏覽器沒輸入一個網址,這樣一個簡單的動作,有計算機實現的過程:
- 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地址
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()轉載于:https://www.cnblogs.com/xiongchao0823/p/11468977.html
總結
以上是生活随笔為你收集整理的网络基础 + 简易服务端和客户端的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式-Decorator模式
- 下一篇: 设计模式-Strategy模式