1. 程式人生 > >python全棧學習記錄--3(2018.1.13) 計算機基礎知識

python全棧學習記錄--3(2018.1.13) 計算機基礎知識

傳輸 客戶 pytho 開源 dhcp服務 切換用戶 想要 有一個 去掉

一、Linux操作系統
1、unix是目前世界上最穩定,安全的系統。是分時操作系統,多個聯機終端和采用多道技術。
2、開源代表代表公開,所有人可以編輯查看,但不代表免費。
3、服務器要的是性能,穩定,效率,不間斷運行。故LINUX更能勝任,WINDOW不行,運行久了就會很卡。
4、橋接:用交換機的方式上網,相當於在局域網內多增加一臺電腦聯網。
5、虛擬內存一般設為物理內存的1.5-2倍,但不超過8G。物理內存大於4G就足以運行目前幾乎所有程序了,沒必要設置虛擬內存了。

二、網絡基礎之OSI五層協議
1、網絡通過電腦底層物理介質(網線,交換機,網卡等),由一個統一標準的互聯網協議鏈接起來。
2、OSI五層含義:物理層相當於字母,數據鏈路層相當於單詞、網絡層相當於句子、傳輸層相當於語法、應用層才是實際的對話交流。

3、以太網協議規定:一組電信號構成一個數據包,稱為幀。每一數據幀分成:報頭HEAD和數據DATA兩部分。
其中報頭head固定18字節,包含:發送者地址(源地址),占6字節、接收者地址(目標地址),占6字節、數據類型,占6字節。就類似信件的發送和接收者地址和信件是用什麽語言寫的。
數據data最短46字節,最長1500字節),具體包含數據包的具體內容,就類似信件的正文。
head+data=最短64字節,最長1518字節。超過了就分片發送。
4、網路傳輸流程:通過網絡設備(無線電波,電纜,光纖,雙絞線)基於高低電頻,實現數據在終端物理層間的傳輸;然後再數據鏈路層對數據進行分組,轉換成十進制數據,進而轉換成人類語言。
數據鏈路層定義了一個以太網協議,以太網協議規定了數據的分組方式,以太網規定所有想要聯網的機器都要有網卡。到這一步實現了局域網內的廣播式交流。
然後在網絡層通過IP地址和MAC地址找到目標電腦。
然後再傳輸層基於端口(TCP/UDP,每個應用軟件都有一個端口號,0-1024是給系統用的端口)找到接收軟件(因為通信是應用軟件之間的通信。)
然後到應用層:基於可自行定義的HTTP、FTP協議。其實就類似通過郵局之間的投遞信件。
5、MAC地址:就是報頭head包含的源地址和目標地址的由來。以太網協議規定每臺連入internet的設備都必須要又一個網卡,發送端和接收端的地址其實就是網卡的地址,即MAC地址。
一個人的體貌特征就是MAC, 而通信地址+人名相當於IP地址可以進一步類比,通信地址是IP中的網絡地址部分,人名相當於IP中的主機號部分你今天可以到這個國家, 明天可以到那個城市,通信地址(IP網絡地址部分)就會變化,也可以到派出所改名字(IP主機號部分), 但一個人的體貌特征(MAC)永遠不會變, 整容(修改MAC)不在討論之列, 它唯一標識了你這個人。如果郵件的是寄給“上海市X區Y街道Z幢M室 小明收”,最後郵件送達M室(IP所在網絡)的時候, 因為小明家裏可能不止一個人(多臺設備在同一個broadcast網絡裏),快遞員會問, ”誰叫小明, 你有一封信”, 然後小明說"我是小明", 郵遞員把郵件給到小明手中。還是沒看出這個過程中體貌特征(MAC)起到了什麽作用? 當小明說“我是小明”的時候, 郵遞員已經把“小明”這個名字和小明這個人體貌特征聯系起來了, 所以他會把信交到到小明的手中, 而沒有放到這個家裏的其他人的手中。
6、通信時,數據傳輸流程:發送數據包的時候:在應用層產生數據,在傳輸層封裝上報頭:發送者和接收者的MAC地址,傳送到網絡層並加上IP地址,再到數據鏈路層加上MAC地址,然到物理層打碎成計算機可識別的二進制數據。
接收數據包的時候:對方物理層收到的是二進制數據,數據鏈路層去除以太網頭MAC地址,再網絡層去掉IP,傳輸層去掉端口,然後到應用數據層。
三、網絡基礎之上網過程
1、DHCP服務器是分配動態IP地址的,IP地址是租用的。電腦沒開機前是沒有IP地址的,每次開機分配的IP地址都不一樣。就和你去旅遊一樣,今天在中國,明天可能在美國了。
2、DNS:域名解析服務。比如打開百度網址,可以打開IP地址,或更方便點直接打開www.baidu.com. (後面有一個點,叫根域名,通常省略)域名。COM叫頂級域名,baidu叫下一級域名。不過在輸入域名訪問時,還是得讓DNS轉換成IP地址。
3、訪問網站時,DNS先訪問本地DNS和緩存DNS,如果有直接返回解析結果,如果沒有則訪問根DNS。
DNS分本地DNS、緩存DNS和根DNS。而如果要訪問根DNS,則速度慢。
4、DNS查詢走的是UDP協議(只管發送,最大有效傳輸數據量只有500多節,所以根DNS服務器只有13臺)9臺在美國,一臺在日本,1臺在瑞典,2臺在歐洲。
四、三次握手和四次揮手
1、應用軟件產生的數據到了傳輸層後,找到了接收軟件後,但這不是目的,最終目的是與之通信。
2、TCP的三次握手和四次揮手:
技術分享圖片
通信時的三次握手:
A、客戶端先要發一個請求到服務器,請求會打上一個標誌位SYN(代表客戶端要建立一條到服務器的鏈接,鏈接是以標準協議發送的)同時發送seq=x,然後服務器返回ACK=x+1,表示同意,然後客戶端能和服務器能對話了。同理服務器對客戶端發送進行同樣的請求,這樣服務器就能和客戶端也能對話,這樣雙向通路就建立好了。
SYN seq=y表示服務器想客戶端發送對話請求,ACK=X+1表示服務器同意客戶端的對話請求。ACK=y+1表示客戶端同意服務器的對話請求。然後準備吧消息通過網卡發送給目標電腦,此時工作於應用層,處於用戶態,ACK x+2表示服務器收到客戶端發來的消息,然後切換到內核態,由網卡發送出去。所以ACK x+2是切換用戶態到內核態的信號。然後同時清除客戶端上的緩存。
B、UDP協議只管發送,發送後就清除緩存(因為緩存占用的是內存),不管對象存不存在,萬一斷網了,對方收不到數據,顯得不可靠,所以要結合TCP協議,TCP得等對方確認收到消息後才清除緩存。
斷開鏈接時的4次揮手:
A、數據發送完了得斷開鏈接,不然占用網絡資源。
B、客戶端數據傳輸完後,發送斷開請求(標誌位為FIN)給服務器,然後服務器返回ACK確認,這條線就斷開。服務器和客戶端斷開也同理。就是四次握手了。
C、斷開連接時,四次不能合並為3次。因為客戶端數據傳完時,服務器的數據傳輸並不一定就斷開了。

python全棧學習記錄--3(2018.1.13) 計算機基礎知識