【Linux】網絡基礎

原文鏈接:https://blog.csdn.net/qq_42438771/article/details/96750628

目錄

 

一. 實現網絡通信需要哪些支持

1.通信設備

2.通信協議

二. 協議棧

1.分層的好處/爲什麼要分層?

2.分層的作用

3.各層作用

(1)物理層

(2)數據鏈路層

(3)網路層

(4)傳輸層

(5)會話層

(6)表示層

(7)應用層

三. IP地址

1.IP地址

2.公網IP(廣域網通信)

3.私網IP(局域網通信)

4.如何解決IP地址慌?

5.子網掩碼的作用

6.DNS協議:域名解析

7.ARP協議

四. TCP協議:傳輸控制協議

1.特點

2.TCP的報文段格式

(1)端口號

(2)序列號seq(隨機生成)

(3)TCP標識位

(4)滑動窗口機制

(5)檢驗方式

(6)數據大小

3.如何連接

(1)建立連接:三次握手

(2)斷開連接:四次揮手

(3)爲什麼是三次握手和四次揮手?

(4)dos、ddos攻擊

4.如何保證可靠有序的傳輸

五. UDP協議:用戶數據報協議

1.特點

2.UDP報文格式

3.協議特點

六. TCP與UDP


一. 實現網絡通信需要哪些支持

1.通信設備

  • 網卡:PC機自帶
  • 路由器,交換機
  • 光纖、電纜、基站

2.通信協議

  • 操作系統自帶協議棧;(Linux的特點:豐富的網絡協議)
  • 裸機開發需要獨立的協議棧

 

二. 協議棧

物理層是第一層。在上面的是上面一層,在下面的是下面一層。

哪個協議在哪一層:FTP,NFS    /    SMTP(郵件協議),DNS   /   TCP,UDP   /     IP,ARP,RARP    /      IEEE(以太網協議)

1.分層的好處/爲什麼要分層?

  • 各層之間是獨立的
  • 靈活性好
  • 結構上可分隔開
  • 易於實現和維護
  • 能促進標準化工作

使每一層協議能複用,並得到更好的維護

2.分層的作用

協議棧實現數據的壓縮加密和解壓解密

沒一層都會加相應的數據,到最後加完了一起發給別人,別人再一層層消減數據。

3.各層作用

(1)物理層

將通信介質的信號轉換爲數字信號(二進制0101)

(2)數據鏈路層

實現局域網通信。局域網是通過mac地址(物理網卡)通信的(192.168.1.177是局域網IP)

(3)網路層

生成IP地址,使用路由(通過公網IP訪問全世界,公網IP每天看不一樣的)

(4)傳輸層

做數據傳輸,封裝了TCO和UDP協議。TCP(可靠,速度慢),UDP(不可靠,速度快),端口(讓不同的應用程序同時使用網絡)

(5)會話層

控制發包的數據,可以控制它的快慢

(6)表示層

發送數據的格式

(7)應用層

應用層使用數據做一系列的功能

 

三. IP地址

1.IP地址

可以通過IP地址找到一臺機器,端口號找到這臺機器上與之通信的軟件

實際上是32位二進制數   (01100100.00000100.00000101.00000110)100.4.5.6

0.0.0.0 - 255.255.255.255

2.公網IP(廣域網通信)

用來做世界任意兩臺電腦之間的通信

  • a類 1.0.0.1 —126.255.255.254
  • b類 128.0.0.1—191.255.255.254
  • c類 192.0.0.1—223.255.255.254
  • d類 224.0.0.1—239.255.255.254組播,VRRP協議,keepalive高可用
  • e類 240.0.0.1—255.255.255.254 科研

3.私網IP(局域網通信)

不能隨便亂設!一定要在下面範圍內

  • A 10.0.0.0~10.255.255.255
  • B 172.16.0.0~172.31.255.255
  • C 192.168.0.0~192.168.255.255

4.如何解決IP地址慌?

  • ipv4升級到ipv6(32位升級到128位)(但成本太高,全世界都要換硬件等)
  • 網絡地址轉換NAT(Network Address Translation):將內網ip轉爲公網ip(根據內網看哪個公網可以用,讓公網給你分配個可以用的)

5.子網掩碼的作用

  • 決定一個網段的大小(可用ip的數量)(子網掩碼位數不一定要是8的倍數)
    • 192.168.11.0/24  ===》 192.168.11.0   netmask 255.255.255.0
      192.168.11.0    網絡號
      192.168.11.1    起始地址
      192.168.11.254  結束地址
      192.168.11.255  廣播地址
    • 相當於256 - 2 = 254個可用IP
  • 同一個網段的ip地址,才能直接相互通信,不同網段的ip地址,需要路由器才能相互通信!

6.DNS協議:域名解析

把域名解析成ip地址(www.baidu.com就是域名)

公網IP一直在變,讓域名和動態IP改變,這樣IP一變,域名就會重新綁定,通過一直不變的域名可以訪問你想要訪問的地方。

7.ARP協議

把ip地址解析成mac地址(物理地址,全球唯一)(局域網通信必須通過MAC地址)

四. TCP協議:傳輸控制協議

1.特點

面向連接、可靠的字節流傳輸

2.TCP的報文段格式

(1)端口號

  • 端口號的作用:確定和機器上哪個應用程序通信(指定80端口號,即用HTTP通信)
  • 端口號的取值範圍
    •   
    • 註明端口號不能佔!
    • 一般都在動態端口號裏面選
  • 特殊端口號
    • 端口:21    服務:FTP 
    • 端口:22    服務:Ssh 
    • 端口:53    服務:Domain Name Server(DNS) 
    • 端口:80    服務:HTTP 

(2)序列號seq(隨機生成)

拆包時保證數據不紊亂

(3)TCP標識位

表示這個發的包是幹什麼的

  • SYN:建立鏈接
  • ACK:迴應標識
  • FIN: 斷開鏈接
  • PSH: 數據包
  • URG:  緊急指針
  • RST : 重置(重傳)

(4)滑動窗口機制

一種緩衝機制,先把數據全都放到滑動窗口裏面,然後一點一點發。當網絡不好時,會降速,壓縮數據。根據網速帶寬的大小,網絡的快慢分解數據包,把數據包分解爲適應這樣網速帶寬。

(5)檢驗方式

目的:保證數據做到正確傳輸

UDP實現正確傳輸可以依靠下面的方式(知識面廣度,優缺點)

  • 奇偶校驗Parity Check
  • bcc異或校驗法(block check character) 
  • crc循環冗餘校驗(Cyclic Redundancy Check)
  • md5校驗和數字簽名
  • 海明碼校驗

(6)數據大小

  • 局域網的鏈路層傳輸數據的最大長度是1518bit,包括幀的頭尾部長度18bit(頭14+尾4),IP頭部長度爲20bit,TCP頭尾部長度爲20bit,UDP頭尾部長度爲8bit
  • TCP在局域網中傳輸數據的最長長度=1518-18-20-20 = 1460bit
  • 廣域網傳輸不限定大小,因爲超過限定大小,會進行拆包發送

3.如何連接

(1)建立連接:三次握手

記錄對方的ip和端口,正式通信時會自動的使用記錄的ip和端口

  1. 第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SENT狀態,等待服務器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。
  2. 第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
  3. 第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED(TCP連接成功)狀態,完成三次握手 

簡述:客戶端發起連接,先發一個SYN包,發送一個連接請求,再發一個序列號seq,保證我收到的是我想要連接的機器給我回復的包。服務器回覆一個ACK包,表示已經建立和客戶端的讀寫通道,再發一個SYN包,跟客戶端建立連接,雙發建立連接後,客戶端再回一個ACK包。

三次握手缺點:容易被攻擊

  • dos攻擊:不斷給服務器發SYN包(連接請求),接着忽略服務器發回的ack包。讓服務器不斷等待客戶端,達到負載
  • 解決:等一段時間沒有迴應,就不再等待,斷開連接。或忽略一直給自己發請求的IP。
  • ddos攻擊:開源破解軟件,讓下載軟件的客戶端向服務器發SYN包。

(2)斷開連接:四次揮手

  1. 客戶端進程發出連接釋放報文,並且停止發送數據。釋放數據報文首部,FIN=1,其序列號爲seq=u(等於前面已經傳送過來的數據的最後一個字節的序號加1),此時,客戶端進入FIN-WAIT-1(終止等待1)狀態。 TCP規定,FIN報文段即使不攜帶數據,也要消耗一個序號。
  2. 服務器收到連接釋放報文,發出確認報文,ACK=1,ack=u+1,並且帶上自己的序列號seq=v,此時,服務端就進入了CLOSE-WAIT(關閉等待)狀態。TCP服務器通知高層的應用進程,客戶端向服務器的方向就釋放了,這時候處於半關閉狀態,即客戶端已經沒有數據要發送了,但是服務器若發送數據,客戶端依然要接受。這個狀態還要持續一段時間,也就是整個CLOSE-WAIT狀態持續的時間。
  3. 客戶端收到服務器的確認請求後,此時,客戶端就進入FIN-WAIT-2(終止等待2)狀態,等待服務器發送連接釋放報文(在這之前還需要接受服務器發送的最後的數據)。
  4. 服務器將最後的數據發送完畢後,就向客戶端發送連接釋放報文,FIN=1,ack=u+1,由於在半關閉狀態,服務器很可能又發送了一些數據,假定此時的序列號爲seq=w,此時,服務器就進入了LAST-ACK(最後確認)狀態,等待客戶端的確認。
  5. 客戶端收到服務器的連接釋放報文後,必須發出確認,ACK=1,ack=w+1,而自己的序列號是seq=u+1,此時,客戶端就進入了TIME-WAIT(時間等待)狀態。注意此時TCP連接還沒有釋放,必須經過2∗∗MSL(最長報文段壽命)的時間後,當客戶端撤銷相應的TCB後,才進入CLOSED狀態。
  6. 服務器只要收到了客戶端發出的確認,立即進入CLOSED狀態。同樣,撤銷TCB後,就結束了這次的TCP連接。可以看到,服務器結束TCP連接的時間要比客戶端早一些。

簡述:客戶端發一個FIN包請求斷開連接,服務器回一個ACK包斷開客戶端項服務器的連接。服務器再發一個FIN請求斷開連接,同時要發一個ACK包確定對方是之前跟自己斷開連接的客戶端,客戶端再回一個ACK包確定斷開連接。

(3)爲什麼是三次握手和四次揮手?

(4)dos、ddos攻擊

4.如何保證可靠有序的傳輸

  • 三次握手建立連接
  • 拆包時SYN的設置確保了包的順序正確
  • 通過校驗機制確保發送數據的準確
  • 應答機制,也就是將數據發送給對方後,對方必須應答是否發送成功
  • 使用“滑動窗口”機制,根據網絡的好壞,控制發送的分組數據的大小

 

五. UDP協議:用戶數據報協議

1.特點

無連接不可靠傳輸

2.UDP報文格式

  • 局域網:UDP傳輸數據的最長長度 = 1518 - 18 -20 - 8 =1472bit
  • 廣域網:用UDP協議發送時,用sendto函數最大能發送數據的長度爲:65535- IP頭(20) - UDP頭(8)=65507字節。用sendto函數發送數據時,如果發送數據長度大於該值,則函數會返回錯誤 

3.協議特點

  • 無連接的:發送數據之前不需要建立連接,減少了開銷和發送數據之前的延時。(時效性比FTP協議好)
    • 視頻用UDP傳,QQ消息也用UDP傳(因爲快,即使),文件傳輸用TCP傳
  • 盡最大努力交付:不保證可靠的交付,主機不需要維持複雜的鏈接狀態表。
  • 面向報文的:發送方的UDP對應用程序交下來的報文,在添加首部後就向下交付給IP層。既不拆分,也不合並,而是保留這些報文的邊界,因此,應用程序需要選擇合適的報文大小。
  • 沒有擁堵控制(發完就收發完就收,不會堵塞)
  • 支持一對一、多對一和多對多的交互通信(TCP只能一對一)

 

六. TCP與UDP

傳輸方式:面向報文(發的報文格式)

首部開銷:就是報文格式在數據前面加的東西

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章