python 網絡的三種架構

網絡的三種架構

單機架構

不用聯網,好比咱們玩的單機遊戲瀏覽器

CS架構

client: 客戶 server:服務服務器

客戶端-->服務端網絡

BS架構

brower 瀏覽器 server 服務架構

客戶端嫁接在瀏覽器上-->服務端(bs爲cs的一種)tcp

互聯網的組成

教材版

1.邊緣部分: 客戶端或者服務端視頻

2.核心部分:路由器,基站server

科普版

1.硬件:一些硬件設備blog

2.軟件:經過一些OSI協議組織無序的電信號爲有序遊戲

OSI七層協議(==面試常常問==,能夠參考老師的示範,MP3文件)

物理層

電纜,光纜,能看得見的設備,鏈接計算機,傳輸電信號

數據鏈路層(局域網內)

把信號分組,數據只能在局域網內傳輸,局域網傳輸靠mac地址和交換機

head(以太網頭)

​ 發送地址 6 個字節

​ 目標地址 6個字節

​ 數據類型 6個字節

data 有長短限制

mac地址纔是計算機的惟一編號

以廣播的形式傳輸

網絡層(局域網相連)

咱們想鏈接其餘局域網的電腦,好比美國的電腦,原則意義上咱們能夠經過交換機,網線把美國的電腦鏈接上,想一想這可能嗎?是否是想一想都很恐怖

那如何鏈接上其餘局域網的計算機呢?就是網絡層

IP地址,IP地址是靠路由器傳輸,而後就能夠跨局域網通訊

咱們能夠獲取本身的IP地址,在cmd中輸入ipconfig,就能夠看到本身的IP地址

IP地址+mac地址肯定世界獨一無二的計算機

傳輸層

傳輸層給了一個端口

IP地址+mac地+端口就能肯定世界上獨一無二的計算機上的應用程序

應用層

應用程序

TCP 協議

數據從客戶端-->服務端的協議

三次握手創建聯繫

若是你要去服務端下載視頻,客戶端和服務端之間必須得鏈接,鏈接就是三次握手:

在鏈接以前客戶端和服務端都是出於關閉狀態的

1.客戶端會像服務端發起一個請求,以下載視頻,會有一個syn報頭

2.服務端會接收到客戶端的請求,而後會響應客戶端,而且把syn報頭改裝好後又返回客戶端,會有ACK的報頭

3.客戶端開始進入創建鏈接狀態,再發一條請求,請求帶上ACK給服務器,讓服務器也進入鏈接狀態

爲何要三次呢?

1次能夠嗎?爲何

1.客戶端直接進入鏈接狀態,直接發送請求給服務端,直接進入鏈接狀態

弊端:假使這時客戶端發送一個僞IP,直接發給服務端,服務端就立馬進入鏈接,會致使服務端無效傳輸,浪費服務端的資源

2次能夠嗎?爲何

1.客戶端暫不進入鏈接狀態,發一條請求給服務端

2.服務端直接進入鏈接狀態,發送一條肯定請求給客戶端,客戶端收到直接進入鏈接狀態

弊端: 通常服務端不會出現故障,死機之類的,客戶端比較容易出現這種問題,假使在第2步的時候,客戶端死了,這時服務端知道嗎?並不知道,仍是照舊傳輸數據,也會形成服務端資源的浪費

綜上就是必須3次就能夠進行創建鏈接

四次揮手關閉鏈接(爲何3次不行)

1.客戶端會發送請求帶上FIN報頭給服務端說我夠了,要斷開鏈接

2.服務端接收到客戶端的請求後,返回一個帶有ACK報頭的請求說確認了,還有數據沒有傳完,等會吧

(1.FIN報頭並無返回 2.可是服務端此時還有可能傳輸數據)

3.服務端數據傳輸結束以後服務端又會發送一次帶報頭FIN的請求,告訴客戶端我全部數據都發完了,結束吧

(若是隻有三次鏈接,可是客戶端可能在第二次鏈接後死掉了,客戶端壓根沒有收到第2-3步之間的數據傳輸,服務端並無管你客戶端到底接收到了沒有,而後服務端是發送給了你確認關閉)

4.因此必須得有第四次,客戶端像服務端進行一次確認,我收到了你中途發的數據

相關文章
相關標籤/搜索