日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python全栈开发 * 32知识点汇总 * 180717

發(fā)布時(shí)間:2023/12/20 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python全栈开发 * 32知识点汇总 * 180717 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
32 網(wǎng)絡(luò)編程 (一)
一.架構(gòu)
定義:程序員開(kāi)發(fā)的一種模式.
分類(lèi):
C/S 架構(gòu) C/S即:Client與Server , 客戶端/ 服務(wù)器模式 . 缺點(diǎn) : 冗余
B/S 架構(gòu) Browser與Server, 瀏覽器 /服務(wù)器模式 . 優(yōu)勢(shì) : 統(tǒng)一了應(yīng)用的接口
二.網(wǎng)絡(luò)通信編程
1.網(wǎng)卡 : mac地址,電腦的物理地址(真實(shí)存在的),mac地址要求全球唯一.
2.IP協(xié)議 : 規(guī)定網(wǎng)絡(luò)地址的協(xié)議叫IP協(xié)議,它定義的地址稱(chēng)之為ip地址,廣泛采用的v4版本即ipv4,它規(guī)定網(wǎng)絡(luò)地址由32位2進(jìn)制表示
范圍0.0.0.0-255.255.255.255
IP協(xié)議的作用:
(1).一個(gè)是為每一臺(tái)計(jì)算機(jī)分配IP地址.
(2).另一個(gè)是確定哪些地址在同一個(gè)子網(wǎng)絡(luò).
3.IP地址 : 是指互聯(lián)網(wǎng)協(xié)議地址(Internet Protocol Address 網(wǎng)際協(xié)議地址),是IP Address的縮寫(xiě)
是IP協(xié)議提供的一種統(tǒng)一的地址格式,它為互聯(lián)網(wǎng)上的每一個(gè)網(wǎng)絡(luò)和每一臺(tái)主機(jī)分配一個(gè)邏輯地址,以此來(lái)屏蔽物理地址的差異
4.IP地址形式 : 是一個(gè)32位的二進(jìn)制數(shù),通常被分割為4個(gè)"8位二進(jìn)制數(shù)"(4個(gè)字節(jié)).IP地址通常用"點(diǎn)分十進(jìn)制"表示成(a.b.c.d)的形式,其中a,b,c,d都是 0-255之間的十進(jìn)制整數(shù).例: 點(diǎn)分十進(jìn)IP地址
(100.4.5.6),實(shí)際上是32位二進(jìn)制數(shù)(01100100.00000100.00000101.00000110).
5.端口 : 是英文port的意譯.操作系統(tǒng)為每一個(gè)應(yīng)用程序分配一個(gè)端口號(hào),IP+端口號(hào)唯一確定某一程序. (是一個(gè)程序唯一的標(biāo)識(shí))
6.mac地址:
每塊網(wǎng)卡出廠時(shí)都被燒制上一個(gè)世界唯一的mac地址,長(zhǎng)度為48位2進(jìn)制,通常由12位16進(jìn)制數(shù)表示(前六位是廠商編號(hào),后六位是流水線號(hào))
7.arp協(xié)議 (通過(guò)目標(biāo)IP獲取目標(biāo)mac地址)
服務(wù)器 1 找到服務(wù)器 2 的mac地址步驟: (補(bǔ)充 組播:給一組服務(wù)器發(fā)消息.)
(1)服務(wù)器1發(fā)送請(qǐng)求幀給交換機(jī);
(2)交換機(jī)以廣播方式找尋服務(wù)器2:
(3)服務(wù)器2接收到請(qǐng)求返回給交換機(jī);
(4)交換機(jī)以單播方式返回給服務(wù)器1.
整個(gè)過(guò)程服務(wù)器 1 通過(guò)服務(wù)器 2 的IP地址,借助交換機(jī)的功能找到服務(wù)器 2 的mac地址.
8.局域網(wǎng):
局域網(wǎng)(Local Area Network,LAN)是指在某一區(qū)域內(nèi)由多臺(tái)計(jì)算機(jī)互聯(lián)成的計(jì)算機(jī)組;局域網(wǎng)是封閉型的,
可以由辦公室內(nèi)的兩臺(tái)計(jì)算機(jī)組成,也可以由一個(gè)公司內(nèi)的上千臺(tái)計(jì)算機(jī)組成。
9.子網(wǎng)掩碼:
所謂”子網(wǎng)掩碼”,就是表示子網(wǎng)絡(luò)特征的一個(gè)參數(shù)。它在形式上等同于IP地址,也是一個(gè)32位二進(jìn)制數(shù)字,它的網(wǎng)絡(luò)部分全部為1,主機(jī)部分全部為0。比如,
IP地址172.16.10.1,如果已知網(wǎng)絡(luò)部分是前24位,主機(jī)部分是后8位,那么子網(wǎng)絡(luò)掩碼就是11111111.11111111.11111111.00000000,寫(xiě)成十進(jìn)制就是255.255.255.0。
9.用網(wǎng)段來(lái)確定一個(gè)IP是否在當(dāng)前局域網(wǎng)內(nèi)
網(wǎng)段 = IP地址 & 子網(wǎng)掩碼 ( 兩個(gè)數(shù)位都為1,運(yùn)算結(jié)果為1,否則為0 )
172.16.10.1:10101100.00010000.00001010.000000001
255.255.255.0:11111111.11111111.11111111.00000000
AND運(yùn)算得網(wǎng)絡(luò)地址結(jié)果:10101100.00010000.00001010.000000001->172.16.10.0 同一個(gè)局域網(wǎng)內(nèi).
10.廣域網(wǎng) : 全是通用的網(wǎng)絡(luò).
11.路由器 : 路由器(Router),是連接因特網(wǎng)中各局域網(wǎng)、廣域網(wǎng)的設(shè)備,它會(huì)根據(jù)信道的情況自動(dòng)選擇和設(shè)定路由,以最佳路徑,按前后順序發(fā)送信號(hào),
路由器是互聯(lián)網(wǎng)絡(luò)的樞紐,"交通警察".
12 路由器與交換機(jī)的區(qū)別:
路由和交換機(jī)之間的主要區(qū)別就是交換機(jī)發(fā)生在OSI參考模型第二層(數(shù)據(jù)鏈路層),而路由發(fā)生在第三層,即網(wǎng)絡(luò)層。
這一區(qū)別決定了路由和交換機(jī)在移動(dòng)信息的過(guò)程中需使用不同的控制信息,所以說(shuō)兩者實(shí)現(xiàn)各自功能的方式是不同的。
13.路由器(Router)又稱(chēng)網(wǎng)關(guān)設(shè)備(Gateway)
是用于連接多個(gè)邏輯上分開(kāi)的網(wǎng)絡(luò),所謂邏輯網(wǎng)絡(luò)是代表一個(gè)單獨(dú)的網(wǎng)絡(luò)或者一個(gè)子網(wǎng)。當(dāng)數(shù)據(jù)從一個(gè)子網(wǎng)傳輸?shù)搅硪粋€(gè)子網(wǎng)時(shí),
可通過(guò)路由器的路由功能來(lái)完成。因此,路由器具有判斷網(wǎng)絡(luò)地址和選擇IP路徑的功能,它能在多網(wǎng)絡(luò)互聯(lián)環(huán)境中,建立靈活的連接,
可用完全不同的數(shù)據(jù)分組和介質(zhì)訪問(wèn)方法連接各種子網(wǎng),路由器只接受源站或其他路由器的信息,屬網(wǎng)絡(luò)層的一種互聯(lián)設(shè)備.
14.TCP協(xié)議(通信協(xié)議一): 安全可靠的通信方式,如果發(fā)生錯(cuò)誤會(huì)返回錯(cuò)誤,讓用于重發(fā).
TCP(Transmission Control Protocol)可靠的、面向連接的協(xié)議(eg:打電話)、傳輸效率低全雙工通信(發(fā)送緩存&接收緩存)
面向字節(jié)流。使用TCP的應(yīng)用:Web瀏覽器;電子郵件、文件傳輸程序
TCP編程(服務(wù)器和客戶端)
服務(wù)器:
import socket
sk=socket.socket(type=socket.SOCKET_STREAM) 默認(rèn)tcp協(xié)議 (類(lèi)似買(mǎi)手機(jī))
sk.bind(("127.0.0.1",端口號(hào))) 端口號(hào)0 - 65535 ; 0-1023 不能用; 8000-10000 常用時(shí)刻 (類(lèi)似買(mǎi)手機(jī)卡)
sk.listen() (類(lèi)似于告訴朋友手機(jī)號(hào))
conn,addr=sk.accept() (類(lèi)似于等電話)
msg=conn.recv(1024) (類(lèi)似于聊天)
print((msg) 可以有參數(shù) decode("utf-8") addr
conn.close() (類(lèi)似于掛點(diǎn)電話)
sk.close() (類(lèi)似于關(guān)機(jī))
客戶端:
import socket
sk=socket.socket()
sk.connect(("127.0.0.1",端口號(hào))) (類(lèi)似于給手機(jī)打電話)
sk.send(b'hello') 必須是字節(jié)
sk.close()
15.UDP協(xié)議(通信協(xié)議二): 不安全,不可靠的通信方式 速度快.
UDP(User Datagram Protocol)不可靠的、無(wú)連接的服務(wù),傳輸效率高(發(fā)送前時(shí)延小),一對(duì)一、一對(duì)多、多對(duì)一、多對(duì)多、
面向報(bào)文,盡最大努力服務(wù),無(wú)擁塞控制。使用UDP的應(yīng)用:域名系統(tǒng) (DNS);視頻流;IP語(yǔ)音(VoIP)。 (常用于視頻會(huì)議)
16.回環(huán)地址:
127.0.0.1 是一個(gè)回環(huán)地址,無(wú)論什么時(shí)候都可代表本機(jī)的IP地址(僅限在本機(jī)使用)
17.命令:
在cmd中輸入命令ipconfig_all 查看ip 的相關(guān)設(shè)置
18.什么是協(xié)議
由多人制定的一種規(guī)則.
19.socket
用socket去操作tcp udp 協(xié)議

?


面試題:
三次握手: 必須是客戶端先發(fā)起.
(1).客戶端發(fā)送請(qǐng)求給服務(wù)器;
(2)服務(wù)器回復(fù)客戶端;
(3)客戶端回復(fù)服務(wù)器.
四次揮手: 誰(shuí)發(fā)起都可以 其中一端連續(xù)發(fā)兩條.
(1).客戶端發(fā)斷開(kāi)請(qǐng)求給服務(wù)器:
(2).服務(wù)器回復(fù)確認(rèn)收到請(qǐng)求;
(3).服務(wù)器給客戶端發(fā)送準(zhǔn)備斷開(kāi);
(4).客戶端斷開(kāi)吧.
三.互聯(lián)網(wǎng)協(xié)議與osi模型.
1.互聯(lián)網(wǎng)協(xié)議按照功能不同分為osi五層.
2.OSI 五層模型:
應(yīng)用層 (.py文件 ,http,ftp, tftp)
傳輸層 (tcp , udp)
網(wǎng)絡(luò)層 (IP協(xié)議 路由器)
數(shù)據(jù)鏈路層 (arp協(xié)議 ,網(wǎng)卡)
物理層 (網(wǎng)線 , 光纖 ,集線器)
必背:
arp協(xié)議
tcp udp 的區(qū)別
tcp 三次握手 四次揮手
什么是協(xié)議
tcp協(xié)議編碼的流程
作業(yè):寫(xiě)一個(gè)聊天程序可支持一個(gè)服務(wù)器與多個(gè)客戶端通信 一個(gè)服務(wù)器多個(gè)客戶端
#服務(wù)器:
# import socket
# sk=socket.socket()
# sk.bind(("127.0.0.1",8802))
# sk.listen()
# while 1:
# conn,addr=sk.accept()
# while 1:
# msg=conn.recv(1024).decode("utf-8")
# print(msg)
# if msg=="q":
# break
# content=input(">>>").encode("utf-8")
# conn.send(content)
# if content=="q":
# break
# conn.close()
# sk.close()
#客戶端
# import socket
# sk=socket.socket()
# sk.connect(("127.0.0.1",8802))
# while 1:
# content=input(">>>")
# sk.send(content.encode("utf-8"))
# if content=="q":
# break
# msg=sk.recv(1024).decode("utf-8")
# print(msg)
# if msg=="q":
# break
# sk.close() tcp協(xié)議 輸出帶顏色的信息
#服務(wù)器:.
import socket
sk=socket.socket()
sk.bind(("127.0.0.1",8803))
sk.listen()
dic={"alex":"\033[0;35;42m","太白":"\033[0;33;40m"}
while 1:
conn,addr=sk.accept()
while 1:
msg=conn.recv(1024).decode("utf-8")
# print(msg)
name=msg.split(":")[0].strip()
# content=msg.split(":")[-1]
color=dic.get(name,"")
print(content)
print("%s%s\033[0m" % (color,msg))
if content=="q":
break
content=input(">>>")
conn.send(content.encode("utf-8"))
if content=="q":
break
conn.close()
sk.close()
#客戶端
import socket
sk=socket.socket()
sk.connect(("127.0.0.1",8803))
name=input("姓名:")
while 1:
content=input('>>>')
content1=name+":"+content
sk.send(content1.encode("utf-8"))
if content=="q":
break
mag=sk.recv(1024)
print(mag.decode("utf-8"))
if mag=="q":
break
sk.close()

轉(zhuǎn)載于:https://www.cnblogs.com/J-7-H-2-F-7/p/9326479.html

總結(jié)

以上是生活随笔為你收集整理的python全栈开发 * 32知识点汇总 * 180717的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。