天天看點

【面經】面試官:講講七層網絡模型與TCP三向交握與四次斷開?

C/S架構

用戶端/服務端架構

OSI七層架構

七層模型,亦稱OSI(Open System Interconnection)參考模型,是參考模型是國際标準化組織(ISO)制定的一個用于計算機或通信系統間互聯的标準體系。它是一個七層的、抽象的模型體,不僅包括一系列抽象的術語或概念,也包括具體的協定。

分層如下。

應用層 (Application)

網絡服務與最終使用者的一個接口。協定有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

表示層(Presentation Layer)

資料的表示、安全、壓縮。(在五層模型裡面已經合并到了應用層)格式有,JPEG、ASCll、DECOIC、加密格式等

會話層(Session Layer)

建立、管理、終止會話。(在五層模型裡面已經合并到了應用層)對應主機程序,指本地主機與遠端主機正在進行的會話

傳輸層 (Transport)

定義傳輸資料的協定端口号,以及流控和差錯校驗。協定有:TCP UDP,資料包一旦離開網卡即進入網絡傳輸層

網絡層 (Network)

進行邏輯位址尋址,實作不同網絡之間的路徑選擇。協定有:ICMP IGMP IP(IPV4 IPV6) ARP RARP

資料鍊路層 (Link)

建立邏輯連接配接、進行硬體位址尋址、差錯校驗等功能。(由底層網絡定義協定)将比特組合成位元組進而組合成幀,用MAC位址通路媒體,錯誤發現但不能糾正。

實體層(Physical Layer)

建立、維護、斷開實體連接配接。(由底層網絡定義協定)

TCP的三次握手和四次斷開

相對于SOCKET開發者,TCP建立過程和連結折除過程是由TCP/IP協定棧自動建立的.是以開發者并不需要控制這個過程.但是對于了解TCP底層運作機制,相當有幫助.

TCP三向交握

所謂三次握手(Three-way Handshake),是指建立一個TCP連接配接時,需要用戶端和伺服器總共發送3個包。

三次握手的目的是連接配接伺服器指定端口,建立TCP連接配接,并同步連接配接雙方的序列号和确認号并交換 TCP 視窗大小資訊.在socket程式設計中,用戶端執行connect()時。将觸發三次握手。

【面經】面試官:講講七層網絡模型與TCP三向交握與四次斷開?

第一次握手

用戶端發送一個TCP的SYN标志位置1的包指明客戶打算連接配接的伺服器的端口,以及初始序号X,儲存在標頭的序列号(Sequence Number)字段裡。

第二次握手

伺服器發回确認包(ACK)應答。即SYN标志位和ACK标志位均為1同時,将确認序号(Acknowledgement Number)設定為客戶的I S N加1以.即X+1。

第三次握手

用戶端再次發送确認包(ACK) SYN标志位為0,ACK标志位為1.并且把伺服器發來ACK的序号字段+1,放在确定字段中發送給對方.并且在資料段放寫ISN的+1

TCP四次斷開

TCP的連接配接的拆除需要發送四個包,是以稱為四次揮手(four-way handshake)。用戶端或伺服器均可主動發起揮手動作,在socket程式設計中,任何一方執行close()操作即可産生揮手操作。

【面經】面試官:講講七層網絡模型與TCP三向交握與四次斷開?

第一次斷開

Client發送一個FIN,用來關閉Client到Server的資料傳送,Client進入FIN_WAIT_1狀态。

第二次斷開

Server收到FIN後,發送一個ACK給Client,确認序号為收到序号+1(與SYN相同,一個FIN占用一個序号),Server進入CLOSE_WAIT狀态。

第三次斷開

Server發送一個FIN,用來關閉Server到Client的資料傳送,Server進入LAST_ACK狀态。

第四次斷開

Client收到FIN後,Client進入TIME_WAIT狀态,接着發送一個ACK給Server,确認序号為收到序号+1,Server進入CLOSED狀态,完成四次揮手。

Socket

Socket通常也稱作"套接字",用于描述IP位址和端口,是一個通信鍊的句柄,應用程式通常通過"套接字"向網絡送出請求或者應答網絡請求。套接字能唯一表示出網際網路上一台主機上的一個應用程式

Socket起源于Unix,而Unix/Linux基本哲學之一就是“一切皆檔案”,對于檔案用【打開】【讀寫】【關閉】模式來操作。Socket就是該模式的一個實作,Socket即是一種特殊的檔案,一些Socket函數就是對其進行的操作(讀/寫IO、打開、關閉)

Socket和File的差別

File子產品是針對某個指定檔案進行【打開】【讀寫】【關閉】

Socket子產品是針對 伺服器端 和 用戶端Socket 進行【打開】【讀寫】【關閉】

【面經】面試官:講講七層網絡模型與TCP三向交握與四次斷開?

繼續閱讀