進擊のpython
網絡編程——層級了解
前面也提到了,就是計算機們要是想互相玩耍,就必須要接入internet
-
物理層
最起碼你得連接網線吧(說用無線的稍一稍),連接的網線就是物理層
還有什么光纜啊,電纜啊,無線電波啊什么雜七雜八的,他能干什么呢?
你想啊,這個電啊,有兩種狀態,高和低,那也就對應着計算機的二級制1和0
那我們就可以根據高低電平的變化來傳輸數據
畢竟1和0也是帶有數據的嘛!那物理層的作用就出來了!
物理層功能:主要是基於電器特性發送高低電壓(電信號),高電壓對應數字1,低電壓對應數字0
-
數據鏈路層
數據鏈路層,你可以不用太糾結,你只需要知道他是干什么的就行
我們剛才啊,在物理層知道了我們將信息通過1,0傳輸
但是單純的1,0是沒有意義的,我們必須要有個規定
規定一下電信號多少位一組,每組是什么意思才行
那,這個工作就交給了數據鏈路層
數據鏈路層的功能:定義了電信號的分組方式
而這里,就用到了我們的第一個協議:以太網協議
以太網協議是用來干什么的呢?
假設我要給你發快遞,除了要把東西打包以外
是不是還要寫寄件人收件人和寄貨信息呢?
那計算機怎么知道你就是你呢??
於是大家一研究,得了!就用每個電腦獨一無二的mac信息當作信息識別吧
並且在發送信息之前,在信息的開頭添加發送人的mac信息,收信人的mac信息,還有數據類型
這一坨信息,我們就管他叫報頭.
現在信息打包了,我要怎么發出去呢???
現在的信息傳播方式是"廣播方式"
什么叫廣播?
咱倆在一個有很多人的屋子
然后我就嗷嘮(喊)一嗓子!"XXX你的快遞!"
然后你聽到了,也嗷嘮(喊)一嗓子!"我在這捏!"
然后我就把東西給你了!這種方式就叫廣播!
你也看到局限性了吧,你要是不在這個屋子
那我喊完了你也聽不到,那信息就沒辦法傳達
這個屋子就是計算機的局域網!
所以,以太網的信息傳輸是在局域網內展開的
-
網絡層
那看完數據鏈路層你就有疑問了,那我不在同一個局域網,怎么辦?
也就是說,如果在同一個局域網,我就廣播,如果不在同一個局域網,我就有一種別的方法
吶!網絡層的作用出來了
網絡層功能:引入一套新的地址用來區分不同的廣播域/子網,這套地址即網絡地址
在這里我們要了解第二個協議:IP協議
其實IP協議和以太網協議差不多(細分的話,自己去百度吧)
他的作用就是找你在哪個屋子,然后好去吼你
也是在我要傳的信息前面加一個報頭!
這樣我要傳的信息就變成了 IP報頭+以太報頭+信息 這種形式了
這里吧,應該詳細的說一下,但是我建議你自己去查查
鍛煉一下自學能力好不啦鐵汁
-
傳輸層
現在我通過上面的兩層,指定能找到你了吧
好,那我找到你了,我是不是把信息給你了?
但是你打不開啊,因為我得傳給你的QQ上才行啊
那我把本該傳給QQ的信息傳給快播,那也不行啊
那問題就來了,我如何在你那么多的應用里找到QQ呢?
在計算機里啊,因為有網卡嘛,然后就把每個應用都分配個端口
比如我的電腦的QQ的端口是80,那你的電腦的QQ的端口就也是80
我這面的信息,再加上端口,傳到你這,就通過端口來找你電腦上的應用
這樣就達到了應用之間的信息傳遞,誒嘿!傳輸層的作用就來了
傳輸層功能:建立端口到端口的通信
在這,我們還要知道兩種協議:UDP協議和TCP協議
這兩種協議呢,稍后再說,現在你知道這有兩種協議就行
-
應用層
應用層就很好理解了,就是你電腦里面的軟件,放着的位置就是應用層
那其實我們這個順序是接收的順序
如果按照發送的來講的話,就是把這個順序倒過來
也就是說,我們一般發信息,是發出了這樣的鬼東西
以太網頭+IP頭+UDP/TCP頭+信息