計算機網絡知識
-
互聯網的組成:
邊緣部分(所有連接的主機,用戶可以直接的使用)
核心部分(由大量網絡和連接網絡的路由器組成,爲邊緣部分的主機提供服務)。
-
通信方式:
CS客戶和服務器
p2p。
-
電路交換與分組交換:
電話交換:建立專用的物理鏈路,始終佔用;
報文交換:先把報文存儲下來,然後把相同目的地的報文統一發送。 分組交換:分組交換也使用存儲轉發,但是轉發的是分組並不是報文,需要事先切分,在切分的數據前面加上首部(其中包換了目的地址和原地址等控制信息)。
-
時延=發送時延+傳播時延+處理時延+排隊時延。
-
七層協議:表現層,會話層,應用層,傳輸層,網絡層,數據鏈路層,物理層。(網絡層以上都是網關)
表現層:信息的語法語義以及他們的鏈接,如加密解密,轉換翻譯,解壓縮。
會話層:不同機器上的用戶之間建立及管理會話。 應用層:爲特定應用程序體統數據傳輸服務,例如HTTP,DNS。數據單位爲報文。 傳輸層:提供的是進程間的通用數據傳輸服務端到端的連接。主要包括兩種協議,傳輸控制協議TCP,提供面向連接可靠的數據傳輸服務,數據單位爲報文段;用戶數據報協議UDP,提供無連接的數據傳輸服務,數據單位爲用戶數據報。重要功能爲複用和分用。 網絡層:爲主機間提供服務,網絡層把運輸層產生的報文段或者用戶數據報封裝成分組來進行傳輸。路由器 數據鏈路層:爲相鄰結點之間提供服務,數據鏈路層把網絡層傳來的分組封裝成幀。網橋 物理層:考慮的是怎麼在傳輸媒體上傳輸數據比特流,儘可能的屏蔽傳輸媒體和通信手段的差異。中繼器。
-
數據在各層之間的傳遞過程:在向下的過程中,需要添加下層協議所需的各種首部或者尾部,而在向上的過程中不斷地拆分首部和尾部,路由器只有三層協議,因爲路由器位於網絡的核心中,不需要爲進程或者應用程序提供服務,因此也就不需要運輸層和應用層。
-
帶通調製,模擬信號是連續的信號,數字信號是離散的信號,帶通調製把數字信號轉換爲模擬信號。
-
信通複用技術:
頻分複用:在相同的時間佔用不同的頻率帶寬資源。
時分複用:在不同的時間佔用相同的頻率帶寬資源。
-
交換機與路由器的區別:
交換機工作於數據鏈路層,能識別MAC地址,根據MAC地址轉發鏈路層數據幀。具有自學機制來維護IP地址與MAC地址的映射。
路由器位於網絡層,能識別IP地址並且根據IP地址轉發分組。維護着路由表,根據路由表選擇最佳的路線。
-
路由器分組轉發的流程:首先從數據報的首部提取目的主機的IP地址D,得到目的網絡地址N。如果N與此路由器之間相連的某個網絡地址,則直接交付。若路由表有目的地址爲D的特定主機路由,則把數據報直接傳送給表中所指明的下一跳路由器。若路由表中有到達網絡N的路由,則把數據報傳送給路由表中所指明的下一跳路由器。如路由表中有一個默認路由,則把數據報傳送給路由表中所指明的默認路由。報告轉發分組出錯
-
UDP和TCP的特點:
UDP是無連接的,盡最大的可能交付,沒有擁塞控制,面向報文。 TCP是面向連接的,提供可靠交付,有流量的控制擁塞控制,提供全雙工通信,面向字節流。需要維護連接狀態,報文頭裏面的確認序號,累計確認以及超時重傳機制保證不丟包,不重複,按序到達。一對一
-
udp和tdp首部格式
UDP首部格式:只有八個字節,包括源端口,目的端口,長度,檢驗和,12字節的僞首部是爲了計算檢驗而臨時添加的。 TCP首部格式: 序號:對於字節流鏡像編號。 確認號:期望收到的下一個報文段的序號。 數據偏移:指數據部分距離報文段起始處的偏移量,實際上指的是首部的長度。 確認ACK:當ACK=1時確認號字段有效,否則無效,TCP規定,在連接建立後所有傳送的報文段都必須把ACK置1. 同步SYN:在連接建立時,用來同步序號,當SYN=1,ACK=0表示這是一個連接請求報文段。若對方同意建立連接,則相應報文中SYN=1,ACK=1。 終止FIN:用來釋放一個連接,當FIN=1時表示此報文段的發送方的數據已發送完畢,並要求釋放運輸連接。 窗口:窗口值作爲接收方讓發送方設置其發送窗口的依據,之所以要有這個限制是因爲接收方的數據緩存空間是有限的。
-
TCP的三次握手:
首先服務器端處於監聽狀態,等待客戶的連接請求。 然後客戶端發送連接請求的報文段SYN=1,ACK=0.選擇一個初始的序號x。 服務器端收到連接請求報文段,如果同意建立建立,則向A發送連接確認報文段其中SYN=1,ACK=1,確認號爲x+1,同時也選擇一個初始的序號y。 客戶端收到服務器端的連接確認報文後,還要向服務器發送確認,確認號爲y+1,序號爲x+1、 服務器端收到客戶端的確認後連接建立。
-
TCP的四次揮手:
客戶端發送連接釋放報文段,FIN=1; 服務器端收到以後發送確認,此時TCP處於半關閉的狀態,服務器端能向客戶端發送數據,但是客戶端不能像服務器端發送數據。 當服務器端不在需要連接的時候,發送連接釋放請求報文段FIN=1. 客戶端收到發送確認,此時連接釋放。 TIME_WAIT:客戶端收到服務器端的FIN報文後進入此狀態,此時並不是直接進入CLOSED狀態,還需要等待一個時間計時器設置的時間,爲了確保最後一個確認報文段能夠到達。可能存在已失效的連接請求報文段,爲了防止這種報文段出現在本次連接意外,需要等待一段時間。
-
TCP滑動窗口:窗口是緩存的一部分,用來暫存字節流,發送方和接受方各有一個窗口,接收方通過TCP報文段中的窗口字段告訴發送方自己的窗口大小,發送方根據這個值和其他信息設置自己的窗口大小。
-
TCP擁塞控制:慢開始,擁塞避免,快重傳,快恢復。
-
TCP粘包:發送方發送的多個數據包,到接收方緩衝區收尾相連,粘成一個包,被接收
- 原因:TCP 協議默認使用 Nagle 算法可能會把多個數據包一次發送到接收方。應用程讀取緩存中的數據包的速度小於接收數據包的速度,緩存中的多個數據包會被應用程序當成一個包一次讀取。
- 處理方式發送方使用 TCP_NODELAY 選項來關閉 Nagle 算法;數據包增加開始符和結束,應用程序讀取、區分數據包;在數據包的頭部定義整個數據包的長度,應用程序先讀取數據包的長度,然後讀取整個長度的包字節數據,保證讀取的是單個包且完整。
-
域名系統DNS:把主機名解析爲IP地址,被設計成分佈式系統。
-
解析過程:主機將本地域名服務器解析過程採用遞歸,而本地域名服務器向其他域名服務器解析可以使用遞歸和迭代兩種發放。
-
迭代的方式下,本地域名服務器向一個域名服務器解析請求解析以後,結果返回本地域名服務器,然後本地域名服務器繼續向其他域名服務器請求解析。
-
在遞歸下,結果不是直接返回而是繼續向前請求解析,最後的結果纔會返回。
-
文件傳輸協議FTP:FTP在運輸層使用TCP,並且需要建立兩個並行的TCP連接:控制連接和數據連接。控制連接在整個會話期間一直保持打開,而數據連接在數據傳送完畢以後就關閉。控制連接使用端口號21,數據連接使用端口號20。
-
WEB頁面請求過程:
- 向DNS服務器發送DNS查詢報文來解析域名。
- 開始進行HTTP會話,需要先建立TCP連接。
- 在運輸層的傳輸過程中,HTTP報文被封裝進TCP中。HTTP請求報文使用端口號80,因爲服務器監聽的是80端口。連接建立以後,服務器會隨機分配一個端口號給特定的客戶端,以後的TCO傳輸都是使用這個端口號。
- 在網絡層的傳輸過程中,TCP報文段會被封裝進IP分組中,IP分組經過路由選擇,最後到底目的地。
- 在鏈路層,IP分組會被封裝進MAC幀中,IP地址解析成MAC地址需要使用ARP。
- 客戶端發送HTTP請求報文,請求獲取頁面。
- 服務器發送HTTP相應的報文,客戶端從而獲取該頁面。
- 瀏覽器得到頁面內容以後,解析並渲染,向用戶展示頁面。
-
網絡系統:
- LAN:局域網
- MAN:城域網
- WAN:廣域網
- 無線局域網:有固定基礎設施的和無固定基礎設施(自組網絡)的。其中自動自組網絡和移動IP並不相同。
-
MAC地址是12位16進制的。
- 127.0.0.1是送回地址,指本機一般用於測試。
- 192.168.0.1屬於IP地址的C類地址,屬於保留IP專門用於路由器設置。
- 10.0.0.1是內部地址,與172.15..-172.31.. 192.168.*.*一樣,內部網用的地址,不會出現在公網Internet上;
-
當一個主機請求查詢域名時,先查本地緩存;沒有緩存時請求本地域名服務器;本地域名服務器沒有請求根域名服務器。
-
以太網的MAC協議提供的是無連接不可靠的服務。
-
對於糾正一位差錯的海明碼,必須滿足如下條件:記冗餘位長度爲r,那麼總的碼長爲:2r-1,信息位長度爲:2r-r-1.所以依題設 2^r-r-1=4,r=3,即冗餘位至少應爲3位。
-
傳輸時延:一個站點衝開始發送數據幀到數據幀發送完畢所需的全部時間。
傳播時延:發送端開始發送數據到接收端收到數據所需要的全部時間。 傳輸時延和發送數據幀大小有關,而傳播時延和傳輸距離相關。 分組交換的數據幀最小,所以傳輸時延最小。
-
數據通信中:單工通信,半雙工通信,全雙工通信。
-
ICMP協議是IP協議:a.差錯報告報文;b.ICMP詢問報文。
-
HTTP的基礎是TCP/IP。
- X.25:分組交換網。
- IPX/SPX:全稱順序包交換協議的組合,它是Novell公司爲了適應網絡的發展而開發的通信協議,具有很強的適應性,安裝方便,同時還具有路由功能,可以實現多網段間的通信。其中,IPX協議負責數據包的傳送;SPX負責數據包傳輸的完整性。
-
SNMP 簡單網絡管理協議。該協議能支持網絡管理系統,用於監測連接到網絡上的設備是否有任何引起管理者關注的情況。
FTP 文件傳輸協議,用於Internet上的控制文件的雙向傳輸。
ICMP Internet控制報文協議。用於IP主機、路由器之間傳遞控制消息。
SMTP 是簡單郵件傳輸協議,是一組用於由源地址到目的地址傳送郵件的規則,幫助每臺計算機在發送或中轉信件時找到下一個目的地。是TCP協議支持的應用協議。
一般地,郵件客戶端只能用SMTP發送郵件,接收郵件一般採用IMAP或者POP3。
-
交換機有五種攻擊類型:vlan跳躍攻擊;生成樹攻擊;MAC表洪水攻擊;arp攻擊;vtp攻擊。
-
局域網拓撲結構一般有三種:星形,總線形,環形。
A類網絡的IP地址範圍爲:1.0.0.1-126.255.255.254;
B類網絡的IP地址範圍爲:128.1.0.1-191.255.255.254;
C類網絡的IP地址範圍爲:192.0.1.1-223.255.255.254
-
IP地址中的網絡號:指定了主機所屬的網絡。
-
路由協議的選擇:首先路由選擇協議都是自適應的,一般分爲兩類
內部網關協議IGP在自治系統內部使用,如RIP和OSPF。 外部網關協議EGP在自治系統之間使用,如BGP。 內部網關協議RIP:是一種分佈式的基於距離向量的路由選擇協議。距離是指跳書。RIP按固定的時間間隔僅和相鄰的路由器交換自己的路由表,經過若干次交換以後,所有路由器最終會知道到達本自治系統中任何一個網絡的最短距離和下一跳路由器地址。實現簡單,開銷小,但是最大距離15限制了網絡的規模。並且當網絡出現估值的時候需要較長的時間才能將消息傳遞到所有的路由器。 內部網關協議OSPF:最短路徑優先OSPF,是爲了克服RIP缺點而開發出來的。是隻用了最短路徑算法SPF,具有以下的特點,向本自治系統中的所有路由器發送信息,發送的信息及時與相鄰路由器的鏈路狀態,鏈路狀態包括與那些路由器相連以及鏈路度量,度量用的費用,距離,時延,帶寬來表示。只有當鏈路狀態發生變化的時候,路由器纔會發送信息。 外部網關協議BGP:BGP只能尋找一條比較好的路由但是不一定是最佳路由,它採用路徑向量路由選擇協議,每一個AS都必須配置BGS發言人,通過在兩個相鄰BGP發言人之間建立TCO連接來交換路由信息
-
瀏覽器輸入URL按下回車發送了什麼:
- 瀏覽器查找域名的IP地址:
- 查找瀏覽器緩存:DNS記錄
- 查找系統緩存:hosts文件
- 查找路由器緩存:DNS緩存
- 遞歸查詢
- 迭代查詢
- 瀏覽器與目標服務器建立TCP連接
- 通過DNS解析找到IP地址建立TCP連接
- 三次握手
- 瀏覽器通過http協議發送請求
- 瀏覽器向主機發送一個HTTP—GET方法報文請求。
- 某些服務器會做永久重定向響應
- 重定向的作用:爲了負載均衡或者導入流量,提高SEO排名,利用一個前端服務器接受請求,然後負載到不同的主機上,可以大大提高站點的業務併發處理能力;重定向也可將多個域名的訪問,集中到一個站點;
- 瀏覽器跟蹤重定向地址
- 服務器處理請求
- 服務器發送一個HTML響應
- 釋放TCP連接
- 瀏覽器顯示頁面
- 瀏覽器發送獲取嵌入在HTML中的其他內容
- 瀏覽器查找域名的IP地址:
-
jsp和servlet區別:Servlet適合動態輸出Web數據和業務邏輯處理,對於html頁面內容的修改非常不方便;JSP是在Html代碼中嵌入Java代碼,適合頁面的顯示。內置對象不同,獲取內置對象的方式不同。
- Servlet
- 一種服務器端的Java應用程序,是接收網絡服務的請求和產生響應的一種方式。
- 由Web容器加載和管理
- 用於生成動態Web內容
- 接受 http 請求,產生動態 http 響應。Web容器負責將 HTTP 請求轉換爲 HttpServletRequest 對象
- Jsp
- 是Servlet的擴展,本質上還是Servlet
- 每一個Jsp頁面就是一個Servlet實例
- Jsp頁面會被Web容器編譯成Servlet,Servlet再負責響應用戶請求
- Servlet
-
JSP內置對象
內置對象 作用 1 request 客戶端的請求信息:Http協議頭信息、Cookie、請求參數 2 response 用於服務器響應客戶端請求、返回信息 3 pageContext 頁面的上下文 4 session 客戶端與服務端之間的會話 5 application 用於獲取服務端應用生命週期的信息 6 out 用於服務器傳輸內容到客戶端的輸出流 7 config 初始化時,Jsp引擎向Jap頁面傳遞的信息 8 page 指向Jsp頁面本身 9 exception 頁面發送異常,產生的異常對象 -
JSP的作用域
作用域 名稱 描述 page 當前頁面作用域 相當於Java關鍵字中this。在這個作用域中存放的屬性值,只能在當前頁面中取出,一個頁面相關的對象和屬性 request 請求作用域 範圍是從請求創建到請求消亡這段時間,一個請求可以涉及的多個頁面。jsp:forward和jsp:include跳轉到其他頁面,也在作用域範圍。 session 會話作用域 範圍是一段客戶端和服務端持續連接的時間,用戶在會話有效期內多次請求所涉及的頁面。seesion會話器,服務端爲第一次建立連接的客戶端分配一段有效期內的屬性內存空間。 application 全局作用域 範圍是服務端Web應用啓動到停止,整個Web應用中所有請求所涉及的頁面。當服務器開啓時,會創建一個公共內存區域,任何客戶端都可以在這個公共內存區域存取值。 -
session和cookie區別(確定會話中的身份):
- session:在服務器端記錄信息,保存的數據大小取決於服務器的程序設計。可以被服務器的程序處理爲key-value類型的如何對象;存在服務器端,安全性高。量用戶會話服務器端保存大量 session 對服務器資源消耗較大。
- cookie:在瀏覽器端記錄信息,保存數據大小不超過4kb,大多數瀏覽器顯示一個站點最多20個cookie;存在瀏覽器裏的一端文本;可能被其他程序分析獲取,安全性低。信息保存在 cookie 中緩解了服務器存儲用信息的壓力
一般實際使用中,都是把關鍵信息保存在 session 裏,其他信息加密保存到cookie中。
-
forward和redirect的區別:
- 瀏覽器url地址顯示不同:服務端通過 forward 返回,瀏覽器 url 地址不會發生變化;服務器通過 redirect 返回,瀏覽器會重新請求, url 地址會發生變化
- 前後臺兩者頁面跳轉的處理方式不同:forward 跳轉頁面,是服務端進行頁面跳轉加載(include)新頁面,直接返回到瀏覽器;redirect 跳轉頁面,是服務端返回新的 url 地址,瀏覽器二次發出 url 請求
- 參數攜帶情況不一樣,forward 跳轉頁面,會攜帶請求的參數到新的頁面;redirect 跳轉頁面,屬於一次全新的 http 請求,無法攜帶上一次請求的參數
- http請求次數不同:forward 1次;redirect 2次
-
Http:
-
介紹:超文本傳輸協議,是一個基於TCP/IP通信協議來傳遞數據,默認端口號80
-
注意:HTTP是無連接的(可以節約時間)、是媒體獨立的、是無狀態的
-
HTTP協議版本:
- HTTP/1.0:支持GET、POST、HEAD三種HTTP請求方法。
- HTTP/1.1:該版本默認採用持久連接,並能很好地配合代理服務器工作。還支持以管道方式同時發送多個請求,以便降低線路負載,提高傳輸速度。新增了:OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT六種HTTP請求方法。
GET:請求指定的頁面信息,並返回實體主體。長度受限制,顯示在地址拉中,不適合私密傳出以及大量數據傳出。
HEAD:類似於 GET 請求,只不過返回的響應中沒有具體的內容,值返回響應頭,用於獲取報頭,查看狀態,更加高效
POST:向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST 請求可能會導致新的資源的建立和/或已有資源的修改。把傳輸的數據封裝在HTTP請求數據中,以名稱/值的形式出現,可以傳輸大量數據,適用於表單的提交
PUT:從客戶端向服務器傳送的數據取代指定的文檔的內容。
DELETE:請求服務器刪除指定的頁面。
CONNECT:HTTP/1.1 協議中預留給能夠將連接改爲管道方式的代理服務器。
OPTIONS:允許客戶端查看服務器的性能。
TRACE:回顯服務器收到的請求,主要用於測試或診斷。
PATCH:是對 PUT 方法的補充,用來對已知資源進行局部更新 。
-
請求報文:請求行,請求頭部,空行和請求體
- 請求行:請求方法,請求URL(不包含域名),HTTP協議版本
- 請求頭部:由關鍵字/值對組成,每行一對
- User-Agent : 產生請求的瀏覽器類型
- Accept : 服務器支持哪些請求方法。
- Content-Type:告訴客戶端實際返回的內容的內容類型
- Host : 請求的主機名,允許多個域名同處一個IP地址,即虛擬主機
- 空行:請求頭之後是一個空行,通知服務器以下不再有請求頭
- 請求體:GET沒有請求數據,POST有。
-
響應報文:狀態行,消息報頭,空行,響應體
- 狀態行:服務器HTTP協議版本,響應狀態碼,狀態碼的文本描述:HTTP/1.1 200 OK
- 狀態碼:第一個數字定義響應類別:
- 1xx:指示信息,表示請求已接收,繼續處理
- 2xx:成功,操作被成功接收並處理
- 200 OK:客戶端請求成功
- 204 No Content:無內容。
- 206 Partial Content:服務器已經完成了部分GET請求(客戶端進行了範圍請求)。
- 3xx:重定向
- 301 Moved Permanently:永久重定向,表示請求的資源已經永久的搬到了其他位置
- 302 Found:臨時重定向,表示請求的資源臨時搬到了其他位置
- 303 See Other:臨時重定向,應使用GET定向獲取請求資源。303功能與302一樣,區別只是303明確客戶端應該使用GET訪問
- 307 Temporary Redirect:臨時重定向,和302有着相同含義。POST不會變成GET
- 304 Not Modified:表示客戶端發送附帶條件的請求(GET方法請求報文中的IF…)時,條件不滿足。
- 4xx:客戶端錯誤
- 400 Bad Request:客戶端請求有語法錯誤,服務器無法理解。
- 401 Unauthorized:請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用。
- 403 Forbidden:服務器收到請求,但是拒絕提供服務
- 404 Not Found:請求資源不存在。比如,輸入了錯誤的url
- 415 Unsupported media type:不支持的媒體類型
- 5xx:服務器端錯誤,服務器未能實現合法的請求。
- 500 Internal Server Error:服務器發生不可預期的錯誤。
- 503 Server Unavailable:服務器當前不能處理客戶端的請求,一段時間後可能恢復正常,
- 狀態碼:第一個數字定義響應類別:
- 狀態行:服務器HTTP協議版本,響應狀態碼,狀態碼的文本描述:HTTP/1.1 200 OK
-