大白話談互聯(lián)網(wǎng)協(xié)議

你的問題

在這個(gè)寧肯不吃一頓飯,不可斷一小時(shí)網(wǎng)的時(shí)代里,我們對網(wǎng)絡(luò)的依賴已經(jīng)達(dá)到了無以復(fù)加的地步,雖然我們每天在使用網(wǎng)絡(luò),卻并不清楚網(wǎng)絡(luò)通訊到底是如何進(jìn)行的?

比如,你在微信里給苦追了好久的姑娘發(fā)送了一條約會(huì)消息,她收到了,并且在微信上回復(fù)給你“不好意思,我今晚有約了”,但是這可能是個(gè)誤會(huì),你發(fā)送的消息為什么可以成功到達(dá)她的手機(jī)上,而不是被遠(yuǎn)在大洋彼岸的川普收到呢?她在手機(jī)上看到這條消息后,回復(fù)給你一條拒絕的消息,這條消息也準(zhǔn)確無誤的被你所接收,本來打算和姑娘一塊看電影的計(jì)劃泡湯了,雖然你這時(shí)候心情很糟,但你也無事可做,所以打算研究研究這該死的網(wǎng)絡(luò)通訊協(xié)議。看看為什么你發(fā)給妹子的消息沒有發(fā)到川普的手機(jī)上。

簡單分析

我們先來看看你給姑娘發(fā)送消息這一過程,它的背后到底發(fā)生了什么。首先,你編輯了一條消息,點(diǎn)擊了發(fā)送按鈕,這時(shí)這條消息會(huì)被經(jīng)過包裝,然后發(fā)送至騰訊的服務(wù)器上,包裝的過程中,會(huì)把發(fā)送人、接收人、消息內(nèi)容等等信息整合在一起,騰訊的服務(wù)器接收的這條信息之后,對應(yīng)的程序就會(huì)對這條消息進(jìn)行處理計(jì)算,從而得知要把什么內(nèi)容發(fā)送給什么人,然后服務(wù)器也將這一信息進(jìn)行包裝處理,發(fā)送出去,之后姑娘收到消息。這只是一個(gè)簡單的消息傳遞流程,要想真正搞清楚消息是怎么發(fā)送的,還需要了解互聯(lián)網(wǎng)通訊的原理。

協(xié)議

首先我們要知道協(xié)議是什么?其實(shí)很簡單,協(xié)議其實(shí)就是一種規(guī)則。比如在社會(huì)中,我們有法律來約束每個(gè)人的行為,法律就可以看做是一種面向公民的“協(xié)議”。在互聯(lián)網(wǎng)上我們同樣需要一些規(guī)則來約束各個(gè)主機(jī)設(shè)備或程序的行為,那么這個(gè)規(guī)則就是互聯(lián)網(wǎng)協(xié)議。接下來我們會(huì)介紹互聯(lián)網(wǎng)分層模型,互聯(lián)網(wǎng)的每一層都有其特定的功能,要實(shí)現(xiàn)這特定的功能就要有對應(yīng)的協(xié)議。

互聯(lián)網(wǎng)分層模型

為了便于理解,我們一般可以將互聯(lián)網(wǎng)通訊模型分為五層,每個(gè)層都有它自己的功能。物理層是最底層,應(yīng)用層是最高層,中間分別是鏈路層、網(wǎng)絡(luò)層和傳輸層,其每一層都是建立在上一層的基礎(chǔ)上的。

osi七層模型可理解為五層模型

(一)物理層

你想給姑娘發(fā)送一條消息,首先你得有個(gè)手機(jī)(這TM不是廢話),其次,你的手機(jī)得連上網(wǎng)(這TM也是廢話),或許你這條消息是用電腦版的微信發(fā)送的,那無論你是插網(wǎng)線還是連WIFI,都需要你成功接入互聯(lián)網(wǎng)。

這些連接線路就是互聯(lián)網(wǎng)的物理層,物理層主要功能是提供了數(shù)據(jù)傳輸?shù)慕橘|(zhì),使得電信號可以在設(shè)備之間傳播,這里的電信號也可以簡單的理解為0或1。

(二)鏈路層

物理層為我們提供了在兩臺設(shè)備之間傳輸0和1的可能,但是只是單純的傳輸0和1是沒有意義的。鏈路層的作用是將這些01信號序列化,轉(zhuǎn)化為有意義的數(shù)據(jù)幀。

那么鏈路層是怎么工作的呢?它工作過程大概可以理解為三個(gè)部分,發(fā)送什么數(shù)據(jù)?發(fā)送給誰?怎么發(fā)送?

  1. 首先需要有一個(gè)規(guī)則來定義這些01電信號,使得這些電信號變得有意義,這個(gè)規(guī)則就是以太網(wǎng)協(xié)議(Ethernet),它規(guī)定了一組電信號為一個(gè)數(shù)據(jù)包,每個(gè)數(shù)據(jù)包都分標(biāo)頭(head)和數(shù)據(jù)(data)。標(biāo)頭用來存儲(chǔ)發(fā)送人、接收人、數(shù)據(jù)類型等等,數(shù)據(jù)部分就是消息內(nèi)容。這就解決了發(fā)送什么消息的問題。

  2. 定義好了數(shù)據(jù),我們就該考慮發(fā)送給誰的問題了,每臺設(shè)備都有自己的一個(gè)地址,叫做MAC地址。MAC地址在設(shè)備出廠時(shí)就已經(jīng)固定了,這個(gè)地址在全世界是獨(dú)一無二的,這樣我們就可以通過這個(gè)地址去向目標(biāo)設(shè)備發(fā)送數(shù)據(jù)。

  3. 雖然我們知道了目標(biāo)設(shè)備的MAC地址,但是怎么才能把把消息準(zhǔn)確的發(fā)送給目標(biāo)設(shè)備呢?其實(shí)解決方法很簡單,發(fā)送數(shù)據(jù)時(shí),將向網(wǎng)絡(luò)中所有設(shè)備都發(fā)送這個(gè)消息,然后每一臺設(shè)備自己來判斷數(shù)據(jù)標(biāo)頭中包含的MAC地址是否和自己的MAC地址一致,如果一致就接收這個(gè)消息,如果不一致就不接收。這種發(fā)送數(shù)據(jù)的方式叫做“廣播”。通過“廣播”的方式就可以把一條數(shù)據(jù)發(fā)送到指定設(shè)備上了。

好了,讓我們再來看看發(fā)送數(shù)據(jù)這個(gè)過程,如我們上面所說,你想給姑娘發(fā)送一條消息,得通過通訊線纜傳輸0或1這種信號,然后有一種叫以太網(wǎng)協(xié)議的東西可以幫你把01信號轉(zhuǎn)化為有意義的數(shù)據(jù),之后你的手機(jī)向網(wǎng)絡(luò)中所有設(shè)備發(fā)出這條消息,姑娘的手機(jī)發(fā)現(xiàn)這條數(shù)據(jù)是發(fā)給她的,便接受了這條數(shù)據(jù),其他人的設(shè)備發(fā)現(xiàn)數(shù)據(jù)中包含的MAC地址和自己的MAC地址不符合,說明這條數(shù)據(jù)是發(fā)送給其他人的,便不接收這條數(shù)據(jù)。這樣便達(dá)到了發(fā)送給姑娘消息的效果。

(三)網(wǎng)絡(luò)層

我們知道全球的可聯(lián)網(wǎng)設(shè)備都在一個(gè)巨型網(wǎng)絡(luò)下,按我們上面所說,你的消息會(huì)發(fā)送給網(wǎng)絡(luò)內(nèi)所有設(shè)備,這么說來你的這條消息還是發(fā)給川普了嘛,只是人家沒有接收而已。其實(shí),并非如此,如果每發(fā)送一條消息都會(huì)發(fā)送給互聯(lián)網(wǎng)上的所有人,那以互聯(lián)網(wǎng)這么大的體量,早就癱瘓了。

實(shí)際上,“廣播”的方式只能在同一子網(wǎng)絡(luò)內(nèi)發(fā)送數(shù)據(jù),互聯(lián)網(wǎng)是由非常多的子網(wǎng)絡(luò)組成的巨型網(wǎng)絡(luò),所以你發(fā)給姑娘的消息川普是絕對收不到的。

看到這里你肯定已經(jīng)明白了,網(wǎng)絡(luò)層的作用是可以讓數(shù)據(jù)在不同子網(wǎng)絡(luò)之間也可以傳遞。最常見的網(wǎng)路層通訊協(xié)議就是IP協(xié)議。

3.1 IP地址

雖然每臺設(shè)備都有自己獨(dú)有的MAC地址,但是通過MAC地址我們是無法判斷該設(shè)備是屬于那個(gè)子網(wǎng)絡(luò)的,所以我們引入了一種其他的地址,叫做IP地址,也稱為“網(wǎng)址”。目前最常使用的是IPv4,是IP協(xié)議的第四版。IPv4規(guī)定網(wǎng)址是由32位二進(jìn)制數(shù)組成,通常以四段10進(jìn)制數(shù)表示,從0.0.0.0到255.255.255.255,例如:192.168.1.1就是一個(gè)IPv4地址。

3.2 子網(wǎng)掩碼

有了兩臺設(shè)備的IP地址,我們該如何判斷兩臺設(shè)備是不是處在同一子網(wǎng)絡(luò)下呢?這時(shí)候就需要另外一種叫做“子網(wǎng)掩碼”的參數(shù)了,“子網(wǎng)掩碼”同IP地址十分類似,也是由32位二進(jìn)制數(shù)組成,不過它的網(wǎng)絡(luò)部分全部為1,主機(jī)部分全部為0,那么什么是網(wǎng)絡(luò)部分?什么是主機(jī)部分呢?

舉例來說,IP地址為192.168.1.1,子網(wǎng)掩碼為“255.255.255.0”,就表示此IP的前24位為網(wǎng)絡(luò)部分,后8位為主機(jī)部分。也就是說通過“子網(wǎng)掩碼”可以確定一個(gè)IP地址的網(wǎng)絡(luò)部分和主機(jī)部分。那么問題就變得簡單了,如果兩臺設(shè)備的IP地址網(wǎng)絡(luò)部分是相同的,那么他們就處在同一子網(wǎng)絡(luò)。

例如:A設(shè)備的IP地址為172.12.214.3,子網(wǎng)掩碼為255.255.0.0,B設(shè)備的IP地址為172.12.213.1,子網(wǎng)掩碼同為255.255.0.0,則可以判斷出A設(shè)備與B設(shè)備處在同一子網(wǎng)絡(luò)下。

3.3 相同子網(wǎng)絡(luò)間的數(shù)據(jù)傳輸

好了,看起來費(fèi)了好大的勁來判斷兩臺設(shè)備是不是處于同一網(wǎng)絡(luò)下,但是相信我,費(fèi)這么大功夫是絕對值得的。我們馬上就可以在互聯(lián)網(wǎng)上任意兩臺設(shè)備間發(fā)送數(shù)據(jù)了。首先我們要了解,我們想要發(fā)送數(shù)據(jù),就必須知道目標(biāo)設(shè)備的IP地址和MAC地址。

通過IP協(xié)議,我們可以判斷出要傳輸數(shù)據(jù)的兩臺設(shè)備是否是在同一子網(wǎng)絡(luò),那現(xiàn)在就會(huì)有兩種情況,第一種情況是,兩臺設(shè)備處在同一子網(wǎng)絡(luò)下,那我們就可以利用“廣播”方式去發(fā)送數(shù)據(jù)了,但是問題來了,知道目標(biāo)設(shè)備的IP地址,如何獲得目標(biāo)的MAC地址呢?這時(shí)候ARP協(xié)議就登場了。

ARP協(xié)議的作用可以簡單的認(rèn)為是通過IP地址來獲取同一子網(wǎng)絡(luò)中設(shè)備的MAC地址,那它是如何工作的,其實(shí)也很簡單,它也是通過“廣播”的方式向子網(wǎng)絡(luò)內(nèi)所有設(shè)備發(fā)送一條數(shù)據(jù)包,數(shù)據(jù)包中的MAC地址填寫為:FF:FF:FF:FF:FF:FF,這樣當(dāng)其他設(shè)備收到這條數(shù)據(jù)的時(shí)候,就會(huì)對比自身的IP與數(shù)據(jù)包中的IP是否一致,若不一致就丟棄這條數(shù)據(jù),若一致就接收這一條數(shù)據(jù),并匯報(bào)自己的MAC地址,這樣就可以通過IP地址獲取到MAC地址了。

現(xiàn)在我們就可以在兩臺設(shè)備(同一子網(wǎng)絡(luò))間通訊了。

3.4 不同子網(wǎng)絡(luò)間的數(shù)據(jù)傳輸

第二種情況是,要傳輸數(shù)據(jù)的兩臺設(shè)備,不在同一子網(wǎng)絡(luò)下,我們知道,要想把數(shù)據(jù)準(zhǔn)確發(fā)送到目標(biāo)設(shè)備中,就必須知道兩個(gè)地址

  • 目標(biāo)設(shè)備的IP地址
  • 目標(biāo)設(shè)備的MAC地址

但是,不同子網(wǎng)絡(luò)間的兩臺設(shè)備,是無法獲取到對方的MAC地址的,這時(shí)候只能將數(shù)據(jù)包發(fā)送給網(wǎng)關(guān),網(wǎng)關(guān)通過路由協(xié)議再將數(shù)據(jù)發(fā)送到目標(biāo)設(shè)備上。所以這時(shí)候需要知道的地址就變成了

  • 目標(biāo)設(shè)備的IP地址
  • 網(wǎng)關(guān)的MAC地址

如圖,主機(jī)2想向主機(jī)4發(fā)送一條數(shù)據(jù),必須先將數(shù)據(jù)發(fā)送至網(wǎng)關(guān)A,由網(wǎng)關(guān)A通過路由協(xié)議查詢到主機(jī)4處于子網(wǎng)絡(luò)B,網(wǎng)關(guān)A會(huì)將數(shù)據(jù)發(fā)送給網(wǎng)關(guān)B,網(wǎng)關(guān)B再將數(shù)據(jù)發(fā)送給主機(jī)4,這樣便完成了主機(jī)2到主機(jī)4之間的通訊。

至此,我們應(yīng)該清楚了,在兩臺設(shè)備間通訊所必須的條件,首先我們需要判斷兩臺設(shè)備是否處在同一子網(wǎng)絡(luò)中,若在同一子網(wǎng)絡(luò),就可以利用ARP協(xié)議來獲取MAC地址,得到目標(biāo)IP和MAC地址,就可以發(fā)送數(shù)據(jù)。若不在同一子網(wǎng)絡(luò),則需要獲取網(wǎng)關(guān)的MAC地址,將數(shù)據(jù)發(fā)送到網(wǎng)關(guān),讓網(wǎng)關(guān)來轉(zhuǎn)發(fā)。現(xiàn)在我們就可以在互聯(lián)網(wǎng)上任意兩臺設(shè)備間通訊了。

(四)傳輸層

通過上面的介紹,我們已經(jīng)知道了兩臺設(shè)備之間是如何通訊的了,但是,當(dāng)你收到姑娘回給你微信消息的同時(shí),你的手機(jī)還在線播放著久石讓的《summer》,那么問題又來了,你的手機(jī)同時(shí)接收著兩種數(shù)據(jù),那系統(tǒng)為什么不會(huì)把微信的數(shù)據(jù)和網(wǎng)易云音樂的數(shù)據(jù)搞混呢?

不同的應(yīng)用程序在主機(jī)上發(fā)送或接收數(shù)據(jù),都要通過不同的端口(port),以此來確定數(shù)據(jù)包是歸那個(gè)應(yīng)用程序所有。

傳輸層的作用就是定義了端口到端口之間的通訊,最常用的協(xié)議是TCP協(xié)議。這個(gè)協(xié)議比較復(fù)雜,它可以保證數(shù)據(jù)不會(huì)丟失。常說的“三次握手”和“四次揮手”就是指TCP協(xié)議的建立和斷開,有時(shí)間的朋友可以更加深入的了解了解TCP協(xié)議。

(五)應(yīng)用層

雖然各個(gè)應(yīng)用程序都能拿到自己對應(yīng)的數(shù)據(jù),但是如果不對這些數(shù)據(jù)進(jìn)行規(guī)范,應(yīng)用程序也無法解讀。所以在應(yīng)用層出現(xiàn)很多協(xié)議,用來為應(yīng)用程序提供特定的數(shù)據(jù)服務(wù)接口,這些服務(wù)包括文件傳輸、文件管理以及電子郵件的信息處理等。例如瀏覽網(wǎng)頁需要HTTP協(xié)議、下載文件需要FTP協(xié)議,讀取郵件需要POP3協(xié)議等等。

最后,我們在來看一張圖,想一下互聯(lián)網(wǎng)每一層都主要做了什么

數(shù)據(jù)形式

在這個(gè)五層模型中,每一層都有其對應(yīng)的數(shù)據(jù),物理層的數(shù)據(jù)就是0和1,鏈路層將0和1序列化定義為“幀”,“幀”分為標(biāo)頭和數(shù)據(jù)兩部分。網(wǎng)絡(luò)層的數(shù)據(jù)為IP數(shù)據(jù)包,它也有頭部和數(shù)據(jù)兩部分,IP數(shù)據(jù)包是放在幀的數(shù)據(jù)部分中的。傳輸層中的TCP數(shù)據(jù)包也分為頭部和數(shù)據(jù)兩部分,它放在IP數(shù)據(jù)包的數(shù)據(jù)部分。應(yīng)用層的數(shù)據(jù)直接放在TCP數(shù)據(jù)包的數(shù)據(jù)部分。所以最終的數(shù)據(jù)形式就變成了以下形式

分層來看的話如下

總結(jié)

這片文章只是從基礎(chǔ)的角度簡單的介紹了互聯(lián)網(wǎng)通訊的大概原理,其中簡化了很多部分,實(shí)際通訊過程要比文章所寫復(fù)雜的多,要想弄清楚詳細(xì)的互聯(lián)網(wǎng)通訊過程,還需要對各個(gè)協(xié)議做更加深入的學(xué)習(xí)。文章參考了阮一峰老師的互聯(lián)網(wǎng)協(xié)議入門,阮老師這兩篇文章寫的都是通俗易懂,是互聯(lián)網(wǎng)協(xié)議入門的不二之選,本文若有描述不清楚的地方,大家可去閱讀阮老師的互聯(lián)網(wǎng)協(xié)議入門。本文是在初步學(xué)習(xí)了互聯(lián)網(wǎng)協(xié)議之后,自己做的一些總結(jié),文中若有不對之處,歡迎指正。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,155評論 3 425
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,635評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,539評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,255評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,646評論 1 326
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,838評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,399評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,146評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,338評論 1 372
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,565評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,983評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,257評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,059評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,296評論 2 376

推薦閱讀更多精彩內(nèi)容

  • 1.這篇文章不是本人原創(chuàng)的,只是個(gè)人為了對這部分知識做一個(gè)整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,113評論 6 174
  • 個(gè)人認(rèn)為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,083評論 0 8
  • 某公司常見兩個(gè)場景: 場景一: A公司中高層因?yàn)榭蛻衄F(xiàn)場一緊急突發(fā)故障召開一個(gè)臨時(shí)會(huì)議,客服部經(jīng)理說剛接到某區(qū)域工...
    禮小禮er閱讀 290評論 4 4
  • 最近出差都沒有早起,都是六點(diǎn)半到七點(diǎn)起床,有點(diǎn)懶散,想多睡一會(huì)兒不想起床。但奇怪的是一回到宿舍,我就能按時(shí)起...
    Lisa的小世界閱讀 130評論 0 0
  • 蘇瑩瑩因?yàn)榫o張,將劍心抱得緊緊地,劍心也因此哇哇哭起來。劍仙將蘇瑩瑩護(hù)在身后,這不平的事,她倒想管一管。劍仙幻化出...
    文道山閱讀 609評論 0 0