[Course 1 — Technical Support Fundamental] Google IT Support Specialist

最近開始上了 Google 在 Coursera 上面開的 Google IT Support Specialist,現在上到第二堂課,在講網路基礎,蠻困難的,想趁寒假有空的時候把之前的東西複習一次,順便自己把這些東西翻譯成中文,查一些補充資料,捋清楚所有的脈絡。

Week 1 — History

第一週前幾堂就是在講 IT Support 在做什麼與一些歷史,也有一些在 Google 內部工作的人的心路歷程。在這裡就先抓幾個我認為比較重要的點,其他就先跳過不提,有興趣的人可以自己去找這門課來上。有個蠻重要的概念叫做 Abstration,大家可以先看看 Google 在課程中給的定義:

Abstraction: To take a relatively complex system and simplify it for use

定義給得十分明確,就是把複雜的系統簡單化,使其可以被直觀地使用。好比說一台電腦,電腦本身背後的結構十分複雜,從硬體至 BIOS、OS、User 各層等等的,但使用者可以不需要知道背後的結構就能夠使用這台電腦,這多虧了 Abstration 的功勞。又好比說開車,開車你並不需要了解太多關於車子的軟硬體是怎麼運作的,只要知道怎麼開車就好,這個概念被十分的廣泛運用。

再來課程中提到了電腦可以被分成四個 layer(層級),分別是 Hardware>Operating System>Software>User。Hardware 也就是硬體,組成電腦的所有物理零件皆是硬體。Operating System 是作業系統,他的功能是使硬體能夠與系統連結。Software,軟體層,能使人類與電腦互動,User則是最直觀的使用者端。

第一週就這麼結束了,並不複雜。

Week 2 — Hardware

第二週的部分主要是在陳述硬體,也就是一台電腦的結構為何,在這週結束後,理論上你能具有能力組裝一台電腦,並且知道各電腦零件的用途為何。以下是一些定義與我的翻譯。

Port:中文可以翻成端口或埠,主要是信息出入口之一,Google 給的定義是:Connection points that we can connect devices to that extend the functionality of our computer,也就是一個連接點,使我們能夠接其他設備,延展電腦功能。

CPU(Central Processing Unit):中央處理器,或者大家會直接叫他 CPU,是電腦的大腦,處理所有的運作與資料。而在 CPU 中有更小的零組件 — Register,用途是讓我們儲存 CPU 所使用的數據。當你選擇 CPU 的時候,務必要與主機板相容。

RAM(Random Access Memory):隨機存儲記憶體,但更多人會叫他 RAM,是電腦的短期記憶體。是 volatile 的,意思是關機資料後就會消失。

Hard drive: 硬碟,儲存著我們所有的資料。分為 SSD 與 HDD。

Motherboard:主機板,算是電腦的「身體」,能把所有的零組件都組合在一起。

Program:程式或程序,告訴電腦要做什麼的指示。他這裡舉了一個例子,程序就像一本食譜一樣,而大廚是 CPU,因為 CPU 的閱讀時間太快,所以我們會把食譜的副本暫時放進 RAM 之中,而 RAM 則會將訊息儲存在 CPU 可以訪問的位置,以方便 CPU讀取。

External Data Bus(EDB):但這些指示是怎麼在電腦這個二進位系統中被傳遞的呢?這時候就需要 EDB,EDB 介於 CPU 與 RAM 之間,但不直接傳遞資料給 RAM,是一排電線,連接電腦各個零組件,當你傳輸電壓時,EDB 呈現開啟狀態(也就二進位的1),反之,關閉則為0。

Memory Controller Chip(MCC):內存控制器,因為 EDB 只能發送一行或者是數行數據,所以需要 MCC 的幫忙,MCC 是 CPU 與 RAM 之間的橋樑。而他是怎麼運作的呢?舉個例子,CPU 想要取得第三步指示的說明,CPU 便會告訴 MCC 說,我想取得第三步指示的說明,而 MCC 則會透過 EDB 向 RAM 取得說明後,再回傳 CPU。

Address Bus:它連接了 CPU 跟 MCC,但他傳輸的是數據在的位置,而非數據本身,然後 MCC 透過這個位置去尋找資料,並把資料透過 EDB 回傳回去給 CPU。

Cache:快取,比 RAM 小但更快,更常儲存資料,能夠使數據更快的被引用。而 Cache 在 CPU 內部則分為三級, L1, L2, L3,而 L1 是最快的。

但 CPU 是怎麼知道指令何時結束,何時開始新的指令呢?CPU 內部有個零件,叫做 Internal Clock,它連接了一個特殊的電線,叫做 Clock Wire,當發送或接收數據的時候 Internal Clock 會向這條線發送電壓,於是 CPU 便知道何時開始進行運算。每當 Clock wire 發送一次電壓,就叫做 Clock cycle。而大家在 CPU 上看到的 Ghz 數就是代表他在某特定時段下,最多可以運行多少次的循環。不過,有個例外叫做 Overclocking,可以使 CPU 超頻運算。

至於電腦的配件,他們是怎麼運作的呢?因為這些配件上並沒有 CPU 需要的「指示」,於是需要安裝 Driver,也就是驅動程式,讓 CPU 知道怎麼運行他們。

以上大概就是硬體的基本介紹,接下來進到所謂的 BIOS。

Basic Input Output Services(BIOS):是一種軟體,可以幫助我們初始化電腦中的硬體,使我們的 OS 可以成功運行。而 BIOS 在的地方是主機板的 Read-only chip(ROM)上,而非硬碟,ROM is non-volatile,也就是關機後資料不會不見。開機時的逼逼聲是他在進行 Power-on self test(POST) ,發生在 BIOS 加載任何驅動程式之前。

Unified Extensible Firmware Interface(UEFI):是 BIOS 的新型版本,更加現代化,支援更多現代硬體。

第二週大概就是這樣,如果有錯歡迎指正,謝謝閱讀。

Week 3

Google 對於 OS 的定義是這樣的:The whole package that manages our computer’s resources and lets us interact with it。簡單來說,就是一個套件,能夠管理資源並且讓我們與電腦互動。而 OS 又分成兩塊, User space 跟 Kernel space,Kernel space 跟硬體連接在一起,User 則會跟 User space 互動。

至於 Kernel 的功能是什麼呢?Kernel 會最佳化記憶體的使用,去保證我們的程序能夠有足夠的記憶體去運行,除了這個之外,還有以下四個功能:

File management:

在陳述檔案管理之前,必須先陳述檔案的種類有哪些,分別是 data、metadata、file system。metadata 指的是這筆資料的創立人、創立時間、檔案類型(extension)等。File system 的部分,Window — NTFS、Mac OS — APFS、Linux — ext4,很難跨系統存文件。至於他們是怎麼管理文件的呢?他們會先把寫進硬碟的資料變成 data block,這樣可以更方便讀取。

Process management:

在這裏,要先解釋 Process 跟 Program 的差別,Google 的定義是這樣的:

Process: a program that’s executing, like our internet browser or text editor.

Program: an application that we can run, like Chrome.

看起來有點模糊,對吧?舉個例子來解釋 Process 就像當你運行了 Google Chrome 時,你可以一次開啟很多分頁,每一個分頁都是一個 Process,至於 Program,就是我們能夠執行的應用程式了。所以我們可以同時在同一個 Program 運行很多 Processes。

但是 CPU 是怎麼處理這些多進程(Process)的呢?它其實是透過 Time slices,去分配給每個 Process,什麼是 Time slice 呢?Google 的定義是這樣的:A time slice is a very short interval of time that gets allocated to a process for CPU execution. 也就是說,他是把時間分成幾個很短的區間,並且輪流分配到各 Process,好讓 CPU 去執行,每個 Process 其實都是單獨執行的,只是他們的速度太快,快到我們以為他們是同步執行的。

Kernel 創造了 Process,並有效率的安排他們,也同步安排這些 Process 要何時結束。

Memorial management

當 Process 在進行時,會佔用到記憶體,然而,相較於硬碟,記憶體的容量較小,因此有個東西出現了:Virtual memory — a combination of hard drive space and RAM that acts like memory that our processes can use. 從字面上的意義來看,這是一個虛擬的記憶體,但為什麼我們要這麼做呢?為什麼我們不把程序直接存在 RAM 中呢?

如果這個程序夠小就可以,但因為有些程序太大了,會導致這樣很沒有效率。就像食譜一樣,你不需要閱讀一整本食譜,就為了做一道菜。而當我們把我們的硬碟分割,這個空間就叫做 Swap space。

當我們執行一個 Process,我們會先拿從程序拿資料(in chunks),這些資料配稱作為 Pages,接著我們儲存這些 Pages 在虛擬記憶體中,當我們想要讀他時,從需要把資料傳輸到 RAM 上,如此可以減少很多沒有正在使用的程式的功能所造成的記憶體浪費。

Input/output(I/O) management

簡明扼要而言,就是電腦的各個端口。

其餘就是一些定義:

Logs: files that record system events on our computer.

這週的後續在建立 Virtual Machine,以後也許有機會會提到,在此就先跳過。

如有錯誤歡迎指正,謝謝閱讀。

Week 4

第四週則是講起了網路的基本架構,算是我認為第一堂課最困難的一個章節,我會試著就我的理解去書寫。

Basic of Networking

一些定義:

Network: The interconnection of computers

Internet: An interconnection of computers around the world

Networking: In the IT field, managing, building and designing networks is known as networking

The Web: The information on the Internet

簡單來說,只要是兩台電腦連結在一起,就可以稱為 Network。在同一個 Network 之下,電腦們可以互相對話和傳遞訊息給彼此。而所謂的 Networking 指的就是建立、管理與設計 Network 的技術。而 Internet 則是 Network 的延伸版,延伸到了全球,而 Web 則是在 Internet 上面的資訊。

我們並不是直接連接到 Internet 的,而是透過 Server 直接連接到 Internet。Server 儲存我們使用的網站(These website “serve” contents),另外一端叫做 Client,例如我們的電腦、手機等等。Client 則是向 Server 請求內容,但 Client 並不直接連接到 Internet,而是連接到 ISP(Internet Service Provider),這些 ISP 在連接到其他 Network,最後構建起了 Internet。然而,Client 是怎麼知道如何訪問 Server 的呢?

試想你在寄信,你會在信上寫上收信人的名字(MAC address)跟地址(IP address)。MAC address 通常是永久性的,而且是編碼在硬體上的,而 IP address 是浮動的,通常我們是靠 IP address 登陸這個網站。當你想要在 Network 上傳送或接收訊息時,兩個 address 都需要。

還有一件事要提及的是。當我們需要傳輸這些數據的時候,我們會把它分解為 Packet(數據包),並透過它去傳輸。當 Packet 抵達目的地時,他會再重新排序成數據原本的樣子。這是什麼意思呢?拿這件事來舉例:

小明想要在 Google 搜尋貓的圖片,在他這麼做之前,他的電腦會傳遞 Packet 去詢問 Google 能否進入他們的網站。而我們的 Packet 知道 Google 的 IP address 在哪,但他並不知道如何到達那邊,於是他會輾轉的經由好幾個中繼站,最終抵達 Google(Server),而此時,Google 會回傳內容給小明(Client),小明就能搜尋無數的貓的圖片了。

Networking Hardware — How they connected

Way to connect it:

Ethernet cable: lets you physically connect to the network through a cable

Wi-Fi(Wireless networking)

Fiber optic cables: most expensive, but faster

然而,Cable 仍須連接其他設備,好幫忙組織我們的 Network,首先是 Router:

Router(路由器): It connects lots of different devices together and helps route network traffic.

假設現在有四台電腦,在同一個 Network 下,連接了這個 Router,那 A 電腦要怎麼傳輸數據給電腦B呢?我們的 Packet 會透過 Router 去傳輸,而 Router 又運用了網路協議(network protocol),去協助決定傳輸這個 Packet 至什麼地方。

如果想傳輸 Packet 到不同 Network 呢?首先,Router 會把 Packet 從本地 Network(LAN)丟到 ISP network,透過網路協議,就可以知道目的地電腦在哪裡,但是他一樣不知道怎麼到達那邊,因此他會輾轉經過很多 Router, Switches and Hubs。Switches 跟 Hubs 都是能幫助我們數據傳輸的設備。

那什麼是 Switches 呢?試想你在寄信,Switches 就像是收發室一樣,Router 把我們的信件送達到收發室,此時,我們就會用收發室來找出收信的地方。Hubs 就像公司備忘錄,因為不知道要傳輸給誰,因此會把 Memo 傳遞給網路中的所有人。

而當我們是 IT support 的時候,可能要先從 Network stack 開始確認,先確認用戶的電腦沒事,再來確認電腦的網路狀況沒事。

Network stack: A set of hardware or software that provides the infrastructure for a computer. 也就是組成電腦網路的所有組件。

Language of the Internet — Internet Protocol

如上述所說,網路協議的用途在於成功地讓 Packet 抵達終點站。試想,網路協議其實就是一連串的規則,攸關於我們如何在網路上傳遞資料。

TCP/IP(Transmission Control Protocol and the Internet Protocol): The predominant protocols of the Internet

IP — Deliver our packet to the right computer

TCP — Deliver information from one network to another

TCP/IP 上述解釋得很清楚,不贅述。值得一提的事情是,在後續的課程會提到 TCP/IP 其實是兩層不同的協議,而除了 TCP 之外,還有 UDP 協議。

The Web — The most common way to access Internet

一些定義,不多提。

Websites are basically text documents that we format with HTML, or hypertext markup language.

URL: Stands for Uniform Resource Locator, is just a web address similar to a home address. e.g. www.reddit.com — www(world wide web)+reddit.com(domain name)

Domain name: Once a name is taken, it’ll be registered to ICANN, the Internet Corporation for Assigned Names and Numbers.

e.g. 172.217.6.46 maps to Google’s homepage through a critical web protocol, Domain Name System, or DNS. With DNS, it’s able to map IP address to google.com

DNS: Likes our Internet’s directory and lets us use human readable words to map to an IP address.

DNS 系統就像是 Internet 的目錄,讓我們可以從一串數字轉成人們看得懂的文字。電腦並不知道 www.google.com 是什麼,只知道如何獲取 IP 地址。每次你訪問網站時,電腦都會透過 DNS 查找,也就是說,他可以透過 www.google.com 去映射 Google 的 IP 地址。

有時候你可以透過 IP 抵達網站,卻不能透過一般網域名抵達,那可能就是有 DNS 上的問題了。

關於 Google IT Support Specialist 的第一堂課,筆記就到此為止,第五週與第六週沒什麼重點,謝謝你的閱讀,有錯誤歡迎指正。

理科與藝術交織成靈魂的會計人,喜愛戲劇與攝影,但也喜歡資料科學。

理科與藝術交織成靈魂的會計人,喜愛戲劇與攝影,但也喜歡資料科學。