1. 程式人生 > >計算機網絡基礎

計算機網絡基礎

mozilla 子網掩碼 默認 現在 sci tex 設計 servers 便宜

計算機網絡基礎

1.1 什麽是互聯網協議

英語成為世界上所有人通信的統一標準,如果把計算機看成分布於世界各地的人,那麽連接兩臺計算機之間的internet實際上就是 一系列統一的標準,這些標準稱之為互聯網協議,互聯網的本質就是一系列的協議,總稱為‘互聯網協議’(Internet Protocol Suite).

互聯網協議的功能:定義計算機如何接入internet,以及接入internet的計算機通信的標準。

為何要有互聯網協議?

一臺硬件設備有了操作系統,然後裝上軟件你就可以正常使用了,然而只能自己使用,每個人都擁有一臺自己的機器,彼此孤立,為了能讓孤立的機器之間彼此通信,由此產生了互聯網協議。

1.2 OSI七層模型

1.2.1 OSI的概念:

Open system interconnect開放系統互連參考模型,是由ISO(國際標準化組織)定義的。是個靈活的、穩健的和可互操作的模型,並不是協議,是用來了解和設計網絡體系結構的。

1.2.2 OSI模型的目的:

規範不同體系的互聯標準,使兩個不同的系統能夠較容易的通信,而不需要改變底層的硬件或軟件的邏輯

OSI模型分為7層:

OSI把網絡按照層次分為7層,由下到上分別為物理層,數據鏈路層,網絡層,傳輸層,會話層,表示層,應用層。

為什麽分為7層?

技術分享

上層分為(boss秘書 商務)

秘書可以負責將信息進行編碼,然後將數據加密和壓縮等,將BOSS的信息傳給商務部

傳輸層(銷售部/采購部)

作為一個傳輸的通道,進行長期的連接,可以將從上層獲得的流量進行一個分段。

①進行連接會話的建立,並且可以是可靠的連接

②將上層的數據進行分塊/分段

網絡層(郵局):將流量送到目的地,是一個尋址的概念,並且把上層分好段的設備進行一個打包

數據鏈路層:將打包的設備運輸到家門口,進行拆包,分給公司內部的每個人,也負責將上層的打包分派給底層的搬運工

物理層:就相當於搬運工

OSI 7層模型的結構

技術分享

技術分享

層次

說明

功能/協議

應用層

應用程序及接口,類似於公司老板

提供應用程序的接口FTP、telnet、http、pop3等

表示層

對數據進行轉換,加密和壓縮

將上層的數據進行轉換和編譯壓縮為標準的文件,如jpg,gif,ascii碼等

會話層

建立、管理和終止會話

傳輸層

提供可靠的端到端的報文傳輸和差錯控制,實質上就是負責建立連接的

TCP UDP 建立可靠的和非可靠的連接將上層的數據進行分段處理

網絡層

將分組從源端傳送到目的端,提供網絡互聯

實質上就是提供路由尋址(IP協議)

將上層分段的數據進行打包

數據鏈路層

將分組數據封裝成幀,提供節點到節點方式的傳輸

幀就是本地局域網中傳輸數據的一個單元,負責在局域網內部的點對點的尋址

物理層

在媒體上傳輸比特

就是底層的鏈路介質的規範

特點說明:

1、 OSI模型每層都有自己的功能集

2、 層與層之間相互獨立又互相依靠

3、 上層依賴於下層,下層為上層提供服務

1.2.3 OSI層次---應用層

技術分享

主要就是提供應用程序可以接入網絡的接口,並根據程序的不同對應不同的接口協議。

1.2.4 OSI層次---表示層

技術分享

1.2.5 OSI層次---會話層

技術分享

1.2.6 OSI層次---傳輸層

技術分享

負責網絡中端到端的連接(TCP UDP)

1.2.7 OSI層次---網絡層

技術分享

網絡層的主要作用就是路由和尋址,主要接觸到的是IP協議即IP地址。

網絡層:對應設備有路由

路由器的作用:

1、廣播、組播控制

2、對數據做尋址、選擇達到目的的網絡的最佳路徑

3、流量管理

4、連接廣域網(WAN)

IP地址的概念說明:

技術分享

根據地址的概念,來據舉例介紹網絡號主機號的概念,以及路由尋址和路由的概念

1.2.8 OSI層次---數據鏈路層

技術分享

數據鏈路層:MAC層 –IEEE 802.3協議,MAC地址是48bit的

技術分享

IP地址是三層地址,那麽mac地址就是二層地址,全球網絡設備唯一的地址

作用的域不同:IP作用在不同的網絡之間,MAC地址作用在相同的網絡內部

MAC地址48位的地址,采用16進制進行表示

MAC地址是硬件地址,IP地址會被看作是邏輯地址

數據鏈路層:對應設備有交換機

技術分享

1.2.9 OSI層次---物理層

技術分享

就是逐個的bit進行傳輸的過程

網絡物理連接介質

網線

要連接局域網,網線是必不可少的,在局域網中常見的網線主要為雙絞線。雙絞線是由許多對線組成的數據傳輸線。它的特點就是價格便宜,所以被廣泛應用,如我們的電話線等。它是用來和RJ45水晶頭相連的。

制作規範

568A

568B 線序:橙白 橙 綠白 藍 藍白 綠 棕白 棕

技術分享

技術分享

光纖線

技術分享

1.2.10 OSI層次模型總結

OSI七層模型功能就類似於人傳遞信息,會用一句話傳遞,而一句話又是多個詞組成的,而每個詞又是多個字組成。

1.3 TCP/IP 協議簇(DoD參考模型)

用於簡化OSI層次,以及相關的標準

1、 傳輸控制協議(tcp/ip)族是相關國防部(DOD)所創建的,主要用來確保數據的完整性及在毀滅性戰爭中維持通信

2、 是由一組不同功能的協議組合在一起構成的協議簇

3、 利用一組協議完成OSI所實現的功能

技術分享

1.3.1 TCP/IP 協議簇中的相關協議

技術分享

TCP/IP 協議簇---應用層

技術分享

TCP/IP協議簇---主機到主機層

技術分享

TCP與UDP對比

傳輸控制協議(TCP)

用戶數據報協議(UDP)

面向連接

無連接

可靠傳輸

不可靠傳輸

流控

盡力而為,盡力傳輸

使用TCP應用:

WEB瀏覽器;電子郵件;文件傳輸程序

使用UDP的應用:

域名系統(DNS);視頻流;IP語音(VoIP)

TCP相關報文結構

技術分享

源端口:即本地發起連接的端口

目標端口:即要訪問的服務的端口

序列號:因為傳輸層會將上層的數據進行分段,因此需要對分段數據進行編號同時也便於數據的重組

驗證號:用於對數據進行驗證

UDP相關報文結構

技術分享

技術分享

1、 源端口隨機分配,目標端口使用知名端口

2、 應用客戶端使用的源端口號一般為系統中未使用的且大於1023的

3、 目的端口號為服務端應用服務的進程,如telnet為23

1.3.2 TCP 三次握手過程

技術分享

位置概念:根據TCP的包頭字段,存在三個重要的標識ACK、SYN、FIN

1、 ACK:表示驗證字段

2、 SYN:位數置1,表示建立TCP連接

3、 FIN:位數置1,表示斷開TCP連接

4、 ctl : 發送請求

技術分享

建立過程說明:

① 由主機A發送建立TCP的連接請求報文,其中報文中包含seq序列號,是由發送端隨機生成的,並且還將報文中SYN字段置為1,表示需要建立TCP連接

② 主機B會回復A發送的TCP連接請求報文,其中包含seq序列號,是由回復端隨機生成的,並且將回復報文的SYN字段置1,而且會產生ACK字段,ACK字段數值是在A發過來的seq序列號基礎上加1進行回復,以便A收到信息時,知曉自己的TCP建立請求已得到了驗證

③ A端收到了B端發送的TCP建立驗證請求後,會使自己的序列號加1表示,並且再次回復ACK驗證請求,在B端發送過來的seq基礎上加1,進行回復

技術分享

① 一開始,建立連接之前服務器和客戶端的狀態都為CLOSED。★★★

② 服務器創建socket後開始監聽,變為LISTEN狀態。★★★

③ 客戶端請求建立連接,向服務器發送SYN報文,客戶端的狀態變為SYN_SENT。★★★

④ 服務器收到客戶端的報文後向客戶端發送ACK和SYN報文,此時服務器的狀態變為SYN_RCVD。★★★

⑤ 然後,客戶端收到ACK、SYN,就像服務器發送ACK,客戶端狀態變為ESTABLISHED。★★★

服務器收到客戶端的ACK後也變為ESTABLISHED。此時,3次握手完成,連接建立!★★★

1.3.3 TCP 四次揮手過程

技術分享

斷開過程說明:

① 主機A發送斷開TCP連接請求報文,其中報文中包含seq序列號,是由發送端隨機生成的,並且還將報文中FIN字段置為1,表示需要斷開TCP連接

② 主機B會回復A發送的TCP斷開請求報文,其中包含seq序列號,是由回復端隨機生成的,而且會產生ACK字段,ACK字段數值,是在A發過來的seq序列號基礎上加1進行回復,以便A收到信息時,知曉自己的TCP斷開請求已得到了驗證

③ 主機B在回復完A的TCP斷開請求後,不會馬上就進行TCP連接的斷開,主機B會先確保斷開前,所有傳輸到A的數據是否已經傳輸完畢,一旦確認傳輸數據完畢就會將回復報文的FIN字段置1,並產生隨機seq序列號。

④ 主機A收到主機B的TCP斷開請求後,會回復主機B的斷開請求,包含隨機生成的seq字段和ACK字段,ACK字段會在主機B 的TCP斷開請求的seq基礎上加1,從而完成主機B請求的驗證回復。

至此,TCP連接斷開的四次揮手過程完畢。

技術分享

由於TCP連接是全雙工的,斷開連接會比建立連接麻煩一點

①客戶端先向服務器發送FIN報文,請求斷開連接,其狀態變為FIN——WAIT1.

②服務器收到FIN後向客戶端發生ACK,服務器狀態變為CLOSE——WAIT。

③客戶端收到ACK後就進入FIN——WAIT2狀態。此時連接已經斷開一半了,如果服務器還有數據要發送給客戶端,就會繼續發送

④直到服務器發完了所有數據,就會發送FIN報文,此時服務器進入LAST_ACK狀態。

⑤客戶端收到服務器的FIN報文後,馬上發送ACK給服務器,此時客戶端進入TIME_WAIT狀態

⑥再過了2MSL長的時間後進入CLOSED狀態。服務器收到客戶端的ACK就進入CLOSED狀態。

至此,還有一個狀態沒有提及:CLOSING狀態

CLOSING狀態表示:

客戶端發生了FIN,但沒有收到服務器的ACK,卻收到了服務器的FIN。這種情況發生在服務器發送的ACK丟包的時候,因為網絡傳輸有時會有以意外。

TCP的十一種狀態轉移總結

狀態出現方式

狀態出現環境

狀態名稱

狀態描述

TCP建立過程涉及5種狀態

服務端/客戶端

CLOSED

默認初始化關閉狀態

服務端

LISTEN

建立socket,進入監聽狀態

客戶端

SYN_SENT

發送syn報文,進入syn發送狀態

服務端

SYN_RCVD

接收syn報文,並回復ack及syn報文

客戶端/服務端

ESTABLISHED

接收syn報文,回復ack,建立連接(客戶端)

接收ack報文,建立連接(服務端)

TCP斷開過程涉及6種狀態

服務端/客戶端

ESTABLISHED

默認斷開前初始化狀態

客戶端

FIN_WAIT1

發送斷開請求FIN報文

服務端

CLOSE_WAIT

收到FIN後向客戶端發送ACK

客戶端

FIN_WAIT2

收到服務端返回的ACK報文,等待數據傳輸

服務端

LAST_ACK

發送FIN斷開請求報文

客戶端

TIME_WAIT

回復FIN斷開請求,發送ACK報文

服務端/客戶端

CLOSED

收到ACK報文,立刻轉變為斷開狀態(服務端)

等待2MSL後,進入斷開狀態(客戶端)

客戶端

CLOSEING

沒有收到回復FIN報文的ACK,直接收到FIN

1.4 用戶上網流程

1.4.1 本機獲取

本機的IP地址:192.168.1.100

子網掩碼:255.255.255.0

網關的IP地址:192.168.1.1

DNS的IP地址:8.8.8.8

1.4.2 打開瀏覽器

想要訪問Google,在地址欄輸入了網址:www.google.com。

1.4.3 dns協議(基於udp協議)

技術分享

13臺根dns:

A.root-servers.net198.41.0.4美國
B.root-servers.net192.228.79.201美國(另支持IPv6)
C.root-servers.net192.33.4.12法國
D.root-servers.net128.8.10.90美國
E.root-servers.net192.203.230.10美國
F.root-servers.net192.5.5.241美國(另支持IPv6)
G.root-servers.net192.112.36.4美國
H.root-servers.net128.63.2.53美國(另支持IPv6)
I.root-servers.net192.36.148.17瑞典
J.root-servers.net192.58.128.30美國
K.root-servers.net193.0.14.129英國(另支持IPv6)
L.root-servers.net198.32.64.12美國
M.root-servers.net202.12.27.33日本(另支持IPv6)

域名定義:http://jingyan.baidu.com/article/1974b289a649daf4b1f774cb.html

頂級域名:以.com,.net,.org,.cn等等屬於國際頂級域名,根據目前的國際互聯網域名體系,國際頂級域名分為兩類:類別頂級域名(gTLD)和地理頂級域名(ccTLD)兩種。類別頂級域名是 以"COM"、"NET"、"ORG"、"BIZ"、"INFO"等結尾的域名,均由國外公司負責管理。地理頂級域名是以國家或地區代碼為結尾的域名,如"CN"代表中國,"UK"代表英國。地理頂級域名一般由各個國家或地區負責管理。

二級域名:二級域名是以頂級域名為基礎的地理域名,比喻中國的二級域有,.com.cn,.net.cn,.org.cn,.gd.cn等.子域名是其父域名的子域名,比喻父域名是abc.com,子域名就是www.abc.com或者*.abc.com.
一般來說,二級域名是域名的一條記錄,比如alidiedie.com是一個域名,www.alidiedie.com是其中比較常用的記錄,一般默認是用這個,但是類似*.alidiedie.com的域名全部稱作是alidiedie.com的二級

1.4.4 HTTP部分的內容,類似於下面這樣:

GET / HTTP/1.1
Host: www.google.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1) ……
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: … …

我們假定這個部分的長度為4960字節,它會被嵌在TCP數據包之中。

1.4.5 TCP協議

TCP數據包需要設置端口,接收方(Google)的HTTP端口默認是80,發送方(本機)的端口是一個隨機生成的1024-65535之間的整數,假定為51775。

TCP數據包的標頭長度為20字節,加上嵌入HTTP的數據包,總長度變為4980字節。

1.4.6 IP協議

然後,TCP數據包再嵌入IP數據包。IP數據包需要設置雙方的IP地址,這是已知的,發送方是192.168.1.100(本機),接收方是172.194.72.105(Google)。

IP數據包的標頭長度為20字節,加上嵌入的TCP數據包,總長度變為5000字節。

1.4.7 以太網協議

最後,IP數據包嵌入以太網數據包。以太網數據包需要設置雙方的MAC地址,發送方為本機的網卡MAC地址,接收方為網關192.168.1.1的MAC地址(通過ARP協議得到)。

以太網數據包的數據部分,最大長度為1500字節,而現在的IP數據包長度為5000字節。因此,IP數據包必須分割成四個包。因為每個包都有自己的IP標頭(20字節),所以四個包的IP數據包的長度分別為1500、1500、1500、560。

1.4.8 服務器端響應

經過多個網關的轉發,Google的服務器172.194.72.105,收到了這四個以太網數據包。

根據IP標頭的序號,Google將四個包拼起來,取出完整的TCP數據包,然後讀出裏面的”HTTP請求”,接著做出”HTTP響應”,再用TCP協議發回來。

本機收到HTTP響應以後,就可以將網頁顯示出來,完成一次網絡通信

計算機網絡基礎