java面試 網(wǎng)絡(luò)協(xié)議

OSI七層模型

一、 了解Web及網(wǎng)絡(luò)基礎(chǔ)

TCP/IP協(xié)議族按層次可以分為下面四層:

1. 應(yīng)用層

決定了向用戶提供應(yīng)用服務(wù)時通信的活動,TCP/IP協(xié)議族內(nèi)預(yù)存了各類通用的應(yīng)用服務(wù)衰齐,比如:FTP(文件傳輸協(xié)議)和DNS(域名系統(tǒng))服務(wù)就是其中兩類淆攻,HTTP協(xié)議也處于該層。

2. 傳輸層

對上層應(yīng)用提供處于網(wǎng)絡(luò)連接中的兩臺計算機(jī)之間的數(shù)據(jù)傳輸。在傳輸層有兩個性質(zhì)不同的協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報協(xié)議)

3. 網(wǎng)絡(luò)層

用來處理在網(wǎng)絡(luò)上流動的數(shù)據(jù)包,數(shù)據(jù)包是網(wǎng)絡(luò)的傳輸最小數(shù)據(jù)單位赦肋,該層規(guī)定了通過怎樣的路徑(所謂的傳輸路線)到達(dá)對方計算機(jī),并把數(shù)據(jù)包傳送給對方励稳。與對方計算機(jī)之間通過多臺計算機(jī)或網(wǎng)絡(luò)設(shè)備進(jìn)行傳輸時金砍,網(wǎng)絡(luò)層所起的作用就是在眾多的選項(xiàng)內(nèi)選擇一條傳輸路線。

4. 鏈路層

用來處理連接網(wǎng)絡(luò)的硬件部分麦锯,包括控制操作系統(tǒng),硬件的設(shè)備驅(qū)動琅绅,NIC扶欣,及光纖等物理可見部分(還包括連接器等一切傳輸媒介),硬件上的范疇均在鏈路層的作用范圍之內(nèi)千扶。

利用TCP/IP協(xié)議族進(jìn)行網(wǎng)絡(luò)通信時料祠,會通過分層順序與對方進(jìn)行通信,發(fā)送端從應(yīng)用層往下走澎羞,接收端則往應(yīng)用層往上走,就拿發(fā)送端的客戶端在應(yīng)用層(HTTP協(xié)議)發(fā)出一個想看某個Web頁面的HTTP請求為例髓绽,如下圖示:

HTTP網(wǎng)絡(luò)通信流程

發(fā)送端在層與層之間傳輸數(shù)據(jù)時,每經(jīng)過一層時必定會被打上一個該層所屬的首部信息妆绞,反之顺呕,接收端在層與層傳輸數(shù)據(jù)時,每經(jīng)過一層時會把對應(yīng)的首部消去括饶,這種把數(shù)據(jù)信息包裝起來的做法稱為封裝株茶。

負(fù)責(zé)傳輸?shù)腎P協(xié)議:作用是把各種數(shù)據(jù)包傳送給對方,其指明了節(jié)點(diǎn)被分配到的地址图焰,而MAC地址是指網(wǎng)卡所屬的固定地址启盛,IP間的通信依賴MAC地址,在網(wǎng)絡(luò)上技羔,通信的雙方在同一局域網(wǎng)內(nèi)的情況較少僵闯,通常是經(jīng)過多臺計算機(jī)和網(wǎng)絡(luò)設(shè)備中轉(zhuǎn)才能連接到對方,在中轉(zhuǎn)時藤滥,會利用下一站中轉(zhuǎn)設(shè)備的MAC地址來搜索下一個中轉(zhuǎn)目標(biāo)鳖粟,這時,會采用ARP協(xié)議(ARP是一種用以解析地址的協(xié)議超陆,根據(jù)通信方的IP地址就可以反查出對應(yīng)的MAC地址)牺弹。例子如圖:

IP協(xié)議通信數(shù)據(jù)發(fā)送流程

TCP協(xié)議為了準(zhǔn)確無誤的將數(shù)據(jù)送達(dá)目標(biāo)處浦马,TCP協(xié)議采用了三次握手策略,其握手過程中用了三個標(biāo)記:FLAG-SYN和ACK,該過程如圖:

TCP通信的三次握手協(xié)議示意圖

注意:若在握手過程中某個階段莫名中斷张漂,TCP協(xié)議會再次以相同的順序發(fā)送相同的數(shù)據(jù)包晶默。

DNS服務(wù)是和HTTP協(xié)議一樣位于應(yīng)用層的協(xié)議,它提供域名到IP地址之間的解析服務(wù)其兩者關(guān)系如圖:


HTTP網(wǎng)址請求解析流程

各種協(xié)議與HTTP協(xié)議的關(guān)系就如圖所示:


HTTP協(xié)議使用TCP協(xié)議通信獲取頁面流程圖

URI用字符標(biāo)識某一互聯(lián)網(wǎng)資源航攒,而URL表示資源的地點(diǎn)(互聯(lián)網(wǎng)上所處的位置)磺陡,故URL是URI的子集。

URI格式通常包括以下幾個:

  • 登錄信息
  • 服務(wù)器地址(IP或域名)
  • 服務(wù)器端口號
  • 帶層次的文件路徑
  • 查詢字符串
  • 片段標(biāo)識

URI格式例子如圖:


網(wǎng)址請求示例
  • 黑色:協(xié)議方案名
  • 紅色:登陸信息(認(rèn)證)
  • 淺綠色:服務(wù)器地址
  • 淺藍(lán)色:服務(wù)器端口號
  • 紫色:帶層次的文件路徑
  • 深藍(lán)色:查詢字符串
  • 深綠色:片段標(biāo)識符

二漠畜、 簡單的HTTP協(xié)議

請求報文:是由請求方法币他,請求URI,協(xié)議版本憔狞,可選的請求首部字段和內(nèi)容實(shí)體構(gòu)成的蝴悉。
響應(yīng)報文:基本上由協(xié)議版本,狀態(tài)碼(表示請求成功或失敗的數(shù)字代碼)瘾敢,用以解釋狀態(tài)碼的原因短語拍冠,可選的響應(yīng)首部字段以及實(shí)體主體構(gòu)成。


請求報文內(nèi)容示例

響應(yīng)報文內(nèi)容示例

HTTP是一種不保存狀態(tài)的協(xié)議簇抵,即不保留之前一切的請求或響應(yīng)報文的信息庆杜,為了解決這問題,許多網(wǎng)站引入了Cookie技術(shù)碟摆,例如:許多登陸網(wǎng)站就是用Cookie技術(shù)來保持登陸狀態(tài)晃财。
告知服務(wù)器意圖的HTTP方法有以下幾個:

  • GET:獲取資源,如果請求的資源是文本典蜕,那就保持原樣返回断盛,如果是像CGI那樣的程序,則返回經(jīng)過執(zhí)行后的輸出結(jié)果愉舔。
  • POST:主要用來傳輸實(shí)體的主體郑临,而不是獲取響應(yīng)的主體內(nèi)容。
  • PUT:傳輸文件屑宠,要求請求報文中包含文件內(nèi)容厢洞,但是HTTP/1.1PUT方法自身不帶驗(yàn)證機(jī)制,任何人都可以上傳文件典奉,存在安全性問題躺翻,故一般有開發(fā)此功能的Web網(wǎng)站都會配合Web應(yīng)用程序的驗(yàn)證機(jī)制,如:REST機(jī)制卫玖。
  • HEAD:不獲取返回報文主體部分公你,而是獲取其URI的有效性及資源更新的日期時間等首部字段。
  • DELETE:用來刪除文件假瞬,但是HTTP/1.1Delete方法自身也不帶驗(yàn)證機(jī)制陕靠,任何人都可以刪除文件迂尝,存在安全性問題,故一般有開發(fā)此功能的Web網(wǎng)站都會配合Web應(yīng)用程序的驗(yàn)證機(jī)制剪芥,如:REST機(jī)制垄开。
  • OPTIONS:用來查詢針對請求URI指定的資源。
  • TRACE:在用其發(fā)送請求時税肪,在Max-Forwards首部字段中填入數(shù)值溉躲,每經(jīng)過一個服務(wù)器端就將該數(shù)字減1,當(dāng)數(shù)值剛好減到0時益兄,就停止繼續(xù)傳輸锻梳,最后接收到請求的服務(wù)器端則返回狀態(tài)碼200OK的響應(yīng),因此可以查詢發(fā)送出去的請求是怎樣被加工修改的净捅。
  • CONNECT:要求在與代理服務(wù)器通信時建立隧道疑枯,實(shí)現(xiàn)用隧道協(xié)議進(jìn)行TCP通信,主要使用SSL和TLS協(xié)議把通信內(nèi)容加密后經(jīng)網(wǎng)絡(luò)隧道傳輸蛔六。

HTTP持久連接:keep-alive(持久連接)的特點(diǎn)是神汹,只要任意一端沒有明確提出斷開連接,則保持TCP連接狀態(tài)古今,好處在于減少了TCP連接的重復(fù)建立和斷開所造成的額外開銷,減輕了服務(wù)器端的負(fù)載滔以,也減少了開銷的那部分時間捉腥,是HTTP請求和響應(yīng)能夠更早的結(jié)束。

非持久化連接和持有化連接區(qū)別

管線化技術(shù)可以讓客戶端同時并行發(fā)送多個請求你画,而不需要一個接一個地等待響應(yīng)抵碟。

HTTP是無狀態(tài)協(xié)議優(yōu)勢在于它減少服務(wù)器的CPU及內(nèi)存資源的消耗,但它不能保持之前的狀態(tài)進(jìn)行請求處理坏匪,這樣需要在登陸認(rèn)證的Web頁面中那個拟逮,每次請求 跳轉(zhuǎn)頁面都需要再次認(rèn)證登陸或附上請求認(rèn)證參數(shù),因此為了解決這個問題适滓,可以引用Cookie技術(shù)敦迄,該過程如圖:


Cookie生成及使用流程

Cookie請求報文明細(xì)

HTTP錯誤代碼表

所有 HTTP 狀態(tài)代碼及其定義。

代碼 指示
2xx 成功
200 正常凭迹;請求已完成罚屋。
201 正常;緊接 POST 命令嗅绸。
202 正常脾猛;已接受用于處理,但處理尚未完成鱼鸠。
203 正常猛拴;部分信息 — 返回的信息只是一部分羹铅。
204 正常;無響應(yīng) — 已接收請求愉昆,但不存在要回送的信息职员。
3xx 重定向
301 已移動 — 請求的數(shù)據(jù)具有新的位置且更改是永久的。
302 已找到 — 請求的數(shù)據(jù)臨時具有不同 URI撼唾。
303 請參閱其它 — 可在另一 URI 下找到對請求的響應(yīng)廉邑,且應(yīng)使用 GET 方法檢索此響應(yīng)。
304 未修改 — 未按預(yù)期修改文檔倒谷。
305 使用代理 — 必須通過位置字段中提供的代理來訪問請求的資源哟绊。
306 未使用 — 不再使用;保留此代碼以便將來使用谜诫。
4xx 客戶機(jī)中出現(xiàn)的錯誤
400 錯誤請求 — 請求中有語法問題碴卧,或不能滿足請求。
401 未授權(quán) — 未授權(quán)客戶機(jī)訪問數(shù)據(jù)抖格。
402 需要付款 — 表示計費(fèi)系統(tǒng)已有效诺苹。
403 禁止 — 即使有授權(quán)也不需要訪問。
404 找不到 — 服務(wù)器找不到給定的資源雹拄;文檔不存在收奔。
407 代理認(rèn)證請求 — 客戶機(jī)首先必須使用代理認(rèn)證自身。
415 介質(zhì)類型不受支持 — 服務(wù)器拒絕服務(wù)請求滓玖,因?yàn)椴恢С终埱髮?shí)體的格式坪哄。
5xx 服務(wù)器中出現(xiàn)的錯誤
500 內(nèi)部錯誤 — 因?yàn)橐馔馇闆r,服務(wù)器不能完成請求势篡。
501 未執(zhí)行 — 服務(wù)器不支持請求的工具翩肌。
502 錯誤網(wǎng)關(guān) — 服務(wù)器接收到來自上游服務(wù)器的無效響應(yīng)。
503 無法獲得服務(wù) — 由于臨時過載或維護(hù)禁悠,服務(wù)器無法處理請求念祭。
代碼 指示
400 請求無效
401.1 未授權(quán):登錄失敗
401.2 未授權(quán):服務(wù)器配置問題導(dǎo)致登錄失敗
401.3 ACL 禁止訪問資源
401.4 未授權(quán):授權(quán)被篩選器拒絕
401.5 未授權(quán):ISAPI 或 CGI 授權(quán)失敗
403 禁止訪問
403 對 Internet 服務(wù)管理器 (HTML) 的訪問僅限于 Localhost
403.1 禁止訪問:禁止可執(zhí)行訪問
403.2 禁止訪問:禁止讀訪問
403.3 禁止訪問:禁止寫訪問
403.4 禁止訪問:要求 SSL
403.5 禁止訪問:要求 SSL 128
403.6 禁止訪問:IP 地址被拒絕
403.7 禁止訪問:要求客戶證書
403.8 禁止訪問:禁止站點(diǎn)訪問
403.9 禁止訪問:連接的用戶過多
403.10 禁止訪問:配置無效
403.11 禁止訪問:密碼更改
403.12 禁止訪問:映射器拒絕訪問
403.13 禁止訪問:客戶證書已被吊銷
403.15 禁止訪問:客戶訪問許可過多
403.16 禁止訪問:客戶證書不可信或者無效
403.17 禁止訪問:客戶證書已經(jīng)到期或者尚未生效
404.1 無法找到 Web 站點(diǎn)
404 無法找到文件
405 資源被禁止
406 無法接受
407 要求代理身份驗(yàn)證
410 永遠(yuǎn)不可用
412 先決條件失敗
414 請求 - URI 太長
500 內(nèi)部服務(wù)器錯誤
500.100 內(nèi)部服務(wù)器錯誤 - ASP 錯誤
500.11 服務(wù)器關(guān)閉
500.12 應(yīng)用程序重新啟動
500.13 服務(wù)器太忙
500.14 應(yīng)用程序無效
500.15 不允許請求 global.asa Error
501 未實(shí)現(xiàn)
502 網(wǎng)關(guān)錯誤

參考:
揭開HTTP網(wǎng)絡(luò)協(xié)議神秘面紗系列(一)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市碍侦,隨后出現(xiàn)的幾起案子粱坤,更是在濱河造成了極大的恐慌,老刑警劉巖瓷产,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件比规,死亡現(xiàn)場離奇詭異,居然都是意外死亡拦英,警方通過查閱死者的電腦和手機(jī)蜒什,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疤估,“玉大人灾常,你說我怎么就攤上這事霎冯。” “怎么了钞瀑?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵沈撞,是天一觀的道長。 經(jīng)常有香客問我雕什,道長缠俺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任贷岸,我火速辦了婚禮壹士,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘偿警。我一直安慰自己躏救,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布螟蒸。 她就那樣靜靜地躺著盒使,像睡著了一般。 火紅的嫁衣襯著肌膚如雪七嫌。 梳的紋絲不亂的頭發(fā)上少办,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機(jī)與錄音诵原,去河邊找鬼英妓。 笑死,一個胖子當(dāng)著我的面吹牛皮假,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播骂维,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惹资,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了航闺?” 一聲冷哼從身側(cè)響起褪测,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎潦刃,沒想到半個月后侮措,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乖杠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年分扎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胧洒。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡畏吓,死狀恐怖墨状,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情菲饼,我是刑警寧澤肾砂,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站宏悦,受9級特大地震影響镐确,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜饼煞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一源葫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧派哲,春花似錦臼氨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至褂乍,卻和暖如春持隧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逃片。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工屡拨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人褥实。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓呀狼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親损离。 傳聞我的和親對象是個殘疾皇子哥艇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

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