計算機網絡基礎面試題

1. TCP/UDP比較

TCP優點: 面向鏈接,可靠地。基於字節流的全雙工傳輸層協議.
TCP缺點: 首部開銷20字節,鏈接只能點對點
UDP優點: 首部8字節,沒有擁塞機制,支持一對一,多對一,多對多。
UDP缺點: 無鏈接,提供面向事物但不可靠的信息傳遞。

2. TCP握手與揮手

aliveclipboard.pnggit

因爲握手和揮手都會佔用資源,因此長鏈接能夠用到(header裏的keep-alive)
長/短鏈接的操做過程github

短鏈接的操做步驟:
創建鏈接 -> 數據傳輸 -> 關閉鏈接
長鏈接的操做步驟:
創建鏈接 -> 數據傳輸 -> (保持鏈接) -> 數據傳輸 -> 關閉鏈接

瀏覽器請求網頁過程:
DNS域名解析 ---- TCP三次握手 ---- HTTP請求發送 ---- 服務器處理 ---- 返回結果 ---- 關閉TCP ---- 瀏覽器解析HTML瀏覽器

3. socket簡介

通訊的基石。支持TCP/IP等協議的基本操做單元。
包含進行通訊的五種必要信息: 協議(TCP/UDP...), 本機IP, 本地進程協議端口, 遠地主機IP, 遠地進程協議端口。

應用層經過傳輸層進行數據通訊時,TCP會遇到同時爲多個應用程序進程提供併發服務的問題。多個TCP鏈接或多個應用程序進程可能須要經過同一個 TCP協議端口傳輸數據。爲了區別不一樣的應用程序進程和鏈接,許多計算機操做系統爲應用程序與TCP/IP協議交互提供了套接字(Socket)接口。應 用層能夠和傳輸層經過Socket接口,區分來自不一樣應用程序進程或網絡鏈接的通訊,實現數據傳輸的併發服務。服務器

創建socket鏈接
創建Socket鏈接至少須要一對套接字,其中一個運行於客戶端,稱爲ClientSocket ,另外一個運行於服務器端,稱爲ServerSocket 。
套接字之間的鏈接過程分爲三個步驟:服務器監聽,客戶端請求,鏈接確認。
服務器監聽:服務器端套接字並不定位具體的客戶端套接字,而是處於等待鏈接的狀態,實時監控網絡狀態,等待客戶端的鏈接請求。
客戶端請求:指客戶端的套接字提出鏈接請求,要鏈接的目標是服務器端的套接字。爲此,客戶端的套接字必須首先描述它要鏈接的服務器的套接字,指出服務器端套接字的地址和端口號,而後就向服務器端套接字提出鏈接請求。
鏈接確認:當服務器端套接字監聽到或者說接收到客戶端套接字的鏈接請求時,就響應客戶端套接字的請求,創建一個新的線程,把服務器端套接字的描述發 給客戶端,一旦客戶端確認了此描述,雙方就正式創建鏈接。而服務器端套接字繼續處於監聽狀態,繼續接收其餘客戶端套接字的鏈接請求。網絡

SOCKET鏈接與TCP鏈接
建立Socket鏈接時,能夠指定使用的傳輸層協議,Socket能夠支持不一樣的傳輸層協議(TCP或UDP),當使用TCP協議進行鏈接時,該Socket鏈接就是一個TCP鏈接。併發

Socket鏈接與HTTP鏈接
因爲一般狀況下Socket鏈接就是TCP鏈接,所以Socket鏈接一旦創建,通訊雙方便可開始相互發送數據內容,直到雙方鏈接斷開。但在實際網 絡應用中,客戶端到服務器之間的通訊每每須要穿越多箇中間節點,例如路由器、網關、防火牆等,大部分防火牆默認會關閉長時間處於非活躍狀態的鏈接而致使 Socket 鏈接斷連,所以須要經過輪詢告訴網絡,該鏈接處於活躍狀態。
而HTTP鏈接使用的是「請求—響應」的方式,不只在請求時須要先創建鏈接,並且須要客戶端向服務器發出請求後,服務器端才能回覆數據。
不少狀況下,須要服務器端主動向客戶端推送數據,保持客戶端與服務器數據的實時與同步。此時若雙方創建的是Socket鏈接,服務器就能夠直接將數 據傳送給客戶端;若雙方創建的是HTTP鏈接,則服務器須要等到客戶端發送一次請求後才能將數據傳回給客戶端,所以,客戶端定時向服務器端發送鏈接請求, 不只能夠保持在線,同時也是在「詢問」服務器是否有新的數據,若是有就將數據傳給客戶端。socket

4. 狀態碼

在響應結果中都會有一個HTTP狀態碼,諸如咱們熟知的200、40四、500等
狀態碼都是由三位數字和緣由短語組成,大體爲五類:
1XX 信息性狀態碼 接收的請求正在處理
2XX 成功狀態碼 請求正常處理完畢
3XX 重定向狀態碼 須要附加操做以完成請求
4XX 客戶端錯誤狀態碼 服務器也沒法處理的請求
5XX 服務器錯誤狀態碼 服務器請求處理出錯spa

網絡基礎概念TCP/socket等操作系統

相關文章
相關標籤/搜索