C指的是client(客戶端軟件),S指的是server(服務端軟件),本章的重點就是學會寫一個C/S架構的軟件,實現服務端軟件與客戶端軟件基於網絡通訊。git
做爲應用開發程序員,咱們開發的軟件都是應用軟件,而應用軟件必循運行於操做系統上,操做系統則運行於硬件上,應用軟件是沒法直接操做硬件的,應用軟件對硬件的操做必須調用操做系統的接口,有操做系統操做硬件。程序員
好比客戶端軟件想要基於網絡發送一條信息給服務端軟件,流程以下:編程
一、客戶端軟件產生數據,存放於客戶端軟件的內存中,而後調用接口將本身內存中的數據發送/拷貝給操做系統內存。網絡
二、客戶端操做系統收到數據後,按照客戶端軟件指定的規則(即協議),調用網卡發送數據。架構
三、經過網絡傳輸數據tcp
四、服務端軟件調用系統接口,想要將數據從操做系統內存拷貝到本身的內存中。學習
五、服務端操做系統接收到指令後,使用與客戶端相同的規則(即協議)從網卡接收到數據,而後拷貝給服務端軟件。操作系統
硬件之上安裝好操做系統,而後裝上軟件就能夠正常使用了,但此時你也只能本身用。計算機網絡
如何能和其餘人一塊兒「玩耍」呢?那就得聯網了,即internet。設計
internet是什麼?舉個簡單的例子:若是把一我的與這我的的有線電話比喻一臺計算機,那麼其實這兩臺計算機之間通訊與兩我的打電話之間通訊的原理是同樣的。兩我的之間想要打電話首先一點是必須接電話線,這就比如是計算機之間的通訊首先要有物理連接介質,好比網線、交換機、路由器等網絡設備。通訊的線路建好以後,只是物理層有了能夠承載數據的介質,想要通訊,還須要按照某種規則組織好咱們的數據,這樣對方再接收到數據後就能夠按照相同的規則去解析出數據,這裏說的規則指的就是:互聯網協議。咱們須要作的是,讓全世界的計算機都學會互聯網協議,這樣任意一臺計算機在發送信息時都嚴格按照協議規定的格式去組織數據,接收方就能夠按照相同的協議解析出結果,這就實現了全世界的計算機都能無障礙通訊。
按照功能的不一樣,人們將互聯網協議分爲osi七層 或 tcp/ip五層 或 tcp/ip四層,這種分層就比如是學習英語的幾個階段,每一個階段應該掌握專門的技能或者完成特定的任務,好比:第一階段——學音標,第二階段——學單詞,第三階段——學語法,第四階段——寫做文......
每一層運行着常見的物理設備(瞭解就行)
Transmission Control Protocol/Internet Protocol的簡寫,中譯名爲傳輸控制協議/因特網互聯協議,又名網絡通信協議,是Internet最基本的協議、Internet國際互聯網絡的基礎。
20世紀50年代,正處於冷戰時期。當時美國軍方爲了本身的計算機網絡在受到襲擊時,即便部分網絡被摧毀,其他部分仍能保持通訊,便由美國國防部的高級研究計劃局(ARPA)建設了一個軍用網——「阿帕網」(ARPAnet)。阿帕網於1969年正式啓用,當時僅鏈接了24臺計算機,供科學家們進行計算機聯網實驗用,這就是因特網的前身。
到70年代,ARPAnet已經有了好幾十個計算機網絡,可是每一個網絡只能在網絡內部的計算機之間互聯通訊,不一樣計算機網絡之間仍然不能互通。爲此,ARPA又設立了新的研究項目,支持學術界和工業界進行有關的研究,研究的主要內容就是想要一種新的方法將不一樣的計算機局域網互聯,造成「互聯網」。研究人員稱之爲「internetwork」,簡稱「Internet」,這個名稱就一直沿用到如今。
1974年,TCP/IP誕生,TCP/IP有一個很是重要的特色,就是開放性,即TCP/IP的規範和Internet的技術都是公開的。目的就是使任何廠家生成的計算機都能相互通訊,使Internet成爲一個開放的系統,這正是後來Internet獲得飛速發展的重要緣由。
美國國防部在開發TCP/IP的同時,還有一些其它大廠商也開發出了本身的網絡體系,實際上世界上第一個網絡體系結構由IBM公司提出(也是74年,比TCP/IP略早,SNA),之後其它公司也相繼提出本身的網絡體系結構,如:Digital公司的DNA,美國國防的TCP/IP等,多種網絡體系結構並存,其結果是若採用IBM的結構,只能選用IBM的產品,只能與同種結構的網絡互聯。這就像中國人說中文,美國人說英語,俄羅斯人說俄語同樣,同一國家的人溝通沒問題,但不一樣國家之間的人無法通訊。
爲了解決網絡通訊中這樣不互通的問題,國際標準化組織ISO於1977年成立了一個委員會,在現有網絡的基礎上,提出了不基於具體機型、操做系統或公司的網絡體系結構,稱之爲開放系統互聯模型。
OSI/RM模型(Open System Interconnection / Reference Model)的設計目的是成爲一個全部計算機廠商都能實現的開放網絡模型,來克服使用衆多私有網絡模型所帶來的困難和低效性。