計算機網(wǎng)絡(luò)基礎(chǔ)

一模燥、計算機網(wǎng)絡(luò)體系結(jié)構(gòu)

計算機網(wǎng)絡(luò)體系結(jié)構(gòu)圖

二强岸、物理層

1. 物理層主要任務(wù)

物理層考慮的是怎樣才能在連接各臺計算機的傳輸媒體上傳輸數(shù)據(jù)的比特流锻弓,確定與傳輸媒體的接口有關(guān)的特性:

  • 機械特性(引線數(shù)目等)
  • 電氣特性(電壓高低,阻抗匹配)
  • 功能特性(某一電平的電壓表示何種意義)

2. 傳輸方式

  • 電路交換:專用的物理通信路徑
  • 報文交換
  • 分組交換
    • 虛電路
    • 數(shù)據(jù)報

三蝌箍、數(shù)據(jù)鏈路層

1. 數(shù)據(jù)鏈路層任務(wù)

為網(wǎng)絡(luò)層提供可靠的數(shù)據(jù)傳輸青灼、鏈路管理、幀定界妓盲、幀同步與透明傳輸杂拨、流量控制和差錯控制。

2. 基本數(shù)據(jù)單位

3. 主要的協(xié)議

以太網(wǎng)協(xié)議

四悯衬、網(wǎng)絡(luò)層

1. 網(wǎng)絡(luò)層任務(wù)

實現(xiàn)異構(gòu)網(wǎng)絡(luò)互聯(lián)弹沽、路由與轉(zhuǎn)發(fā)、擁塞控制筋粗。

2. IPv4地址分類

IPv4地址分類
  • 主機號全為1策橘,表示本網(wǎng)絡(luò)上的廣播地址,不用作主機的IP地址
  • 主機號全為0娜亿,表示本網(wǎng)絡(luò)本身丽已,不用作主機的IP地址。

3. IP協(xié)議(網(wǎng)際協(xié)議)

IP協(xié)議族包含配套的協(xié)議:

  • ARP(地址解析協(xié)議):將IP地址轉(zhuǎn)換為MAC地址买决。
  • ICMP(網(wǎng)際控制報文協(xié)議):給主機和路由器報告差錯和異常情況沛婴,分為詢問報文和差錯報文吼畏。

4. 路由選擇協(xié)議

  • 內(nèi)部網(wǎng)關(guān)協(xié)議(IGP):
    • RIP:與相鄰路由器交換整個路由表
    • OSPF:與全部路由器交換相鄰節(jié)點鏈路狀態(tài)
  • 外部網(wǎng)關(guān)協(xié)議(EGP):
    • BGP:尋找的并非最佳路由。路由更新時瘸味,BGP只發(fā)送更新的路由宫仗。

五、傳輸層

傳輸層任務(wù)

提供進(jìn)程之間的端到端的邏輯通訊旁仿、差錯檢測藕夫、UDP與TCP。

UDP

無連接盡最大努力交付枯冈,支持廣播和多播(而TCP不支持)

TCP

有連接毅贮、一對一、可靠尘奏、全雙工通信

TCP的三次握手建立

TCP建立
  • 第一步:客戶機的TCP首先向服務(wù)器的TCP發(fā)送一個請求報文段滩褥,這個特殊報文段不包含應(yīng)用層數(shù)據(jù),其SYN位置為1炫加。另外瑰煎,客戶機會隨機選擇一個起始序號seq = x(連接請求報文不攜帶數(shù)據(jù),但要消耗一個序號)
  • 第二步:服務(wù)器收到請求報文后俗孝,若同意連接酒甸,則向客戶機發(fā)回確認(rèn),并為該TCP連接分配TCP緩存和變量赋铝。在確認(rèn)報文中插勤,SYN和ACK都置為1,確認(rèn)號字段的值為x + 1革骨,并且服務(wù)器隨機產(chǎn)生起始序號seq = y(確認(rèn)報文不攜帶數(shù)據(jù)农尖,但也要消耗一個序號)。
  • 第三步:當(dāng)客戶機收到確認(rèn)報文段后良哲,還要向服務(wù)器給出確認(rèn)盛卡,并且也要給該連接分配緩存和變量。這個報文的ACK為置為1臂外,序號字段為x + 1窟扑,確認(rèn)號字段為ack = y + 1

TCP四次揮手釋放

TCP釋放
  • 第一步:客戶機打算關(guān)閉連接時,發(fā)送一個連接釋放報文段漏健,并停止發(fā)送數(shù)據(jù)嚎货,主動關(guān)閉TCP連接,該報文字段的FIN被置為1蔫浆,seq = u殖属,它等于前面已經(jīng)傳送過的數(shù)據(jù)的最后一個字節(jié)序號加1(FIN報文段不攜帶數(shù)據(jù),但也要消耗一個序號)瓦盛。TCP是全雙工的洗显,即可以想象為一條TCP連接上有兩條數(shù)據(jù)通路外潜。發(fā)送FIN報文時,發(fā)送FIN的一端不能再發(fā)送數(shù)據(jù)挠唆,即關(guān)閉了其中一條數(shù)據(jù)通路处窥,單對方還可以發(fā)送數(shù)據(jù)。
  • 第二步:服務(wù)器收到連接釋放報文段后即發(fā)出確認(rèn)玄组,確認(rèn)號是ack = u + 1滔驾,而這個報文段自己的序號是v,等于它前面已經(jīng)傳送過的數(shù)據(jù)的最后一個字節(jié)序號加1俄讹。此時客戶端到服務(wù)器這個方向的連接就釋放了哆致,TCP連接處于半關(guān)閉狀態(tài)。但服務(wù)器發(fā)送數(shù)據(jù)患膛,客戶機仍要接收摊阀,即從服務(wù)器到客戶機這個方向的連接并未關(guān)閉。
  • 第三步:若服務(wù)器已經(jīng)沒有要向客戶機發(fā)送的數(shù)據(jù)踪蹬,就通知TCP釋放連接胞此,此時發(fā)出FIN = 1的連接釋放報文段。
  • 第四步:客戶機收到連接釋放報文段后跃捣,必須發(fā)出確認(rèn)豌鹤。在確認(rèn)報文段中,ACK位被置為1枝缔,確認(rèn)序號ack = w + 1, 報文序號seq = u + 1。此時TCP連接還未釋放蚊惯,必須經(jīng)過時間等待計時器設(shè)置的時2MSL后愿卸,客戶機才進(jìn)入連接關(guān)閉狀態(tài)。

注:為什么要等待2SML截型?

  • 如果客戶機不等待2SML趴荸,若客戶機返回的最后確認(rèn)報文已丟失,則服務(wù)器不能進(jìn)入正常關(guān)閉狀態(tài)宦焦,而此時客戶機已經(jīng)關(guān)閉发钝,也不可能再重傳。
  • 客戶機在發(fā)送最后一個確認(rèn)報文后波闹,再經(jīng)過2MSL才可以保證本連接持續(xù)時間內(nèi)所產(chǎn)生的所有報文段從網(wǎng)絡(luò)中消失酝豪。

SYN攻擊

三次握手中,服務(wù)器發(fā)送SYN-ACK后等待客戶端發(fā)送ACK精堕,此時服務(wù)器處于SYN-RCVD狀態(tài)孵淘。SYN攻擊指的是在短時間內(nèi)偽造大量不存在的IP地址,向服務(wù)器不斷發(fā)送SYN數(shù)據(jù)段歹篓,服務(wù)此時會回復(fù)確認(rèn)包瘫证,由于源地址不存在揉阎,服務(wù)器需要不斷的重傳直至超時,這些偽造的SYN長時間占用未連接隊列背捌,正常的SYN請求被丟棄毙籽,導(dǎo)致目標(biāo)系統(tǒng)運行緩慢。
防御SYN攻擊可以使用:

  • 縮短超時時間
  • 增大最大半連接數(shù)
  • 過濾網(wǎng)關(guān)

TCP可靠傳輸機制

  • 序號
  • 確認(rèn)
  • 重傳

TCP流量控制

滑動窗口機制

TCP擁塞控制

  • 慢開始
  • 擁塞避免
  • 快重傳
  • 快恢復(fù)

TCP KeepAlive

當(dāng)TCP連接中一方出現(xiàn)掉電毡庆、死機等異常情況時坑赡,TCP連接未來得及正常釋放,連接的另一方并不知道這個問題扭仁,會一直維護(hù)這個連接垮衷,造成系統(tǒng)資源的浪費」宰梗可以在傳輸層利用TCP的KeepAlive機制搀突。
TCP KeepAlive基本原理是隔一段時間給對方發(fā)一個探測包,如果對方收到回應(yīng)并發(fā)送ACK熊泵,則認(rèn)為連接存活仰迁,否則在重試次數(shù)還沒收到回應(yīng),則丟棄該TCP連接顽分。

六徐许、應(yīng)用層

1. 應(yīng)用層協(xié)議服務(wù)器熟知端口

HTTP:80
DNS:53
FTP:控制鏈接端口21,數(shù)據(jù)鏈接端口20
STMP:25
POP3:110

2. HTTP協(xié)議

(1)報文結(jié)構(gòu)

HTTP請求報文和響應(yīng)報文的區(qū)別是開始行不同卒蘸。

請求報文
請求報文格式
  • 請求方法:
    • POST(傳輸實體主體)
    • GET(獲取資源)
    • HEAD(獲得報文的首部雌隅,它和GET方法一樣,只是不返回報文主體部分)
    • OPTIONS(詢問支持的方法)
    • CONNECT(要求用隧道協(xié)議連接代理服務(wù)器)
  • 請求頭部
    • Connection:該字段為Close表示使用非持續(xù)連接缸沃,為Keep-Alive表示持續(xù)連接(默認(rèn))恰起。
    • Cookie:由服務(wù)器生成,由客戶端保存
    • Content-Type:用于表明發(fā)送數(shù)據(jù)流的類型和網(wǎng)頁的編碼趾牧,multipart/form-data(表單)
    • Transfer-Ecoding:傳輸報文主體時采用的編碼方式
響應(yīng)報文
響應(yīng)報文格式
  • 狀態(tài)碼
    • 1XX:信息性狀態(tài)碼(如:接收到請求正在處理)
    • 2XX:成功
    • 3XX:重定向
    • 4XX:客戶端錯誤
    • 5XX:服務(wù)器錯誤
  • 請求頭部
    • Location:一般該字段配合3XX:Redirection的響應(yīng)检盼,提供重定向的URI。

(2)HTTPS

HTTP通信使用明文內(nèi)容可能被竊聽翘单;不驗證通信方的身份吨枉;無法證明報文的完整性。HTTPS添加了加密和認(rèn)證機制:

  • HTTPS通信部分接口使用SSL和TSL協(xié)議哄芜。
  • 加密:使用混合加密方式貌亭,在交換密鑰環(huán)節(jié)使用公開密鑰加密方式,之后建立通信交換報文階段使用共享密鑰加密方式认臊。
  • 認(rèn)證:使用由數(shù)字證書認(rèn)證機構(gòu)(CA)和其相關(guān)機關(guān)頒發(fā)的公開密鑰證書属提。
  • HTTPS比HTTP慢2到10倍。

(3)JSON

JSON是一種取代XML的數(shù)據(jù)結(jié)構(gòu),和xml相比,它更小巧但描述能力卻不差,由于它的小巧所以網(wǎng)絡(luò)傳輸數(shù)據(jù)將減少更多流量從而加快速度。

  • {} 雙括號表示對象
  • [] 中括號表示數(shù)組
  • "" 雙引號內(nèi)是鍵或值
  • JSON能夠處理的數(shù)據(jù)類型有false/null/true/對象/數(shù)組/字符串這7種類型
  • 不管是鍵或值最好都用雙引號引起來

(4)HTTP2.0

HTTP2.0和HTTP1.1的區(qū)別

  • 使用多路復(fù)用:多個請求可以在同一個連接中并行執(zhí)行(不像HTTP1.1中的一個連接需要等待上一個請求完畢才能請求下一個)
  • Header壓縮:降低傳輸頭部產(chǎn)生的流量冤议。
  • 服務(wù)端推送:服務(wù)端推送能把客戶端所需要的資源伴隨著index.html一起發(fā)送到客戶端斟薇,省去了客戶端重復(fù)請求的步驟。

HTTP1.0和HTTP1.1的區(qū)別

  • 長連接:在一個TCP連接上可以傳送多個HTTP請求和響應(yīng)恕酸,減少了建立和關(guān)閉連接的消耗和延遲堪滨。默認(rèn)開啟keep-alive。
  • 允許只請求資源的某個部分:在請求頭引入了range域蕊温,允許只請求資源的某個部分袱箱。
  • 引入了更多的緩存控制策略。

3. URI和URL

  • URI(統(tǒng)一資源標(biāo)識符):某個協(xié)議類型表示的資源的定位標(biāo)識符义矛,如:
file://ftp.linkwan.com/  (也是URL)
http://homepage.yesky.com/175/2603675.html (也是URL)
tel:+1-816-555-1212   (這個就不是URL啦)
  • URL(統(tǒng)一資源定位符)
  • URI用來標(biāo)識某一互聯(lián)網(wǎng)資源发笔,而URL用來表示資源在互聯(lián)網(wǎng)上所處的位置×狗可見URL是URI的子集了讨。

4. Socket編程

Socket是對TCP/IP協(xié)議族的一種封裝,是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件的抽象層制轰。利用三元組(ip地址前计,協(xié)議,端口)就可以唯一標(biāo)識網(wǎng)絡(luò)中的進(jìn)程垃杖。
一個簡易的 Server 的流程如下:

  • 1.建立連接男杈,接受一個客戶端連接。
  • 2.接受請求调俘,從網(wǎng)絡(luò)中讀取一條 HTTP 請求報文伶棒。
  • 3.處理請求,訪問資源彩库。
  • 4.構(gòu)建響應(yīng)苞冯,創(chuàng)建帶有 header 的 HTTP 響應(yīng)報文。
  • 5.發(fā)送響應(yīng)侧巨,傳給客戶端。

5. 瀏覽器輸入 url 到頁面顯示的過程

  • DNS解析:網(wǎng)址到IP地址的轉(zhuǎn)換鞭达。
  • TCP連接:HTTP使用TCP作為傳輸層協(xié)議司忱。
  • 服務(wù)器處理請求并返回HTTP報文。
  • 瀏覽器解析渲染頁面畴蹭。
    推薦一個鏈接:計算機網(wǎng)絡(luò)基礎(chǔ)知識總結(jié)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坦仍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子叨襟,更是在濱河造成了極大的恐慌繁扎,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異梳玫,居然都是意外死亡爹梁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門提澎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姚垃,“玉大人,你說我怎么就攤上這事盼忌』矗” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵谦纱,是天一觀的道長看成。 經(jīng)常有香客問我,道長跨嘉,這世上最難降的妖魔是什么川慌? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮偿荷,結(jié)果婚禮上窘游,老公的妹妹穿的比我還像新娘。我一直安慰自己跳纳,他們只是感情好忍饰,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寺庄,像睡著了一般艾蓝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斗塘,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天赢织,我揣著相機與錄音,去河邊找鬼馍盟。 笑死于置,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贞岭。 我是一名探鬼主播八毯,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瞄桨!你這毒婦竟也來了话速?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤芯侥,失蹤者是張志新(化名)和其女友劉穎泊交,沒想到半個月后乳讥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡廓俭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年云石,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片白指。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡留晚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出告嘲,到底是詐尸還是另有隱情错维,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布橄唬,位于F島的核電站赋焕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏仰楚。R本人自食惡果不足惜隆判,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望僧界。 院中可真熱鬧侨嘀,春花似錦、人聲如沸捂襟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葬荷。三九已至涨共,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宠漩,已是汗流浹背举反。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扒吁,地道東北人火鼻。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像雕崩,于是被迫代替她去往敵國和親魁索。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容