語言是用來交流的,人類語言令人與人交流,編程語言令人與機器交流,那麼問題來了,機器如何與機器交流。你是否疑惑過:爲何咱們可使用瀏覽器查資料、爲何咱們可使用聊天軟件聊天、爲何咱們能夠經過網絡傳輸文件.etc。會與機器交流的人是少部分的,正是這少部分人讓幾乎全部人方便的使用網絡,對於這全部人來講,他們想要聊天,只須要打開一個聊天窗口,輸入文字,而後發送便可,他們並不會關注其背後的具體過程,由於背後的過程是複雜的,是由少部分人完成的。經過這本次系列的學習,你將成爲少部分人!html
網絡編程聽起來很高大上,但其實質就是進程之間的通訊。再說的直白點,就是軟件間的通訊,能夠是同一計算機的同一軟件、同一計算機的不一樣軟件、不一樣計算機的不一樣軟件、不一樣計算機的同一軟件。(看到這裏,應該大概明白了進程就是軟件了哇)編程
爲了介紹網絡原理,一般習慣將計算機網絡分爲五層協議體系結構,從下至上分別爲:物理層、數據鏈路層、網絡層、運輸層、應用層。瀏覽器
應用層是體系結構的最高層。直接爲用戶的應用進程提供服務,主要任務是經過應用進程間的交互來完成特定的網絡應用。應用層協議定義的是應用進程間通訊和交互的規則。網絡
應用層的協議不少,例如你們熟知的HTTP協議、DNS、SMTP協議、FTP等等編程語言
『防抄襲:讀者請忽略這段文字,文章做者是博客園的MinuteSheep』學習
2.1.2 運輸層spa
運輸層的主要任務是負責向兩臺主機中進程之間的通訊提供通用的數據傳輸服務。計算機網絡
運輸層主要有如下兩種協議:htm
傳輸控制協議TCP(Transmission Control Protool)—— 提供面向鏈接的、可靠的數據傳輸服務blog
用戶數據協議UDP(User Datagram Protool)—— 提供無鏈接的、盡最大努力的數據傳輸服務
網絡層負責爲分組交換網上的不一樣主機提供通訊服務。
網絡層最經常使用的協議爲IP(Internet Protool)協議
兩臺主機之間的數據傳輸,老是在一段一段的鏈路上傳送的,這就須要使用專門的鏈路層協議。
物理層主要的任務是傳送比特流。
上圖是從《計算機網絡》(第七版,謝希仁)掃描下來的,這幅圖顯示了整個計算機網絡體系的傳遞過程。
假定主機1的應用進程AP1向主機2的應用進程AP2傳送數據。AP1先將其數據交給本主機的第5層(應用層)。第5層加上必要的控制信息H5就變成了下一層的數據單元。第4層(運輸層)收到這個數據單元后,加上本層的控制信息H4,在交給第3層(網絡層),成爲第3層的數據單元。一次類推,不過到了第2層(數據鏈路層)後,控制信息被分爲兩部分,分別加到本層數據單元的首部(H2)和尾部(T2);而第1層(物理層)因爲是比特流的傳送,因此不在加上控制信息。
當這串的比特流離開主機1經網絡的物理媒體傳送到路由器時,就從路由器的第1層依次上升到第3層。每層都根據控制信息進行必要的操做,而後將控制信息剝去,將該層剩下的數據單元上交給更高的一層。當分組上升到了第3層時,就根據首部中的目的地址查找路由器中的轉發表,找出轉發分組的接口,而後往下傳送到第2層,加上新的首部和尾部後,再到最下面的第1層,而後在物理媒體上把每-個比特發送出去。
當這一串的比特流離開路由器到達目的站主機2時,就從主機2的第1層按照上面講過的方式,依次上升到第5層。最後,把應用進程AP1發送的數據交給目的站的應用進程AP2。
『防抄襲:讀者請忽略這段文字,文章做者是博客園的MinuteSheep』
瞭解了上面五層網絡體系結構以後,兩臺主機之間想要通訊,那麼最重要的問題就是:要給誰發?怎麼發?發送的信息是否能夠沒有任何錯誤的到達?
爲了解決要給誰發?怎麼發的問題,IP協議就誕生了。
發是能發了,可是能不能無差錯的送到對方手中,又成了一個難題,TCP的誕生解決了這個問題:
上圖就是TCP創建鏈接(三次握手🤝)和創建鏈接後發送數據的過程,瞭解便可。
有了這些基本的網絡知識之後,下一步就要正式進行網絡編程了,下次見!