1. 程式人生 > >Java崗 面試考點精講(網絡篇03期)

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

重復 以及 請求超時 包括 就是 直接 主機 使用 mba

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工作在哪層

表示層

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. 常用端口以及對應服務

常見服務端口
HTTP 80
FTP 21
DNS 53
POP3 110
SMTP 25
SSH 22
nginx 80
MEMCACHED 11211
MYSQL 3306
TOMCAT 8080
NFS 2049
TLENET 23
HTTPS 443
SAMBA UDP139 TCP139
POSTFIX 25
IMAP 143
ZABBIX 10051
DHCP 56

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崗 面試考點精講(網絡篇03期)