Java崗 面試考點精講(網絡篇03期)
1. OSI七層模型
總結一下:
-
應用用層按協議打包數據
-
由傳輸層加上雙方的端口號
-
由網絡層加上雙方的IP地址
-
由鏈路層加上雙方的MAC地址,並將數據拆分成數據幀
-
數模信號轉換並由物理層傳輸到另一端
每一層的協議
-
物理層: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模型的一個濃縮版本,它只有四個層次:
-
應用層,對應著OSI的應用層、表示層、會話層
-
傳輸層,對應著OSI的傳輸層
-
網絡層,對應著OSI的網絡層
-
網絡接口層,對應著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. 為什麽要三次握手?
-
保持信息對等。
-
防止請求超時導致臟連接。
8. 兩次握手會怎樣?
如果兩次握手就創建連接,傳輸完數據並釋放連接後,第一個超時的連接請求才到達服務器,服務器會認為是客戶端創建新連接的請求,然後創建連接。此時客戶端的狀態不是SYN_SENT,所以會直接丟棄服務器傳來的確認數據,導致最後只是服務器單方面建立了連接。
9. 四次揮手
這個圖不好畫,網上找了一個。
-
客戶端想要關閉連接,然後發送FIN信號並帶上seq信息給服務器,
-
服務器應答ACK告訴客戶端可以斷開,但是要等我把數據發送完嘍。註意這時候客戶端進入FIN_WAIT_2狀態。
-
服務器將數據發送完後發送FIN+ACK給客戶端,告訴客戶端OK了,然後自己進入CLOSE_WAIT狀態。
-
客戶端收到後,給服務器發送ACK確認收到,然後自己進入TIME_WAIT狀態。
經過2MSL,客戶端沒有收到服務器傳來的報文,則確定服務器已經收到最後的ACK信號,連接正式釋放。
四次揮手白話文:
-
客戶端:我斷連接了阿
-
服務器:噢,好的知道了,不過要等等,我還有一些數據沒傳完,我傳完了告訴你。
-
服務器:小老弟,我傳完了,可以關閉了,收到請回復(沒有回復的話我過會重新喊你)
-
客戶端:收到(我得再等等,要確認我哥收到了我的回復)
為什麽不直接關閉而是進入TIME_WAIT呢?
-
客戶端要確認服務器能收到ACK信號。(如果不確認這一點,服務器會認為客戶端沒有收到自己的FIN+ACK報文,所以會重發)
-
防止失效請求。(為了防止已失效的連接的請求數據包和正常的混淆)
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. 在瀏覽器中輸入網址之後執行會發生什麽?
-
DNS解析,找到對應ip地址
-
客戶端發起http/https請求,然後交給傳輸層
-
傳輸層將請求分成報文段,添加目標源和端口,並隨機用一個本地接口封裝進報頭,然後交給網絡層。
-
網絡層加上雙方的ip地址信息,並負責路由分發。
-
鏈路層中,包通過鏈路層發送到路由器,通過鄰居協議查找給定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是什麽協議,簡單語言解釋一下工作原理
地址解析協議。
-
每個主機都會在自己的ARP緩沖區中建立一個ARP列表,以表示IP地址和MAC地址之間的對應關系。
-
當源主機要發送數據時,首先檢查ARP列表中是否有對應IP地址的目的主機的MAC地址,如果有,則直接發送數據,如果沒有,就向本網段的所有主機發送ARP數據包,該數據包包括的內容有:源主機 IP地址,源主機MAC地址,目的主機的IP地址。
-
當本網絡的所有主機收到該ARP數據包時,首先檢查數據包中的IP地址是否是自己的IP地址,如果不是,則忽略該數據包,如果是,則首先從數據包中取出源主機的IP和MAC地址寫入到ARP列表中,如果已經存在,則覆蓋,然後將自己的MAC地址寫入ARP響應包中,告訴源主機自己是它想要找的MAC地址。
-
源主機收到ARP響應包後。將目的主機的IP和MAC地址寫入ARP列表,並利用此信息發送數據。如果源主機一直沒有收到ARP響應數據包,表示ARP查詢失敗。
廣播發送ARP請求,單播發送ARP響應。
15. DHCP協議有什麽作用
一個局域網的網絡協議,使用UDP協議工作,用途:給內部網絡或網絡服務供應商自動分配IP地址,給用戶或者內部網絡管理員作為對所有計算機作中央管理的手段。
16. 子網掩碼的作用
子網掩碼只有一個作用,就是將某個IP地址劃分成網絡地址和主機地址兩部分。
通過IP和子網掩碼計算網絡號(筆試題)
計算出IP二進制和子網掩碼的二進制,然後取與
通過IP和子網掩碼計算主機號(筆試題)
將子網掩碼的二進制取反,然後與IP的二進制取與。
Java崗 面試考點精講(網絡篇03期)