1.????前言~🥳🎉🎉🎉
Hello, Hello~ 親愛的朋友們👋👋,這里是E綿綿呀????。
如果你喜歡這篇文章,請別吝嗇你的點贊????和收藏📖📖。如果你對我的內容感興趣,記得關注我👀👀以便不錯過每一篇精彩。
當然,如果在閱讀中發現任何問題或疑問,我非常歡迎你在評論區留言指正🗨?🗨?。讓我們共同努力,一起進步!
加油,一起CHIN UP!💪💪
🔗個人主頁:E綿綿的博客
📚所屬專欄:1.?JAVA知識點專欄
? ? ?? ?深入探索JAVA的核心概念與技術細節
2.JAVA題目練習
? ? ? ??實戰演練,鞏固JAVA編程技能
3.c語言知識點專欄
? ? ? ? 揭示c語言的底層邏輯與高級特性
4.c語言題目練習
? ? ? ? 挑戰自我,提升c語言編程能力
5.Mysql數據庫專欄
? ? ? ? 了解Mysql知識點,提升數據庫管理能力
6.html5知識點專欄
? ? ? ? 學習前端知識,更好的運用它
7.?css3知識點專欄
? ? ? ? 在學習html5的基礎上更加熟練運用前端
8.JavaScript專欄
? ? ? ? 在學習html5和css3的基礎上使我們的前端使用更高級、
9.JavaEE專欄
? ? ? ? 學習更高階的Java知識,讓你做出網站
📘 持續更新中,敬請期待????
2.局域網與廣域網?
隨著時代的發展,越來越需要計算機之間互相通信,共享軟件和數據,即以多個計算機協同工作來完成業務,就有了網絡互連。
網絡互連:將多臺計算機連接在一起,完成數據共享。
數據共享本質是網絡數據傳輸,即計算機之間通過網絡來傳輸數據,也稱為網絡通信。
根據網絡互連的規模不同,可以劃分為局域網和廣域網
局域網是本地,局部組建的一種私有網絡。
局域網內的主機之間能方便的進行網絡通信,又稱為內網;局域網和局域網之間在沒有連接的情況下,是無法通信的。
下面是局域網的一種實現方式:
其能通過路由器去使幾臺電腦去連接在一塊,但數量是有限的。
一般家用路由器,常見的是5 個網口:1WAN + 4LAN
要想讓這幾個電腦能夠在同一個局域網中上網,就需要把他們連接到LAN 口,WAN 口是用來連上級的路由器的。那么能不能讓一個路由器連接的電腦更多呢?
有個叫交換機的東西: 可以擴展路由器的端口,我們把路由器的LAN口連在交換機上,交換機上有一定數量的LAN口從而可以連一定數量的電腦,這樣就可以擴展電腦的數量。
除此之外還有上級路由器連多個下級路由器,從而更多電腦連接在一塊。
那么如果我們在上述設備層層連接之下,就可以構成更復雜的網絡結構了,把更多更多的局域網連接到一起,構成的網絡更加龐大,可能已經覆蓋了一個城市,一個國家,就叫廣域網。
對于廣域網和局域網的定義沒有準確的數量要求。(我們感覺非常多的電腦(10w臺這種)連接在一塊就是可以稱為廣域網)
3. IP地址和端口號
IP地址描述了一個設備,在網絡上的地址,
生活中: 江西省南昌市新建區江西財經大學而在計算機中: 使用一個 32 位, 4 字節數字, 表示地址
一般來說,我們會把 IP 地址給表示成 4 個 0-255 之間的十進制數字,并且使用 3個點進行分隔.點分十進制(192.168.2.100)
在網絡通信中,IP地址用于標識主機網絡地址,端口號可以標識主機中發送數據、接收數據的程序。簡單說:端口號用于定位主機中的程序。
類似發送快遞時,不光需要指定收貨地址(IP地址),還需要指定收貨人(端口號)
格式為:
端口號是0~65535范圍的數字(兩個字節),在網絡通信中,程序可以通過綁定一個端口號,來發送及接收網絡數據
注意事項:兩個不同的程序,不能綁定同一個端口號,但一個進程可以綁定多個端口號
特殊說明:? ? ? ? ? ? ? ?1-1023 (0不用作端口號)這個范圍的端口號,系統留作特殊用途,咱們寫的程序不應該占用
知名端口號,這些留給一些比較常見的服務器程序進行使用的(都是系統必要的)
22 => ssh
80 => http
443 => https
23 => telnet?
4.網絡協議?
網絡協議是網路通信中的規則和標準,它用于定義網絡通信中數據的傳輸方式、數據包的結構、數據包中的信息內容以及通信雙方的行為等。只有統一規范好了網絡協議(規則),電腦們之間才能通信成功。
5.協議分層?
網絡通信,是一個非常復雜的事情,這個過程中涉及到很多的細節問題.
如果你使用一個協議來約定上述所有的細節,這個協議就會非常龐大,非常復雜.此時,就可以把一個功能復雜的協議,拆分成多個功能更單一的協議來解決各個小問題。
但是拆出來的協議太多了,如果放在一塊就變得很復雜,所以就對這些協議進行分類,甚至要進行協議分層,把很多協議,按照功能分成不同的層級,每個層級都有對應的主線任務,并且上層協議還能調用下層協議(這個后面會說它的具體體現)協議進行分層后各個層級的內部操作就不會干擾到其他層級,更加靈活獨立。
協議分層有兩種模型:
osi?七層網絡模型? 僅僅是出現在教科書中。現在基本沒有了,所以不詳細講述。
TCP/IP 五層網絡模型? ? osi七層模型的簡化版本,現在基本都是該模型,所以我們會對它進行詳細描述。?
TCP/IP通訊協議采用了5層的層級結構:
1.應用層:負責應用程序對數據的處理(發送或者接受等),我們的網絡編程主要就是針對應用層,我們對該數據的處理決定了系統用什么網絡協議應對該處理。
2.傳輸層:在應用層決定了用什么網絡協議后,傳輸層也會決定用對應的網絡協議處理。(體現了上一層對下一層的調用),傳輸層常見的協議包括TCP、UDP、SCTP和DCCP。
這些協議主要是決定數據傳輸的起點和終點(還有其他功能,之后會說)
3.網絡層:在傳輸層決定了用什么網絡協議后,網絡層也會決定用對應的網絡協議處理。(體現了上一層對下一層的調用),常見的協議包括IP、ICMP、IGMP、ARP、RIP、OSPF和BGP等。這些協議主要是進行路徑規劃,選出合適的路徑。(還有其他功能,之后會說),例如在IP協議中,通過IP地址來標識一臺主機,并通過路由表的方式規劃出兩臺主機之間的數據傳輸的線路。路由器工作在網路層。
4. 數據鏈路層:在網絡層決定了用什么網絡協議后,數據鏈路層也會決定用對應的網絡協議處理。(體現了上一層對下一層的調用),常見的協議包括以太網協議、PPP、HDLC、FDDI和Wi-Fi等。數據鏈路層協議主要是確定電腦用什么方式傳輸數據。? 交換機工作在數據鏈路層。
5.物理層:在數據鏈路層決定了用什么網絡協議后,物理層也會決定用對應的網絡協議處理(體現了上一層對下一層的調用)。常見的物理層協議包括以太網物理層、USB、PCIe、HDMI、光纖通信協議,物理層協議主要是對網絡通信的硬件設備進行要求,比如使用的網線,光纖都應該是啥規格。集線器工作在物理層。
我們發現層數越低,它們的功能就越是底層,越是細節,反而最高層的應用層就比較宏觀了,會使用就行(這是因為有下一層的給你提供底層支持,本層就不需要那么多細節)。
對于這些網絡協議,前三層都是由操作系統內核創建的,后兩層都是驅動程序+硬件創建的。并且它們的創建是電腦誕生之時就自帶的,我們進行網絡通行操作時并不能創建出來協議,而是系統在眾多已存在的協議中挑選出一個適合處理該行為的協議。?
對于每一個電腦來說都只有一個唯一的協議分層。?
物理層我們考慮的比較少。因此很多時候也可以稱為 TCP/IP四層模型。?
6.網絡設備所在分層?
對于一臺主機,它實現了從傳輸層到物理層的內容,也即是TCP/IP五層模型的五層
對于一臺路由器,它實現了從網絡層到物理層,也即是TCP/IP五層模型的下三層;
對于一臺交換機,它實現了從數據鏈路層到物理層,也即是TCP/IP五層模型的下兩層;
對于集線器,它只實現了物理層;
(這是個很經典的面試題,記住就行)
注意我們這里說的是傳統意義上的交換機和路由器,也稱為二層交換機(工作在TCP/IP五層模型的下兩層)、三層路由器(工作在TCP/IP五層模型的下三層)。隨著現在網絡設備技術的不斷發展,也出現了很多3層或4層交換機,4層路由器。我們以下說的網絡設備都是傳統意義上的交換機和路由器。
7.數據的封裝和分用?
當我們將一個數據從一個主機傳輸給另一個主機時,該數據是怎樣進行傳輸的??
我們通過協議分層去傳輸,在確定好協議分層相對應的各個協議后,數據會從應用層一直傳輸到物理層,通過網絡再到另一個電腦的物理層,而后一直傳輸到另一個電腦的應用層,從而成功接受信息。
那么數據在傳輸過程中會不會發生變化?
答案是會的,因為協議不僅會有像“決定數據傳輸的起點和終點”這種功能,還有能規定數據包的結構這種功能,所以數據會因為協議的規定而變化結構。
數據的變化我們分為數據包的封裝和數據包的分用.
數據包的封裝是指在數據從高層向低層傳遞的過程中,每一層協議都會在數據包的前面添加自己的控制信息(頭部),有時也會在數據包的后面添加一些信息(尾部)。這個過程就像是給數據包加上了一個個的“信封”,每個“信封”包含了該層協議所需的信息,以便在接收方正確地解析和處理數據包。(前面提了之所以變化結構是因為協議規定了數據只允許用協議允許的結構存在,所以不得不變化結構)
封裝的過程通常包括以下幾個步驟:
應用層:應用層協議(如HTTP、FTP等)將用戶數據打包,并添加自己的頭部信息,如請求方法、URL、HTTP版本等。
傳輸層:傳輸層協議(如TCP、UDP等)接收來自應用層的數據包,并添加自己的頭部信息,如源端口號、目的端口號等。如果是TCP,還會添加序列號、確認號等信息。
網絡層:網絡層協議(如IP)接收來自傳輸層的數據包,并添加自己的頭部信息,如源IP地址、目的IP地址等。
數據鏈路層:數據鏈路層協議(如以太網)接收來自網絡層的數據包,并添加自己的頭部信息,如源MAC地址、目的MAC地址等,同時也會添加尾部信息,如幀校驗序列(FCS)。
物理層:物理層將數據鏈路層的數據包轉換為物理信號(如電信號、光信號等),在物理介質中傳輸。
數據包的分用是指在數據從低層向高層傳遞的過程中,每一層協議都會剝離自己添加的控制信息(頭部和尾部),并將剩余的數據包傳遞給上一層協議。這個過程就像是拆開一個個的“信封”,逐層解析數據包,直到最終將用戶數據傳遞給應用層。(前面提了之所以變化結構是因為協議規定了數據只允許用協議允許的結構存在,所以不得不變化結構)
分用的過程通常包括以下幾個步驟:
物理層:物理層將物理信號轉換回數據鏈路層的數據包。
數據鏈路層:數據鏈路層接收來自物理層的數據包,剝離自己的頭部和尾部信息,將剩余的數據包傳遞給網絡層。
網絡層:網絡層接收來自數據鏈路層的數據包,剝離自己的頭部信息,將剩余的數據包傳遞給傳輸層。
傳輸層:傳輸層接收來自網絡層的數據包,剝離自己的頭部信息,將剩余的數據包傳遞給應用層。
應用層:應用層接收來自傳輸層的數據包,剝離自己的頭部信息,將最終的用戶數據呈現給用戶或應用程序。
不同的協議層對數據包有不同的稱謂,在傳輸層叫做段,在網絡層叫做數據報,在鏈路層叫做幀。?
下圖是對于數據的封裝很好的體現。
?
上圖就是數據的封裝,把該圖反過來看就是數據的分用了。?
對于數據包從上一層傳遞到下一層或者數據包從下一層傳遞到上一層 都體現了上一層對下一層的調用。?
?8.數據包和五元組
在剛才的文章中我總是提到數據包,那數據包到底是什么呢?和數據有什么區別?
數據:數據是指未經處理或未按特定方式組織的信息。
數據包:數據包是數據在網絡中傳輸時的基本單位,它是由數據和控制信息組成的。數據包的結構和格式由所使用的網絡協議決定,通常包括頭部(控制信息)和負載(數據)兩部分。
由于我們剛學了封裝和分用,可以說數據在傳輸前需要被封裝成數據包,才能在網絡中傳輸。所以數據包以后是絕對經常接觸的,這里了解一下它的概念。
五元組的組成如下:
源IP地址:發送數據包的設備的IP地址。
源端口:發送數據包的設備上的應用程序所使用的端口號。
目的IP地址:接收數據包的設備的IP地址。
目的端口:接收數據包的設備上的應用程序所使用的端口號。
傳輸層協議:這次網絡通信傳輸層所使用的協議,例如TCP或UDP。
通過這五個信息的組合,我們可以唯一地標識一個網絡連接或會話。