Java崗 面試考點精講(網路篇03期)

2020-10-23 11:00:01

1. OSI七層模型

 

總結一下:

  1. 應用用層按協定打包資料
  2. 由傳輸層加上雙方的埠號
  3. 由網路層加上雙方的IP地址
  4. 由鏈路層加上雙方的MAC地址,並將資料拆分成資料框
  5. 數模訊號轉換並由物理層傳輸到另一端

每一層的協定

  • 物理層:RJ45、CLOCK、IEEE802.3 (中繼器,集線器,閘道器)
  • 資料鏈路:PPP、FR、HDLC、VLAN、MAC (網橋,交換機)
  • 網路層:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
  • 傳輸層:TCP、UDP、SPX
  • 對談層:NFS、SQL、NETBIOS、RPC
  • 表示層:JPEG、MPEG、ASII
  • 應用層:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS

SSL工作在哪層

表示層

大家覺得本次面試題總結的寫得不錯的朋友,大家可以轉發+關注,然後掃描下方二維條碼獲取更多面試題以及答案— 掃描新增暗號:【CSDN】

 

2. TCP/IP模型

TCP/IP模型實際上是OSI模型的一個濃縮版本,它只有四個層次:

  1. 應用層,對應著OSI的應用層、表示層、對談層
  2. 傳輸層,對應著OSI的傳輸層
  3. 網路層,對應著OSI的網路層
  4. 網路介面層,對應著OSI的資料鏈路層和物理層

OSI模型的網路層同時支援面向連線和無連線的通訊,但是傳輸層只支援面向連線的通訊;TCP/IP模型的網路層只提供無連線的服務,但是傳輸層上同時提供兩種通訊模式。

3. 說一下TTL

Time To Live

封包再傳輸過程中每經過一個路由器,TTL就減1,直到TTL=0時,封包被丟棄,並行送ICMP報文通知源主機防止重複傳送。

4. ping和tracert命令用的什麼協定

ICMP

5. MTU是什麼

最大傳輸單元。

由於不同硬體的物理特性不同,對資料框的最大長度都有不同的限制,這個最大長度稱為MTU。

(然後通過路由對IP報文進行分片完成傳輸。)

6. 三次握手

6.1 部分報頭資訊宣告

seq: 序列號,表示資料第一個位元組的序號

ack: 確認序列號,表示期望收到的第一個位元組的序號

6.1.1 FLAG位

常用的由SYN、ACK、FIN。

SYN:用作建立連線時的同步訊號。

ACK:用於對收到的資料進行確認。

FIN:表示後面沒有資料需要傳送,連線需要關閉。

6.2 握手過程

 

第一次握手:使用者端傳送封包將SYN置1,表示希望建立連線,seq=x。發完後進入SYN_SEND狀態。

第二次握手:伺服器收到請求後,通過SYN確認是建立連線請求,然後傳送一個響應包,將SYN=1 ACK=1 seq=y ack=x+1,然後進入SYN_RCVDz狀態

第三次握手:使用者端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=y+1),此包傳送完畢,使用者端和伺服器進入ESTABLISHED狀態,完成三次握手。

7. 為什麼要三次握手?

  1. 保持資訊對等。
  2. 防止請求超時導致髒連線。

8. 兩次握手會怎樣?

如果兩次握手就建立連線,傳輸完資料並釋放連線後,第一個超時的連線請求才到達伺服器,伺服器會認為是使用者端建立新連線的請求,然後建立連線。此時使用者端的狀態不是SYN_SENT,所以會直接丟棄伺服器傳來的確認資料,導致最後只是伺服器單方面建立了連線。

9. 四次揮手

這個圖不好畫,網上找了一個。

 

  1. 使用者端想要關閉連線,然後傳送FIN訊號並帶上seq資訊給伺服器,
  2. 伺服器應答ACK告訴使用者端可以斷開,但是要等我把資料傳送完嘍。注意這時候使用者端進入FIN_WAIT_2狀態。
  3. 伺服器將資料傳送完後傳送FIN+ACK給使用者端,告訴使用者端OK了,然後自己進入CLOSE_WAIT狀態。
  4. 使用者端收到後,給伺服器傳送ACK確認收到,然後自己進入TIME_WAIT狀態。

經過2MSL,使用者端沒有收到伺服器傳來的報文,則確定伺服器已經收到最後的ACK訊號,連線正式釋放。

四次揮手白話文:

  1. 使用者端:我斷連線了阿
  2. 伺服器:噢,好的知道了,不過要等等,我還有一些資料沒傳完,我傳完了告訴你。
  3. 伺服器:小老弟,我傳完了,可以關閉了,收到請回復(沒有回覆的話我過會重新喊你)
  4. 使用者端:收到(我得再等等,要確認我哥收到了我的回覆)

為什麼不直接關閉而是進入TIME_WAIT呢?

  1. 使用者端要確認伺服器能收到ACK訊號。(如果不確認這一點,伺服器會認為使用者端沒有收到自己的FIN+ACK報文,所以會重發)
  2. 防止失效請求。(為了防止已失效的連線的請求封包和正常的混淆)

10. TCP和UDP區別

  • TCP面向連線,UDP面向非連線
  • TCP提供可靠的服務(資料傳輸無差錯、不丟失、不重複、按序到達),UDP不可靠
  • TCP面向位元組流,UDP面向報文
  • TCP資料傳輸慢,UDP資料傳輸快
  • TCP首部開銷20位元組,UDP8位元組

11. 常用埠以及對應服務

常見服務
HTTP80
FTP21
DNS53
POP3110
SMTP25
SSH22
nginx80
MEMCACHED11211
MYSQL3306
TOMCAT8080
NFS2049
TLENET23
HTTPS443
SAMBAUDP139 TCP139
POSTFIX25
IMAP143
ZABBIX10051
DHCP56

12. 在瀏覽器中輸入網址之後執行會發生什麼?

  1. DNS解析,找到對應ip地址
  2. 使用者端發起http/https請求,然後交給傳輸層
  3. 傳輸層將請求分成報文段,新增目標源和埠,並隨機用一個本地介面封裝進報頭,然後交給網路層。
  4. 網路層加上雙方的ip地址資訊,並負責路由分發。
  5. 鏈路層中,包通過鏈路層傳送到路由器,通過鄰居協定查詢給定IP地址的MAC地址,然後傳送ARP請求查詢目的地址,如果得到迴應後就可以使用ARP的請求應答交換的IP封包進行傳輸了,然後傳送IP封包到達伺服器的地址。

有問題或者有漏掉的部分可以在評論區提出。

13. IP地址的分類

A類地址:以0開頭,第一個位元組範圍:0~127(1.0.0.0 - 126.255.255.255);

B類地址:以10開頭,第一個位元組範圍:128~191(128.0.0.0 - 191.255.255.255);

C類地址:以110開頭,第一個位元組範圍:192~223(192.0.0.0 - 223.255.255.255);

內部地址:10.0.0.0—10.255.255.255, 172.16.0.0—172.31.255.255, 192.168.0.0—192.168.255.255。

14. ARP是什麼協定,簡單語言解釋一下工作原理

地址解析協定。

  1. 每個主機都會在自己的ARP緩衝區中建立一個ARP列表,以表示IP地址和MAC地址之間的對應關係。

  2. 當源主機要傳送資料時,首先檢查ARP列表中是否有對應IP地址的目的主機的MAC地址,如果有,則直接傳送資料,如果沒有,就向本網段的所有主機傳送ARP封包,該封包包括的內容有:源主機 IP地址,源主機MAC地址,目的主機的IP地址。

  3. 當本網路的所有主機收到該ARP封包時,首先檢查封包中的IP地址是否是自己的IP地址,如果不是,則忽略該封包,如果是,則首先從封包中取出源主機的IP和MAC地址寫入到ARP列表中,如果已經存在,則覆蓋,然後將自己的MAC地址寫入ARP響應包中,告訴源主機自己是它想要找的MAC地址。

  4. 源主機收到ARP響應包後。將目的主機的IP和MAC地址寫入ARP列表,並利用此資訊傳送資料。如果源主機一直沒有收到ARP響應封包,表示ARP查詢失敗。

廣播傳送ARP請求,單播傳送ARP響應。

15. DHCP協定有什麼作用

一個區域網的網路協定,使用UDP協定工作,用途:給內部網路或網路服務供應商自動分配IP地址,給使用者或者內部網路管理員作為對所有計算機作中央管理的手段。

16. 子網掩碼的作用

子網掩碼只有一個作用,就是將某個IP地址劃分成網路地址和主機地址兩部分。

通過IP和子網掩碼計算網路號(筆試題)

計算出IP二進位制和子網掩碼的二進位制,然後取與

通過IP和子網掩碼計算主機號(筆試題)

將子網掩碼的二進位制取反,然後與IP的二進位制取與。

以上便是此次分享的面試題以及答案,如果覺得還不過癮,大家可以關注我的公眾號-【Java爛豬皮】,裡面有往期的面試題以及最新的面試分享,關注後回覆:【666】即可免費獲取更多的Java架構進階vip學習資料