1. 程式人生 > >面試基礎知識之計算機網路

面試基礎知識之計算機網路

一、計算機網路
基礎部分
1. TCP報頭格式
TCP協議頭最少20個位元組,包括以下的區域:
TCP源埠(Source Port):16位的源埠其中包含初始化通訊的埠。源埠和源IP地址的作用是標示報問的返回地址。
TCP目的埠(Destination port):16位的目的埠域定義傳輸的目的。這個埠指明報文接收計算機上的應用程式地址介面。
TCP序列號(序列碼,Sequence Number):32位
TCP應答號(Acknowledgment Number):32位的序列號由接收端計算機使用,重組分段的報文成最初形式。,如果設定了ACK控制位,這個值表示一個準備接收的包的序列碼。
資料偏移量(HLEN):4位包括TCP頭大小,指示何處資料開始。
保留(Reserved):6位值域,這些位必須是0。為了將來定義新的用途所保留。
標誌(Code Bits):6位標誌域。表示為:緊急標誌、有意義的應答標誌、推、重置連線標誌、同步序列號標誌、完成傳送資料標誌。按照順序排列是:URG、ACK、PSH、RST、SYN、FIN。
1. URG:緊急標誌
緊急(The urgent pointer) 標誌有效。緊急標誌置位,
2. ACK:確認標誌
確認編號(Acknowledgement Number)欄有效。大多數情況下該標誌位是置位的。TCP報頭內的確認編號欄內包含的確認編號(w+1,Figure:1)為下一個預期的序列編號,同時提示遠端系統已經成功接收所有資料。
3. PSH:推標誌
該標誌置位時,接收端不將該資料進行佇列處理,而是儘可能快將資料轉由應用處理。在處理 telnet 或 rlogin 等互動模式的連線時,該標誌總是置位的。
4. RST:復位標誌
復位標誌有效。用於復位相應的TCP連線。
5. SYN:同步標誌
同步序列編號(Synchronize Sequence Numbers)欄有效。該標誌僅在三次握手建立TCP連線時有效。它提示TCP連線的服務端檢查序列編號,該序列編號為TCP連線初始端(一般是客戶端)的初始序列編號。在這裡,可以把TCP序列編號看作是一個範圍從0到4,294,967,295的32位計數器。通過TCP連線交換的資料中每一個位元組都經過序列編號。在TCP報頭中的序列編號欄包括了TCP分段中第一個位元組的序列編號。
6. FIN:結束標誌
帶有該標誌置位的資料包用來結束一個TCP回話,但對應埠仍處於開放狀態,準備接收後續資料。
視窗(Window):16位,用來表示想收到的每個TCP資料段的大小。
校驗位(Checksum):16位TCP頭。源機器基於資料內容計算一個數值,收資訊機要與源機器數值 結果完全一樣,從而證明資料的有效性。
優先指標(緊急,Urgent Pointer):16位,指向後面是優先資料的位元組,在URG標誌設定了時才有效。如果URG標誌沒有被設定,緊急域作為填充。加快處理標示為緊急的資料段。
選項(Option):長度不定,但長度必須以位元組。如果 沒有 選項就表示這個一位元組的域等於0。 
資料(Date):應用程式的資料。
TCP報文格式


更多詳細解釋參考:TCP報文詳解
2. UDP報頭格式
UDP資料報格式有首部和資料兩個部分。首部很簡單,共8位元組。包括:
◆源埠(Source Port):2位元組,源埠號。
◆目的埠(Destination Port ):2位元組,目的埠號。
◆長度(Length):2位元組,UDP使用者資料報的總長度,以位元組為單位。
◆檢驗和(Checksum):2位元組,用於校驗UDP資料報的數字段和包含UDP資料報首部的“偽首部”。其校驗方法同IP分組首部中的首部校驗和。
偽首部,又稱為偽包頭(Pseudo Header):是指在TCP的分段或UDP的資料報格式中,在資料報首部前面增加源IP地址、目的IP地址、IP分組的協議欄位、TCP或UDP資料報的總長度等共12位元組,所構成的擴充套件首部結構。此偽首部是一個臨時的結構,它既不向上也不向下傳遞,僅僅只是為了保證可以校驗套接字的正確性。
3. TCP/UDP區別(不僅是巨集觀上的,最好能根據各自的機制講解清楚)

1、TCP面向連線(如打電話要先撥號建立連線);UDP是無連線的,即傳送資料之前不需要建立連線
2、TCP提供可靠的服務。也就是說,通過TCP連線傳送的資料,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保 證可靠交付
3、TCP面向位元組流,實際上是TCP把資料看成一連串無結構的位元組流;UDP是面向報文的
UDP沒有擁塞控制,因此網路出現擁塞不會使源主機的傳送速率降低(對實時應用很有用,如IP電話,實時視訊會議等)
4、每一條TCP連線只能是點到點的;UDP支援一對一,一對多,多對一和多對多的互動通訊
5、TCP首部開銷20位元組;UDP的首部開銷小,只有8個位元組
6、TCP的邏輯通訊通道是全雙工的可靠通道,UDP則是不可靠通道
4. HTTP狀態碼(最好結合使用場景,比如在快取命中時使用哪個)

1**(資訊類):表示接收到請求並且繼續處理
100——客戶必須繼續發出請求
101——客戶要求伺服器根據請求轉換HTTP協議版本

2**(響應成功):表示動作被成功接收、理解和接受
200——表明該請求被成功地完成,所請求的資源傳送回客戶端
201——提示知道新檔案的URL
202——接受和處理、但處理未完成
203——返回資訊不確定或不完整
204——請求收到,但返回資訊為空
205——伺服器完成了請求,使用者代理必須復位當前已經瀏覽過的檔案
206——伺服器已經完成了部分使用者的GET請求

3**(重定向類):為了完成指定的動作,必須接受進一步處理
300——請求的資源可在多處得到
301——本網頁被永久性轉移到另一個URL
302——請求的網頁被轉移到一個新的地址,但客戶訪問仍繼續通過原始URL地址,重定向,新的URL會在response中的Location中返回,瀏覽器將會使用新的URL發出新的Request。
303——建議客戶訪問其他URL或訪問方式
304——自從上次請求後,請求的網頁未修改過,伺服器返回此響應時,不會返回網頁內容,代表上次的文件已經被快取了,還可以繼續使用
305——請求的資源必須從伺服器指定的地址得到
306——前一版本HTTP中使用的程式碼,現行版本中不再使用
307——申明請求的資源臨時性刪除

4**(客戶端錯誤類):請求包含錯誤語法或不能正確執行
400——客戶端請求有語法錯誤,不能被伺服器所理解
401——請求未經授權,這個狀態程式碼必須和WWW-Authenticate報頭域一起使用
HTTP 401.2 - 未授權:伺服器配置問題導致登入失敗
  HTTP 401.3 - ACL 禁止訪問資源
  HTTP 401.4 - 未授權:授權被篩選器拒絕
HTTP 401.5 - 未授權:ISAPI 或 CGI 授權失敗
402——保留有效ChargeTo頭響應
403——禁止訪問,伺服器收到請求,但是拒絕提供服務
HTTP 403.1 禁止訪問:禁止可執行訪問
  HTTP 403.2 - 禁止訪問:禁止讀訪問
  HTTP 403.3 - 禁止訪問:禁止寫訪問
  HTTP 403.4 - 禁止訪問:要求 SSL
  HTTP 403.5 - 禁止訪問:要求 SSL 128
  HTTP 403.6 - 禁止訪問:IP 地址被拒絕
  HTTP 403.7 - 禁止訪問:要求客戶證書
  HTTP 403.8 - 禁止訪問:禁止站點訪問
  HTTP 403.9 - 禁止訪問:連線的使用者過多
  HTTP 403.10 - 禁止訪問:配置無效
  HTTP 403.11 - 禁止訪問:密碼更改
  HTTP 403.12 - 禁止訪問:對映器拒絕訪問
  HTTP 403.13 - 禁止訪問:客戶證書已被吊銷
  HTTP 403.15 - 禁止訪問:客戶訪問許可過多
  HTTP 403.16 - 禁止訪問:客戶證書不可信或者無效
HTTP 403.17 - 禁止訪問:客戶證書已經到期或者尚未生效
404——一個404錯誤表明可連線伺服器,但伺服器無法取得所請求的網頁,請求資源不存在。eg:輸入了錯誤的URL
405——使用者在Request-Line欄位定義的方法不允許
406——根據使用者傳送的Accept拖,請求資源不可訪問
407——類似401,使用者必須首先在代理伺服器上得到授權
408——客戶端沒有在使用者指定的餓時間內完成請求
409——對當前資源狀態,請求不能完成
410——伺服器上不再有此資源且無進一步的參考地址
411——伺服器拒絕使用者定義的Content-Length屬性請求
412——一個或多個請求頭欄位在當前請求中錯誤
413——請求的資源大於伺服器允許的大小
414——請求的資源URL長於伺服器允許的長度
415——請求資源不支援請求專案格式
416——請求中包含Range請求頭欄位,在當前請求資源範圍內沒有range指示值,請求也不包含If-Range請求頭欄位
417——伺服器不滿足請求Expect頭欄位指定的期望值,如果是代理伺服器,可能是下一級伺服器不能滿足請求長。

5**(服務端錯誤類):伺服器不能正確執行一個正確的請求
HTTP 500 - 伺服器遇到錯誤,無法完成請求
  HTTP 500.100 - 內部伺服器錯誤 - ASP 錯誤
  HTTP 500-11 伺服器關閉
  HTTP 500-12 應用程式重新啟動
  HTTP 500-13 - 伺服器太忙
  HTTP 500-14 - 應用程式無效
  HTTP 500-15 - 不允許請求 global.asa
  Error 501 - 未實現
HTTP 502 - 閘道器錯誤
HTTP 503:由於超載或停機維護,伺服器目前無法使用,一段時間後可能恢復正常
5. HTTP協議(一些報頭欄位的作用,如cace-control、keep-alive)
概括如下:
* 承載與TCP協議之上,有時也承載於TLS或SSL協議層之上,這個時候,就成了我們常說的HTTPS。
* 預設HTTP的埠號為80,HTTPS的埠號為443。
* HTTP協議是一個無狀態的協議,同一個客戶端的這次請求和上次請求是沒有對應關係。
* http請求由三部分組成,分別是:請求行、訊息報頭、請求正文
* 請求方法主要有GET和POST兩種
GET:在瀏覽器的位址列中輸入網址的方式訪問網頁時,瀏覽器採用GET方法向伺服器獲取資源。
POST:要求被請求伺服器接受附在請求後面的資料,常用於提交表單。
參考:HTTP詳解
參考2:HTTP內容
6. OSI協議、TCP/IP協議以及每層對應的協議。
* 應用層:檔案傳輸、電子郵件、檔案服務、虛擬終端(HTTP\SMTP\FTP\DNS\)
* 表示層:(沒有協議(Telnet))
* 會話層:(沒有協議)
* 傳輸層:提供端對端的介面(TCP/UDP)
* 網路層:為資料包選擇路由(IP\ICMP\ARP)
* 資料鏈路層:傳輸有地址的幀(PPP\RARP)
* 物理層:以二進位制形式在物理媒體上傳輸資料
7. SESSION機制、cookie機制
* cookie通過客戶端確定記錄資訊確定使用者身份,session通過伺服器端記錄資訊確定使用者身份。
* 雖然Session儲存在伺服器,對客戶端是透明的,它的正常執行仍然需要客戶端瀏覽器的支援。這是因為Session需要使用Cookie作為識別標誌。HTTP協議是無狀態的,Session不能依據HTTP連線來判斷是否為同一客戶,因此伺服器向客戶端瀏覽器傳送一個名為JSESSIONID的Cookie,它的值為該Session的id(也就是HttpSession.getId()的返回值)。Session依據該Cookie來識別是否為同一使用者。
8. TCP三次握手、四次揮手(這個問題真的要回答吐了,不過真的是面試官最喜歡問的,建議每天手擼一遍,而且不只是每次請求的過程,各種FIN_WAIT、TIME_WAIT狀態也要掌握)。
9. 開啟網頁到頁面顯示之間的過程(涵蓋了各個方面,DNS解析過程,Nginx請求轉發、連線建立和保持過程、瀏覽器內容渲染過程,考慮的越詳細越好)。
10. http和https區別,https在請求時額外的過程,https是如何保證資料安全的
11. IP地址子網劃分
12. POST和GET區別
13. DNS解析過程
14. TCP如何保證資料的可靠傳輸的(這個問題可以引申出很多子問題,擁塞控制慢開始、擁塞避免、快重傳、滑動視窗協議、停止等待協議、超時重傳機制,最好都能掌握)
15. 地址解析協議ARP
16. 交換機和路由器的區別
* 路由器可以給你的區域網自動分配IP,虛擬撥號,就像一個交通警察,指揮著你的電腦該往哪走,你自己不用操心那麼多了。交換機只是用來分配網路資料的。
* 路由器在網路層,路由器根據IP地址定址,路由器可以處理TCP/IP協議,交換機不可以。交換機在中繼層,交換機根據MAC地址定址
* 路由器可以把一個IP分配給很多個主機使用,這些主機對外只表現出一個IP。交換機可以把很多主機連起來,這些主機對外各有各的IP。
* 路由器提供防火牆的服務,交換機不能提供該功能。集線器、交換機都是做埠擴充套件的,就是擴大區域網(通常都是乙太網)的接入點,也就是能讓區域網可以連進來更多的電腦。 路由器是用來做網間連線,也就是用來連線不同的網路。

相關推薦

面試基礎知識計算機網路

一、計算機網路 基礎部分 1. TCP報頭格式 TCP協議頭最少20個位元組,包括以下的區域: TCP源埠(Source Port):16位的源埠其中包含初始化通訊的埠。源埠和源IP地址的作用是標示報問的返回地址。 TCP目的埠(Destinat

【軟考】——網路與資訊保安基礎知識計算機網路發展歷程、計算機網路的分類)

計算機網路???——》計算機技術與通訊技術相結合的產物; 計算機網路發展歷程???——》“終端一計算機網”、“計算機一計算機網” 、現代具有統一網路體系結構的計算機網路; 具有通訊功能的單機

校招面試知識點複習計算機網路

1、電路交換與分組交換 電路交換特點:資源會被預留 電路交換分為:頻分多路複用以及時分多路複用 優點:可以為一個通話保證特定數量的端到端頻寬 缺點:效率低 分組交換特點:資源不會被預留 優點:效率高 今天的因特網就是分組交換的典範!

面試基礎知識LINUX篇

1. 硬連結和軟連線區別 * 硬連結: 與普通檔案沒什麼不同,inode 都指向同一個檔案在硬碟中的區塊 * 軟連結: 儲存了其代表的檔案的絕對路徑,是另外一種檔案,在硬碟上有獨立的區塊,訪問時替換自身路徑。 2. kill用法,某個程序殺不掉的原因(

【搞定網路協議】計算機網路基礎知識總結

本文按照五層網路模型進行基礎知識點的總結: 目   錄: 各層網路協議總覽: 1、各層的協議單元 2、各層的主要協議 3 、網絡卡、路由器、交換機 一  應用層 1、HTTP協議 2、DHCP協議 3、DNS協議和HTTP請求過程

網路學習基礎詳解① 計算機網路與Internet

網路學習之路之基礎詳解① 計算機網路概述之整體瞭解 首先我們理清總體思路,來看看計算機網路概述整體的框圖 從上圖我們可以大致瞭解到計算機網路包含內容,下面我們來對各方面進行詳細學習: (1)計算機網路VS Internet ①基礎理解: 計算機網路:一些互相連線的,自治的計算機的

面試複習計算機網路

計算機網路體系結構 概述 組成和分類(區域網和廣域網) 標準組織(OSI和IEEE) 體系結構 層次結構 協議、服務和介面 參考模型 OSI(7層)和TCP/IP(5層) 物理層 通訊基礎 奈奎斯特定理和夏農公式、編碼調製 電路、報文

實現網路通訊的一些基礎知識計算機聯絡java)

網路分層:      TCP/IP的網路分層模型       應用層                                :HTTP協議/FTP(檔案傳輸協議)/SMTP(郵件傳輸協議)/POP3(郵件接收協議)..........................

Linux 網路基礎知識IP地址和子網掩碼詳解

部分內容圖片截自慕課網 1. TCP/IP四層模型會對資料逐層打包,其中網路層負責打包IP包頭,而IP包頭拆開內容格式如下圖 注意:一般情況下IP包頭為20個位元組,160個bit大小,包括5行資料,但在IPV4協議下並非一定如此,可能包含其他資訊,

程式設計師常見面試 計算機網路 知識點小結

前言 悉心整理校正了計算機網路的面試常用知識點,文章圖文並茂,通俗易懂,希望對大家有所幫助。 TCP提供面向連線的、可靠的資料流傳輸,而UDP提供的是非面向連線的、不可靠的資料流傳輸。 TCP傳輸單位稱為TCP報文段,UDP傳輸單位稱為使用者資料報。T

Java 面試計算機網路

OSI與TCP/IP各層 TCP、HTTP TCP與HTTP的報文結構 TCP三次握手、四次揮手 TCP三次握手(建立連線) 第一次握手:客戶端向伺服器傳送SYN(seq=j)包到伺服器; 第二次握手:伺服器收到SYN包,

算法基礎知識樹、二叉樹,

pan rect nbsp 結構 src class wiki 子節點 資料 一、樹 把它叫做“樹”是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。在計算機科學中,樹(英語:tree)是一種抽象數據類型(ADT)或是實作這種

算法基礎知識樹、二叉樹

image inline cstyle width var mar span mes med 一、樹 把它叫做“樹”是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。在計算機科學中,樹(英語:tree)是一種抽象數據類型(AD

計算機基礎知識-->計算機硬件-->硬件

基礎知識 最大 讀取 驅動 核心 內存條 內存 電路 臨時 主板、CPU和內存條 主板:計算機中最大的那塊電路板----人的軀幹 CPU:計算機的核心部件----大腦 內存條:臨時儲存的作用 硬盤驅動器和光盤驅動器 主要的外儲設備 硬盤:保存計算機的各種數據 光驅:

python基礎知識將item寫入JSON文件:

ext self 它的 基礎 string 寫入 lan raw pre pipelines.py import json class xxPipeline(object): def __init__(self): self.filename=ope

scrapy基礎知識 使用FormRequest.from_response()方法模擬用戶登錄:

imp gin req params level spa 密碼 重寫 start 通常網站通過 實現對某些表單字段(如數據或是登錄界面中的認證令牌等)的預填充 使用Scrapy抓取網頁時,如果想要預填充或重寫像用戶名、用戶密碼這些表單字段, 可以使用 FormRequest

scrapy基礎知識 pycharm 調試小技巧:

.py 小技巧 char line awl spi cmd 調試 基礎知識 在項目根目錄下新建main.py文件,用於調試 from scrapy.cmdline import executeexecute(["scrapy","crawl","MySpider"])scr

scrapy基礎知識 RedisCrawlSpider:

span 準備 動態 none efi pytho sel ext import 這個RedisCrawlSpider類爬蟲繼承了RedisCrawlSpider,能夠支持分布式的抓取。因為采用的是crawlSpider,所以需要遵守Rule規則,以及callback不能寫

scrapy基礎知識 Scrapy-Redis分布式策略:

空間 spider head spi 指紋 負責 edi all redis Scrapy-Redis分布式策略: 假設有四臺電腦:Windows 10、Mac OS X、Ubuntu 16.04、CentOS 7.2,任意一臺電腦都可以作為 Master端 或 Slave

scrapy基礎知識 關於爬蟲部分一些建議:

限制 支持 結束 攜程 target 經理 框架 實際應用 分享 1.盡量減少請求次數,能抓列表頁就不抓詳情頁,減輕服務器壓力,程序員都是混口飯吃不容易。 2.不要只看 Web 網站,還有手機 App 和 H5,這樣的反爬蟲措施一般比較少。 3.實際應用時候,一般防守方做到