=========================================================================================java
在我看來,學習java最重要是要理解what(這東西是什麼),why(爲何要用它),where(在哪用它),how(怎麼用)。因此接下來,我都是以這樣的思想來和你們交流,從最基礎的知識講起。若是有啥出錯的,歡迎你們前來批評。本人虛心接納。web
=========================================================================================數組
咱們須要瞭解一下JavaWeb是怎樣運行的?一個Web項目運行的原理是基於計算機網絡的知識,總的大概過程以下。瀏覽器
首先在在瀏覽器中輸入要訪問的網址,回車後瀏覽器向web服務器發送一個HTTP請求;根據計算機網絡知識,兩臺電腦的訪問中間須要通過五層協議,包括物理層,數據鏈路層,網絡層,運輸層,應用層。下面通俗說一下五個層次,以發送方和接收方爲例子。服務器
1.應用層:應用層是整個層次最頂層,直接和最原始數據打交道,定義的是應用進程間通訊和交互的規則。這是什麼意思?由於兩臺電腦通信就是發送方把數據傳給接收方,雖然發送方知道本身發送的是什麼東西、轉化成字節數組以後有多長,但接收方確定不知道,因此應用層的網絡協議誕生了,他規定發送方和接收方必須使用一個固定長度的消息頭,消息頭必須使用某種固定的組成,並且消息頭裏必須記錄消息體的長度等一系列信息,以方便接收方可以正確的解析發送方發送的數據。若是沒有應用層的規則,那麼接收方拿到數據後也是不知所措,就如同拿到一個沒有說明書的工具沒法操做。網絡
2.運輸層:負責向兩個主機中進程之間的通訊提供通用數據服務,「傳輸層」的功能,就是創建」端口到端口」的通訊。例如,同一臺主機上有許多程序都須要用到網絡,假設你一邊在看網頁,一邊上QQ聊天。當一個數據包從互聯網上發來的時候,你怎麼知道,它是表示網頁的內容,仍是表示QQ聊天的內容?也就是說,咱們還須要一個參數,表示這個數據包到底供哪一個程序(進程)使用。這個參數就叫作」端口」(port),它實際上是每個使用網卡的程序的編號。每一個數據包都發到主機的特定端口,因此不一樣的程序就能取到本身所須要的數據。「端口」是0到65535之間的一個整數,正好16個二進制位。0到1023的端口被系統佔用,用戶只能選用大於1023的端口。不論是瀏覽網頁仍是在線聊天,應用程序會隨機選用一個端口,而後與服務器的相應端口聯繫。工具
3.網絡層:」網絡層」的功能是創建」主機到主機」的通訊。經過網絡層咱們能找到其餘一臺電腦的所在位置並進行主機到主機鏈接。每臺計算機有了兩種地址,一種是MAC地址,另外一種是網絡地址。兩種地址之間沒有任何聯繫,MAC地址是綁定在網卡上的,網絡地址則是管理員分配的,它們只是隨機組合在一塊兒。網絡地址幫助咱們肯定計算機所在的子網絡,MAC地址則將數據包送到該子網絡中的目標網卡。學習
4.數據鏈路層:兩個相鄰節點之間傳送數據時,數據鏈路層將網絡層交下來的IP數據報組裝成幀,在兩個相鄰的鏈路上傳送幀(frame)。因爲網絡層移交的ip數據包數據可能會不少,因此要進行分組封裝成幀,每一幀包括數據和必要的控制信息。其實就是解讀電信號,進行分組。封裝成幀,透明傳輸,差錯控制。spa
5.物理層:電腦要組網,第一件事要幹什麼?固然是先把電腦連起來,能夠用光纜、電纜、雙絞線、無線電波等方式,它就是把電腦鏈接起來的物理手段,它主要規定了網絡的一些電氣特性,將本電腦要傳輸的數據幀變成010101的比特流,發送出去,做用是負責傳送0和1的電信號。計算機網絡
這裏舉個例子來講明下,好比A與B要通信,A向B請求發送了一份數據。首先A在請求連接裏面能夠獲取到B的地址,要發送的這份數據首先通過應用層,制定了一系列規則,好比數據的格式怎樣,長度多少,以方便接收方可以正確的解析發送方發送的數據;接下來進入運輸層,把進程端口封裝在數據包,這樣才知道是A當前電腦哪一個進程發的數據包;再接下是進入網絡層,經過ip地址找到B主機所在位置並進行相連;而後進入數據鏈路層,將ip數據包封裝成幀;最後進入物理層,進行數據幀轉換成比特流0或1,經過硬件光纖進行傳輸;這一整套是A的通信過程,對於·B而言就是相反的過程。
===========================================================================
用心查閱,有心分享,分享之際,互相指教,受益你我,何樂不爲?
===========================================================================