1. 網(wǎng)絡七層架構
1.2 七層模型主要包括:
- 物理層:主要定義物理設備標準音五,如網(wǎng)線的接口類型祈远、光纖的接口類型、各種傳輸介質(zhì)的傳輸速率等冕屯。它的主要作用是傳輸比特流(就是由 1、0 轉(zhuǎn)化為電流強弱來進行傳輸,到達目的地后在轉(zhuǎn)化為1、0厨剪,也就是我們常說的模數(shù)轉(zhuǎn)換與數(shù)模轉(zhuǎn)換)。這一層的數(shù)據(jù)叫做比特(Bit)麦向。
- 數(shù)據(jù)鏈路層:主要將從物理層接收的數(shù)據(jù)進行 MAC 地址(網(wǎng)卡的地址)的封裝與解封裝。常把這一層的數(shù)據(jù)叫做幀(Frame)客叉。在這一層工作的設備是交換機诵竭,數(shù)據(jù)通過交換機來傳輸。
- 網(wǎng)絡層:主要將從下層接收到的數(shù)據(jù)進行 IP 地址(例 192.168.0.1)的封裝與解封裝兼搏。在這一層工作的設備是路由器卵慰,常把這一層的數(shù)據(jù)叫做數(shù)據(jù)包(Packet)。
- 傳輸層:定義了一些傳輸數(shù)據(jù)的協(xié)議和端口號(WWW 端口 80 等)佛呻,如:TCP(傳輸控制協(xié)議裳朋,傳輸效率低,可靠性強吓著,用于傳輸可靠性要求高再扭,數(shù)據(jù)量大的數(shù)據(jù))氧苍,UDP(用戶數(shù)據(jù)報協(xié)議,與 TCP 特性恰恰相反泛范,用于傳輸可靠性要求不高,數(shù)據(jù)量小的數(shù)據(jù)紊撕,如 QQ 聊天數(shù)據(jù)就是通過這種方式傳輸?shù)模?主要是將從下層接收的數(shù)據(jù)進行分段進行傳輸罢荡,到達目的地址后在進行重組。常常把這一層數(shù)據(jù)叫做段(Segment)对扶。
- 會話層:通過傳輸層(端口號:傳輸端口與接收端口)建立數(shù)據(jù)傳輸?shù)耐?/strong>区赵。主要在你的系統(tǒng)之間發(fā)起會話或或者接受會話請求(設備之間需要互相認識可以是 IP 也可以是 MAC 或者是主機名)(會話協(xié)議數(shù)據(jù)單元SPDU)
- 表示層:主要是進行對接收的數(shù)據(jù)進行解釋、加密與解密浪南、壓縮與解壓縮等(也就是把計算機能夠識別的東西轉(zhuǎn)換成人能夠能識別的東西(如圖片笼才、聲音等))(表示協(xié)議數(shù)據(jù)單元PPDU)
-
應用層:主要是一些終端的應用,比如說FTP(各種文件下載)络凿,WEB(IE瀏覽)骡送,QQ之類的(你就把它理解成我們在電腦屏幕上可以看到的東西.就 是終端應用)。(應用協(xié)議數(shù)據(jù)單元APDU)
1.3 每一層的協(xié)議
- 物理層:RJ45絮记、CLOCK摔踱、IEEE802.3 (中繼器,集線器怨愤,網(wǎng)關)
- 數(shù)據(jù)鏈路:PPP派敷、FR、HDLC撰洗、VLAN篮愉、MAC (網(wǎng)橋,交換機)
- 網(wǎng)絡層:IP差导、ICMP试躏、ARP、RARP柿汛、OSPF冗酿、IPX、RIP络断、IGRP裁替、 (路由器)
- 傳輸層:TCP、UDP貌笨、SPX
- 會話層:NFS弱判、SQL、NETBIOS锥惋、RPC
- 表示層:JPEG昌腰、MPEG开伏、ASII
- 應用層:FTP、DNS遭商、Telnet固灵、SMTP、HTTP劫流、WWW巫玻、NFS
2. TCP/IP原理
TCP/IP 協(xié)議不是 TCP 和 IP 這兩個協(xié)議的合稱,而是指因特網(wǎng)整個 TCP/IP 協(xié)議族祠汇。從協(xié)議分層模型方面來講仍秤,TCP/IP 由四個層次組成:網(wǎng)絡接口層、網(wǎng)絡層可很、傳輸層诗力、應用層。
2.1 網(wǎng)絡 訪問層(Network Access Layer)
網(wǎng)絡訪問層(Network Access Layer)在 TCP/IP 參考模型中并沒有詳細描述我抠,只是指出主機必須使用某種協(xié)議與網(wǎng)絡相連苇本。
2.2 網(wǎng)絡層(Internet Layer)
網(wǎng)絡層(Internet Layer)是整個體系結(jié)構的關鍵部分,其功能是使主機可以把分組發(fā)往任何網(wǎng)絡屿良,并使分組獨立地傳向目標圈澈。這些分組可能經(jīng)由不同的網(wǎng)絡,到達的順序和發(fā)送的順序也可能不同尘惧。高層如果需要順序收發(fā)康栈,那么就必須自行處理對分組的排序∨绯龋互聯(lián)網(wǎng)層使用因特網(wǎng)協(xié)議(IP啥么,Internet Protocol)。
2.3 傳輸層(Tramsport Layer-TCP/UDP)
傳輸層(Tramsport Layer)使源端和目的端機器上的對等實體可以進行會話贰逾。在這一層定義了兩個端到端的協(xié)議:傳輸控制協(xié)議(TCP悬荣,Transmission Control Protocol)和用戶數(shù)據(jù)報協(xié)議(UDP,User Datagram Protocol)疙剑。TCP 是面向連接的協(xié)議氯迂,它提供可靠的報文傳輸和對上層應用的連接服務。為此言缤,除了基本的數(shù)據(jù)傳輸外嚼蚀,它還有可靠性保證、流量控制管挟、多路復用轿曙、優(yōu)先權和安全性控制等功能。UDP 是面向無連接的不可靠傳輸?shù)膮f(xié)議,主要用于不需要 TCP 的排序和流量控制等功能的應用程序导帝。
2.4 應用層(Application Layer)
應用層(Application Layer)包含所有的高層協(xié)議守谓,包括:虛擬終端協(xié)議(TELNET,TELecommunications NETwork)您单、文件傳輸協(xié)議(FTP斋荞,F(xiàn)ile Transfer Protocol)、電子郵件傳輸協(xié)議(SMTP睹限,Simple Mail Transfer Protocol)譬猫、域名服務(DNS,Domain NameService)羡疗、網(wǎng)上新聞傳輸協(xié)議(NNTP,Net News Transfer Protocol)和超文本傳送協(xié)議(HTTP别洪,HyperText Transfer Protocol)等叨恨。
2.4.1 TCP對應的應用層協(xié)議
- FTP:定義了文件傳輸協(xié)議,使用21端口挖垛。常說某某計算機開了FTP服務便是啟動了文件傳輸服務痒钝。下載文件,上傳主頁痢毒,都要用到FTP服務送矩。
- Telnet:它是一種用于遠程登陸的端口,用戶可以以自己的身份遠程連接到計算機上哪替,通過這種端口可以提供一種基于DOS模式下的通信服務。如以前的BBS是-純字符界面的凭舶,支持BBS的服務器將23端口打開,對外提供服務匆背。
- SMTP:定義了簡單郵件傳送協(xié)議身冀,現(xiàn)在很多郵件服務器都用的是這個協(xié)議,用于發(fā)送郵件珍促。如常見的免費郵件服務中用的就是這個郵件服務端口兄墅,所以在電子郵件設置-中常看到有這么SMTP端口設置這個欄沐悦,服務器開放的是25號端口。
- POP3:它是和SMTP對應瓶殃,POP3用于接收郵件副签。通常情況下,POP3協(xié)議所用的是110端口淆储。也是說冠场,只要你有相應的使用POP3協(xié)議的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陸進郵箱界面本砰,直接用郵件程序就可以收到郵件(如是163郵箱就沒有必要先進入網(wǎng)易網(wǎng)站碴裙,再進入自己的郵-箱來收信)。
- HTTP:從Web服務器傳輸超文本到本地瀏覽器的傳送協(xié)議点额。
2.4.2 UDP對應的應用層協(xié)議
- DNS:用于域名解析服務舔株,將域名地址轉(zhuǎn)換為IP地址。DNS用的是53號端口还棱。
- SNMP:簡單網(wǎng)絡管理協(xié)議载慈,使用161號端口,是用來管理網(wǎng)絡設備的珍手。由于網(wǎng)絡設備很多办铡,無連接的服務就體現(xiàn)出其優(yōu)勢。
- TFTP(Trival File Transfer Protocal):簡單文件傳輸協(xié)議珠十,該協(xié)議在熟知端口69上使用UDP服務料扰。
3. IP地址的分類
- A類地址:以0開頭, 第一個字節(jié)范圍:0~127(1.0.0.0 – 126.255.255.255)焙蹭;
- B類地址:以10開頭晒杈, 第一個字節(jié)范圍:128~191(128.0.0.0 – 191.255.255.255);
- C類地址:以110開頭孔厉, 第一個字節(jié)范圍:192~223(192.0.0.0 – 223.255.255.255)拯钻;
4. TCP三次握手/四次揮手
TCP 在傳輸之前會進行三次溝通,一般稱為“三次握手”撰豺,傳完數(shù)據(jù)斷開的時候要進行四次溝通粪般,一般稱為“四次揮手”。
4.1 數(shù)據(jù)包說明
- 源端口號( 16 位):它(連同源主機 IP 地址)標識源主機的一個應用進程小作。
- 目的端口號( 16 位):它(連同目的主機 IP 地址)標識目的主機的一個應用進程达罗。這兩個值加上 IP 報頭中的源主機 IP 地址和目的主機 IP 地址唯一確定一個 TCP 連接粮揉。
- 順序號 seq( 32 位):用來標識從 TCP 源端向 TCP 目的端發(fā)送的數(shù)據(jù)字節(jié)流,它表示在這個報文段中的第一個數(shù)據(jù)字節(jié)的順序號蝠引。如果將字節(jié)流看作在兩個應用程序間的單向流動矫夯,則TCP 用順序號對每個字節(jié)進行計數(shù)制肮。序號是 32bit 的無符號數(shù)豺鼻,序號到達 2 的 32 次方 - 1 后又從 0 開始。當建立一個新的連接時桩了, SYN 標志變 1 井誉,順序號字段包含由這個主機選擇的該連接的初始順序號 ISN ( Initial Sequence Number )。
-
確認號 ack( 32 位):包含發(fā)送確認的一端所期望收到的下一個順序號在岂。因此应狱,確認序號應當是上次已成功收到數(shù)據(jù)字節(jié)順序號加 1 疾呻。只有 ACK 標志為 1 時確認序號字段才有效。 TCP 為應用層提供全雙工服務璃岳,這意味數(shù)據(jù)能在兩個方向上獨立地進行傳輸铃慷。因此,連接的每一端必
須保持每個方向上的傳輸數(shù)據(jù)順序號馋缅。 - TCP 報頭長度( 4 位):給出報頭中 32bit 字的數(shù)目萤悴,它實際上指明數(shù)據(jù)從哪里開始。需要這個值是因為任選字段的長度是可變的内狗。這個字段占 4bit 柳沙,因此 TCP 最多有 60 字節(jié)的首部噪径。然而找爱,沒有任選字段,正常的長度是 20 字節(jié)吮播。
- 保留位( 6 位):保留給將來使用意狠,目前必須置為 0 。
- 控制位( control flags 院塞, 6 位):在 TCP 報頭中有 6 個標志比特迫悠,它們中的多個可同時被設置為 1 艺玲。依次為:
- URG :為 1 表示緊急指針有效忌警,為 0 則忽略緊急指針值法绵。
- ACK :為 1 表示確認號有效,為 0 表示報文中不包含確認信息徙赢,忽略確認號字段狡赐。
- PSH :為 1 表示是帶有 PUSH 標志的數(shù)據(jù)常柄,指示接收方應該盡快將這個報文段交給應用層而不用等待緩沖區(qū)裝滿西潘。
- RST :用于復位由于主機崩潰或其他原因而出現(xiàn)錯誤的連接。它還可以用于拒絕非法的報文段和拒絕連接請求东抹。一般情況下,如果收到一個 RST 為 1 的報文馏谨,那么一定發(fā)生了某些問題惧互。
- SYN :同步序號,為 1 表示連接請求艾猜,用于建立連接和使順序號同步( synchronize )匆赃。
- FIN :用于釋放連接,為 1 表示發(fā)送方已經(jīng)沒有數(shù)據(jù)發(fā)送了埠居,即關閉本方數(shù)據(jù)流滥壕。
窗口大小( 16 位):數(shù)據(jù)字節(jié)數(shù)胁孙,表示從確認號開始涮较,本報文的源方可以接收的字節(jié)數(shù),即源方接收窗口大小闺属。窗口大小是一個 16bit 字段掂器,因而窗口大小最大為 65535 字節(jié)。
校驗和( 16 位):此校驗和是對整個的 TCP 報文段乃摹,包括 TCP 頭部和 TCP 數(shù)據(jù)峡懈,以 16 位字進行計算所得荚恶。這是一個強制性的字段食寡,一定是由發(fā)送端計算和存儲抵皱,并由接收端進行驗證移盆。
緊急指針( 16 位):只有當 URG 標志置 1 時緊急指針才有效。TCP 的緊急方式是發(fā)送端向另一端發(fā)送緊急數(shù)據(jù)的一種方式叙甸。
選項:最常見的可選字段是最長報文大小裆蒸,又稱為 MSS(Maximum Segment Size) 。每個連
接方通常都在通信的第一個報文段(為建立連接而設置 SYN 標志的那個段)中指明這個選項遂赠,
它指明本端所能接收的最大長度的報文段筷弦。選項長度不一定是 32 位字的整數(shù)倍烂琴,所以要加填充
位,使得報頭長度成為整字數(shù)号醉。數(shù)據(jù): TCP 報文段中的數(shù)據(jù)部分是可選的畔派。在一個連接建立和一個連接終止時线椰,雙方交換的報
文段僅有 TCP 首部憨愉。如果一方?jīng)]有數(shù)據(jù)要發(fā)送径密,也使用沒有任何數(shù)據(jù)的首部來確認收到的數(shù)
據(jù)睹晒。在處理超時的許多情況中,也會發(fā)送不帶任何數(shù)據(jù)的報文段锉试。
4.2 三次握手
第一次握手:主機 A 發(fā)送位碼為 syn=1(同步序號),隨機產(chǎn)生 seq number=1234567(順序號) 的數(shù)據(jù)包到服務器呆盖,主機 B由 SYN=1 知道,A 要求建立聯(lián)機株扛;
第二次握手:主機 B 收到請求后要確認聯(lián)機 信息洞就,向 A 發(fā) 送 ack number=( 主機 A 的seq+1),syn=1,ack=1(確認號) ,隨機產(chǎn)生 seq(順序號)=7654321 的包
第三次握手:主機 A 收到后檢查 ack number (確認序號)是否正確,即第一次發(fā)送的 seq number+1,以及位碼ack(確認號) 是否為 1倾贰,若正確匆浙,主機 A 會再發(fā)送 ack number=(主機 B 的 seq(順序號)+1),ack(確認號)=1叹放,主機 B 收到后確認seq(順序號) 值與 ack(確認號)=1 則連接建立成功。
4.3 四次揮手
TCP 建立連接要進行三次握手,而斷開連接要進行四次雹嗦。這是由于 TCP 的半關閉造成的了罪。因為 TCP 連接是全雙工的(即數(shù)據(jù)可在兩個方向上同時傳遞)所以進行關閉時每個方向上都要單獨進行關閉泊藕。這個單方向的關閉就叫半關閉。當一方完成它的數(shù)據(jù)發(fā)送任務讼呢,就發(fā)送一個 FIN 來向另一方通告將要終止這個
方向的連接。
- 關閉客戶端到服務器的連接:首先客戶端 A 發(fā)送一個 FIN窜管,用來關閉客戶到服務器的數(shù)據(jù)傳送幕帆,然后等待服務器的確認。其中終止標志位 FIN=1碱茁,序列號 seq=u
- 服務器收到這個 FIN,它發(fā)回一個 ACK聋袋,確認號 ack 為收到的序號加 1。
- 關閉服務器到客戶端的連接:也是發(fā)送一個 FIN 給客戶端港令。
-
客戶段收到 FIN 后咪惠,并發(fā)回一個 ACK 報文確認,并將確認序號 seq 設置為收到序號加 1渠鸽。首先進行關閉的一方將執(zhí)行主動關閉徽缚,而另一方執(zhí)行被動關閉。
四次揮手.PNG
主機 A 發(fā)送 FIN 后,進入終止等待狀態(tài)详炬, 服務器 B 收到主機 A 連接釋放報文段后呛谜,就立即給主機 A 發(fā)送確認瓷翻,然后服務器 B 就進入 close-wait 狀態(tài)妒牙,此時 TCP 服務器進程就通知高層應用進程单旁,因而從 A 到 B 的連接就釋放了。此時是“半關閉”狀態(tài)饥伊。即 A 不可以發(fā)送給B象浑,但是 B 可以發(fā)送給 A。此時琅豆,若 B 沒有數(shù)據(jù)報要發(fā)送給 A 了愉豺,其應用進程就通知 TCP 釋放連接,然后發(fā)送給 A 連接釋放報文段茫因,并等待確認。A 發(fā)送確認后洛巢,進入 time-wait恃慧,注意,此時 TCP 連接還沒有釋放掉况增,然后經(jīng)過時間等待計時器設置的 2MSL 后肤京,A 才進入到close 狀態(tài)。
5. HTTP原理
HTTP是一個無狀態(tài)的協(xié)議祖很。無狀態(tài)是指客戶機(Web瀏覽器)和服務器之間不需要建立持久的連接,這意味著當一個客戶端向服務器端發(fā)出請求趟脂,然后服務器返回響應(response)硼一,連接就被關閉了霞赫,在服務器端不保留連接的有關信息.HTTP 遵循請求(Request)/應答(Response)模型≠骶螅客戶機(瀏覽器)向服務器發(fā)送請求,服務器處理請求并返回適當?shù)膽鸬峙摇K?HTTP 連接都被構造成一套請求和應答涛酗。
5.1 傳輸流程
-
地址解析
如用客戶端瀏覽器請求這個頁面:
http://localhost.com:8080/index.html
從中分解出協(xié)議名、主機名忌怎、端口骚揍、對象路徑等部分卵牍,對于我們的這個地址祭刚,解析得到的結(jié)果如下:- 協(xié)議名:http
- 主機名:localhost.com
- 端口:8080
- 對象路徑:/index.htm
在這一步,需要域名系統(tǒng) DNS 解析域名 localhost.com,得主機的 IP 地址耕蝉。
-
封裝 HTTP 請求數(shù)據(jù)包
把以上部分結(jié)合本機自己的信息柒瓣,封裝成一個 HTTP 請求數(shù)據(jù)包
-
封裝成 TCP 包并建立連接
封裝成 TCP 包,建立 TCP 連接(TCP 的三次握手)
-
客戶機發(fā)送請求命令
建立連接后遇伞,客戶機發(fā)送一個請求給服務器孽水,請求方式的格式為:統(tǒng)一資
源標識符(URL)、協(xié)議版本號搪柑,后邊是 MIME 信息包括請求修飾符、客戶機信息和可內(nèi)容脖捻。 -
服務器響應
服務器接到請求后瓦灶,給予相應的響應信息,其格式為一個狀態(tài)行,包括信息的協(xié)議版本號捺疼、一個成功或錯誤的代碼惕蹄,后邊是 MIME 信息包括服務器信息、實體信息和可能的內(nèi)容衍腥。
-
服務器關閉 TCP 連接
一般情況下磺樱,一旦 Web 服務器向瀏覽器發(fā)送了請求數(shù)據(jù),它就要關閉 TCP 連接婆咸,然后如果瀏覽器或者服務器在其頭信息加入了這行代碼 Connection:keep-alive竹捉,TCP 連接在發(fā)送后將仍然保持打開狀態(tài),于是尚骄,瀏覽器可以繼續(xù)通過相同的連接發(fā)送請求块差。保持連接節(jié)省了為每個請求
建立新連接所需的時間,還節(jié)約了網(wǎng)絡帶寬乖仇。
5.2 HTTP狀態(tài)
成功響應 | |
---|---|
200 | OK(成功) |
201 | Created(已創(chuàng)建) |
202 | Accepted(已創(chuàng)建) |
203 | Non-Authoritative Information(未授權信息) |
204 | No Content(無內(nèi)容) |
205 | Reset Content(重置內(nèi)容) |
206 | Partial Content(部分內(nèi)容) |
重定向 | |
300 | Multiple Choice(多種選擇) |
301 | Moved Permanently(永久移動) |
302 | Found(臨時移動) |
303 | See Other(查看其他位置) |
304 | Not Modified(未修改) |
305 | Use Proxy(使用代理) |
306 | unused (未使用) |
307 | Temporary Redirect(臨時重定向) |
308 | Permanent Redirect(永久重定向) |
客戶端錯誤 | |
400 | Bad Request(錯誤請求) |
401 | Unauthorized(未授權) |
402 | Payment Required(需要付款) |
403 | Forbidden(禁止訪問) |
404 | Not Found(未找到) |
405 | Method Not Allowed(不允許使用該方法) |
406 | Not Acceptable(無法接受) |
407 | Proxy Authentication Required(要求代理身份驗證) |
408 | Request Timeout(請求超時) |
409 | Conflict(沖突) |
410 | Gone(已失效) |
411 | Length Required(需要內(nèi)容長度頭) |
412 | Precondition Failed(預處理失敗) |
413 | Request Entity Too Large(請求實體過長) |
414 | Request-URI Too Long(請求網(wǎng)址過長) |
415 | Unsupported Media Type(媒體類型不支持) |
416 | Requested Range Not Satisfiable(請求范圍不合要求) |
417 | Expectation Failed(預期結(jié)果失敗) |
服務器端錯誤 | |
500 | Internal Server Error(內(nèi)部服務器錯誤) |
501 | Implemented(未實現(xiàn)) |
502 | Bad Gateway(網(wǎng)關錯誤) |
503 | Service Unavailable(服務不可用) |
504 | Gateway Timeout (網(wǎng)關超時) |
505 | HTTP Version Not Supported(HTTP 版本不受支持) |
6. HTTPS
HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer)憾儒,是以安全為目標的HTTP 通道询兴,簡單講是 HTTP 的安全版乃沙。即 HTTP 下加入 SSL 層,HTTPS 的安全基礎是 SSL诗舰。其所用的端口號是 443警儒。 過程大致如下:
-
建立連接獲取證書
SSL 客戶端通過 TCP 和服務器建立連接之后(443 端口),并且在一般的 tcp 連接協(xié)商(握手)過程中請求證書。即客戶端發(fā)出一個消息給服務器蜀铲,這個消息里面包含了自己可實現(xiàn)的算法列表和其它一些需要的消息边琉,SSL 的服務器端會回應一個數(shù)據(jù)包,這里面確定了這次通信所需要的算法记劝,然后服務器向客戶端返回證書变姨。(證書里面包含了服務器信息:域名。申請證書的公司厌丑,公共秘鑰)定欧。
-
證書驗證
Client 在收到服務器返回的證書后,判斷簽發(fā)這個證書的公共簽發(fā)機構怒竿,并使用這個機構的公共秘鑰確認簽名是否有效砍鸠,客戶端還會確保證書中列出的域名就是它正在連接的域名。
-
數(shù)據(jù)加密和傳輸
如果確認證書有效耕驰,那么生成對稱秘鑰并使用服務器的公共秘鑰進行加密爷辱。然后發(fā)送給服務器,服務器使用它的私鑰對它進行解密朦肘,這樣兩臺計算機可以開始進行對稱加密進行通信饭弓。
HTTPS.PNG
7. Session 與 Cookie 的對比
- 實現(xiàn)機制:Session的實現(xiàn)常常依賴于Cookie機制,通過Cookie機制回傳SessionID媒抠;
- 大小限制:Cookie有大小限制并且瀏覽器對每個站點也有cookie的個數(shù)限制示启,Session沒有大小限制,理論上只與服務器的內(nèi)存大小有關领舰;
-
安全性:Cookie存在安全隱患夫嗓,通過攔截或本地文件找得到cookie后可以進行攻擊,而Session由于保存在服務器端冲秽,相對更加安全舍咖;
服務器資源消耗:Session是保存在服務器端上會存在一段時間才會消失,如果session過多會增加服務器的壓力锉桑。 - Application(ServletContext):與一個Web應用程序相對應排霉,為應用程序提供了一個全局的狀態(tài),所有客戶都可以使用該狀態(tài)民轴。
8. 交換機和路由器分別的實現(xiàn)原理是什么攻柠?分別在哪個層次上面實現(xiàn)的?
- 交換機用于局域網(wǎng)后裸,利用主機的MAC地址進行數(shù)據(jù)傳輸瑰钮,而不需要關心IP數(shù)據(jù)包中的IP地址,它工作于數(shù)據(jù)鏈路層微驶。
- 路由器識別網(wǎng)絡是通過IP數(shù)據(jù)包中IP地址的網(wǎng)絡號進行的浪谴,所以為了保證數(shù)據(jù)包路由的正確性开睡,每個網(wǎng)絡都必須有一個唯一的網(wǎng)絡號。路由器通過IP數(shù)據(jù)包的IP地址進行路由的(將數(shù)據(jù)包遞交給哪個下一跳路由器)苟耻。路由器工作于網(wǎng)絡層篇恒。
- 由于設備現(xiàn)在的發(fā)展,現(xiàn)在很多設備既具有交換又具有路由功能凶杖,兩者的界限越來越模糊胁艰。
8.1 路由器和交換機的區(qū)別
-
工作層次不同:
交換機工作在數(shù)據(jù)鏈路層智蝠,而路由器工作在網(wǎng)絡層
-
數(shù)據(jù)轉(zhuǎn)發(fā)所依據(jù)的對象不同
交換機的數(shù)據(jù)轉(zhuǎn)發(fā)依據(jù)是利用物理地址或者說MAC地址來確定轉(zhuǎn)發(fā)數(shù)據(jù)的目的地址
而路由器是依據(jù)ip地址進行工作的
傳統(tǒng)的交換機只能分割沖突域蝗茁,不能分割廣播域;而路由器可以分割廣播域
9. TCP和UDP的區(qū)別
TCP | UDP | |
---|---|---|
連接 | 面向連接 | 面向無連接 |
可靠性 | 可靠,無差錯寻咒,不丟失哮翘,不重復 | 盡最大努力交付,即不保證可靠交付 |
模式 | 流模式(字節(jié)流) | 數(shù)據(jù)報模式(報文) |
連接 | 點到點 | 支持一對一毛秘,一對多饭寺,多對一和多對多的交互通信 |
首部開銷 | 20字節(jié) | 8個字節(jié) |
邏輯通信信道 | 全雙工的可靠信道 | 不可靠信道 |
速度 | 慢 | 快 |
對系統(tǒng)資源要求 | 較多 | 較少 |
TCP的優(yōu)點: 可靠,穩(wěn)定 TCP的可靠體現(xiàn)在TCP在傳遞數(shù)據(jù)之前叫挟,會有三次握手來建立連接赔嚎,而且在數(shù)據(jù)傳遞時袖肥,有確認弛槐、窗口橙困、重傳、擁塞控制機制奋献,在數(shù)據(jù)傳完后健霹,還會斷開連接用來節(jié)約系統(tǒng)資源。
TCP的缺點: 慢瓶蚂,效率低糖埋,占用系統(tǒng)資源高,易被攻擊 TCP在傳遞數(shù)據(jù)之前窃这,要先建連接瞳别,這會消耗時間,而且在數(shù)據(jù)傳遞時杭攻,確認機制祟敛、重傳機制、擁塞控制機制等都會消耗大量的時間兆解,而且要在每臺設備上維護所有的傳輸連接馆铁,事實上,每個連接都會占用系統(tǒng)的CPU痪宰、內(nèi)存等硬件資源叼架。 而且,因為TCP有確認機制衣撬、三次握手機制乖订,這些也導致TCP容易被人利用,實現(xiàn)DOS具练、DDOS乍构、CC等攻擊。
UDP的優(yōu)點:快扛点,比TCP稍安全 UDP沒有TCP的握手哥遮、確認、窗口陵究、重傳眠饮、擁塞控制等機制,UDP是一個無狀態(tài)的傳輸協(xié)議铜邮,所以它在傳遞數(shù)據(jù)時非骋钦伲快。沒有TCP的這些機制松蒜,UDP較TCP被攻擊者利用的漏洞就要少一些扔茅。但UDP也是無法避免攻擊的,比如:UDP Flood攻擊……
UDP的缺點: 不可靠秸苗,不穩(wěn)定 因為UDP沒有TCP那些可靠的機制召娜,在數(shù)據(jù)傳遞時,如果網(wǎng)絡質(zhì)量不好惊楼,就會很容易丟包玖瘸。
基于上面的優(yōu)缺點,那么什么時候應該使用TCP:
當對網(wǎng)絡通訊質(zhì)量有要求的時候檀咙,比如:整個數(shù)據(jù)要準確無誤的傳遞給對方店读,這往往用于一些要求可靠的應用,比如HTTP攀芯、HTTPS屯断、FTP等傳輸文件的協(xié)議,POP侣诺、SMTP等郵件傳輸?shù)膮f(xié)議殖演。
在日常生活中,常見使用TCP協(xié)議的應用如下: 瀏覽器年鸳,用的HTTP FlashFXP趴久,用的FTP Outlook,用的POP搔确、SMTP Putty彼棍,用的Telnet灭忠、SSH QQ文件傳輸 …………
什么時候應該使用UDP:
- 當對網(wǎng)絡通訊質(zhì)量要求不高的時候,要求網(wǎng)絡通訊速度能盡量的快座硕,這時就可以使用UDP弛作。
- 比如,日常生活中华匾,常見使用UDP協(xié)議的應用如下: QQ語音 QQ視頻 TFTP ……
有些應用場景對可靠性要求不高會用到UDP映琳,比如長視頻,要求速率
10. Http和Https的區(qū)別
Http協(xié)議運行在TCP之上蜘拉,明文傳輸萨西,客戶端與服務器端都無法驗證對方的身份;
Https是身披SSL(Secure Socket Layer)外殼的Http旭旭,運行于SSL上谎脯,SSL運行于TCP之上,是添加了加密和認證機制的HTTP持寄。
二者之間存在如下不同:
端口不同:Http與Http使用不同的連接方式穿肄,用的端口也不一樣,前者是80际看,后者是443咸产;
資源消耗:和HTTP通信相比,Https通信會由于加減密處理消耗更多的CPU和內(nèi)存資源仲闽;
開銷:Https通信需要證書脑溢,而證書一般需要向認證機構購買;
Https的加密機制是一種共享密鑰加密和公開密鑰加密并用的混合加密機制赖欣。
11. 從輸入網(wǎng)址到獲得頁面的過程
- 瀏覽器查詢 DNS屑彻,獲取域名對應的IP地址:具體過程包括瀏覽器搜索自身的DNS緩存、搜索操作系統(tǒng)的DNS緩存顶吮、讀取本地的Host文件和向本地DNS服務器進行查詢等社牲。對于向本地DNS服務器進行查詢,如果要查詢的域名包含在本地配置區(qū)域資源中悴了,則返回解析結(jié)果給客戶機搏恤,完成域名解析(此解析具有權威性);如果要查詢的域名不由本地DNS服務器區(qū)域解析湃交,但該服務器已緩存了此網(wǎng)址映射關系熟空,則調(diào)用這個IP地址映射,完成域名解析(此解析不具有權威性)搞莺。如果本地域名服務器并未緩存該網(wǎng)址映射關系息罗,那么將根據(jù)其設置發(fā)起遞歸查詢或者迭代查詢;
- 瀏覽器獲得域名對應的IP地址以后才沧,瀏覽器向服務器請求建立鏈接迈喉,發(fā)起三次握手绍刮;
- TCP/IP鏈接建立起來后,瀏覽器向服務器發(fā)送HTTP請求挨摸;
- 服務器接收到這個請求孩革,并根據(jù)路徑參數(shù)映射到特定的請求處理器進行處理,并將處理結(jié)果及相應的視圖返回給瀏覽器油坝;
- 瀏覽器解析并渲染視圖嫉戚,若遇到對js文件刨裆、css文件及圖片等靜態(tài)資源的引用澈圈,則重復上述步驟并向服務器請求這些資源;
- 瀏覽器根據(jù)其請求到的資源帆啃、數(shù)據(jù)渲染頁面瞬女,最終向用戶呈現(xiàn)一個完整的頁面。
12. socket
socket是通信的基石努潘。支持TCP/IP等協(xié)議的基本操作單元诽偷。
應用層通過傳輸層進行數(shù)據(jù)通信時,TCP會遇到同時為多個應用程序進程提供并發(fā)服務的問題疯坤。多個TCP連接或多個應用程序進程可能需要通過同一個TCP協(xié)議端口傳輸數(shù)據(jù)报慕。為了區(qū)別不同的應用程序進程和連接,許多計算機操作系統(tǒng)為應用程序與TCP/IP協(xié)議交互提供了套接字(Socket)接口压怠。應用層可以和傳輸層通過Socket接口眠冈,區(qū)分來自不同應用程序進程或網(wǎng)絡連接的通信,實現(xiàn)數(shù)據(jù)傳輸?shù)牟l(fā)服務菌瘫。