面試過程中,網絡往往是必問的環節,然而我們在工作中往往只是使用它,很少需要去了解它的原理,不只是爲了面試,瞭解一下原理也可以幫助我們在工作中解決很多疑惑,因此瞭解原理還是很有必要的。再說TCP/IP協議之前,首先了解一下OSI(開放式系統互聯)。
OSI
在OSI中,把網絡通信的工作分爲7層,分別是物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。
物理層:
佈線、光纖、網卡和其它用來把兩臺網絡通信設備連接在一起的東西。
數據鏈路層:
運行以太網等協議,把數據幀轉換成二進制位供物理層處理。MAC地址、交換機或者網卡和驅動程序等都屬於數據鏈路層的範疇。
網絡層:
選擇合適的網間路由和交換結點, 確保數據及時傳送,將數據鏈路層提供的幀組成數據包,其中數據包中包含源站點和目的站點地址。IP、路由協議、地址解析協議都屬於網絡層的範疇。
傳輸層:
提供端對端的通信管理。TCP、UDP等就屬於傳輸層的範疇。
會話層:
提供包括訪問驗證和會話管理在內的建立和維護應用之間通信的機制。
表示層:
提供格式化的表示和轉換數據服務,數據的解壓縮、加解密一般都是由該層完成。
應用層:
各種應用程序協議,例如HTTP、FTP、SMTP、DNS等都屬於應用層的範疇。
如圖
IP協議
IP協議在OSI中屬於網絡層的範疇,通過IP協議可以把物理網絡連接起來,使其對外看起來好像是一個統一的整體。
IP是TCP/IP協議族中的核心,TCP、UDP等都是以IP數據包格式傳輸;IP數據包傳輸服務具有不可靠性、無連接性(無狀態)。
UDP協議
UDP協議在OSI中屬於傳輸層的範疇,它是無連接、沒有擁塞控制,盡最大可能交付的通信,它支持一對一、一對多、多對一、多對多的通信。
UDP是不可靠協議,不支持超時重傳、出錯重傳等功能。
TCP協議
TCP協議在OSI中也屬於傳輸層的範疇,它提供面向連接、可靠的字節流服務。
TCP的三次握手:
1、 當服務端處於監聽狀態時,客戶端向服務端發送連接請求報文:SYN=1,ACK=0,選擇一個初始的序號x,完成第一次握手;
2、 服務端收到連接請求的報文,若同意連接,則向客戶端發送連接確認報文:SYN=1,ACK=1,確認號爲x+1,並選擇一個初始的序號y,完成第二次握手;
3、 客戶端收到服務端的連接確認報文後,客戶端繼續向服務端發出確認報文:確認號y+1,序號x+1,完成第三次握手,到此開始進行傳輸。
TCP的四次揮手:
1、 客戶端發出連接釋放報文,並且停止發送數據;
2、 服務端接收到釋放報文,併發出確認報文,此時TCP處於半關閉狀態,服務端能想客戶端發送消息,客戶端不能向服務端發送消息;
3、 客戶端接收到服務端的確認報文後,等待服務端發送連接釋放報文,當服務器把最後的數據發送完成後開始發送完成後開始發送連接釋放報文,當客戶端接收到連接釋放報文後;
4、 客戶端接收到服務端發送的連接釋放報文後,向服務端發出確認報文,並設置計時器等待2倍的最長報文壽命,等再次收到服務端發送過來的fin命令後關閉連接,服務端接收到客戶端的確認後,立即進入關閉狀態。
TCP/IP協議族
TCP/IP協議不僅僅指的是TCP 和IP兩個協議,而是一個由FTP、SMTP、TCP、UDP、IP等協議構成的協議簇, 只是因爲在TCP/IP協議中TCP協議和IP協議最具代表性,所以被稱爲TCP/IP協議。
1、在TCP/IP協議族中,將osi的應用層、表示層、會話層合併爲應用層一個層次。
2、數據鏈路層和物理層歸併在網絡接口層。
常見面試題
1、TCP三次握手的原因:
防止失效的連接請求到達服務器後,服務器重複打開鏈接。
例如,因爲網絡原因導致第一次鏈接請求在網絡中滯留,然後客戶端又發送了一次連接請求,此時,如果沒有三次握手機制,服務器就會打開兩條鏈接。
2、爲什麼連接的時候是三次握手,關閉的時候卻是四次握手?
在連接時,當服務端接收到連接的報文時,服務端可以將應答報文和同步報文同時發送給客戶端,但是當服務端接收到關閉的報文時,服務端有可能還有數據沒有發送完成,因此服務端只能將應答報文先返回,等數據發送完成後再發送FIN報文。
3、四次揮手的原因
a、 確保服務端能把所有數據發送完成
4、TCP協議如何保證數據不被丟失?
當發送數據報被丟棄時,網絡層的ICMP協議會把錯誤信息反饋給TCP, TCP解析後會進行數據重傳。
5、爲什麼ICMP會把數據報異返回給TCP而不是UDP?
TCP的首部長度爲20個字節,而UDP的首部長度爲8字節,多的12個字節中有4個字節保存的是32位的ICMP信息,而ICMP數據包由8bit的錯誤類型和8bit的代碼和16bit的校驗和組成。
6、爲什麼tcp要經過三次握手四次揮手?
答案參考1、3
參考資料:
TCP、UDP、IP詳解:https://blog.csdn.net/zpoison/article/details/86528327
TCP的三次握手與四次揮手理解及面試題(很全面):
https://blog.csdn.net/qq_38950316/article/details/81087809
百度百科:
https://baike.baidu.com/item/TCP%2FIP%E5%8D%8F%E8%AE%AE/212915?fromtitle=tcp%2Fip&fromid=214077
微信公衆號 關注我,看到更多