HTTP面試題都在這里

HTTP常見面試題

Http與Https的區(qū)別:

Http與Https的區(qū)別:

  1. HTTP 的URL 以http:// 開頭馁害,而HTTPS 的URL 以https:// 開頭
  2. HTTP 是不安全的,而 HTTPS 是安全的
  3. HTTP 標準端口是80 价淌,而 HTTPS 的標準端口是443
  4. 在OSI 網(wǎng)絡(luò)模型中土至,HTTP工作于應用層憨愉,而HTTPS 的安全傳輸機制工作在傳輸層
  5. HTTP 無法加密艰额,而HTTPS 對傳輸?shù)臄?shù)據(jù)進行加密
  6. HTTP無需證書,而HTTPS 需要CA機構(gòu)wosign的頒發(fā)的SSL證書

什么是Http協(xié)議無狀態(tài)協(xié)議?怎么解決Http協(xié)議無狀態(tài)協(xié)議?

  • 無狀態(tài)協(xié)議對于事務處理沒有記憶能力劳景。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息
    • 也就是說誉简,當客戶端一次HTTP請求完成以后,客戶端再發(fā)送一次HTTP請求盟广,HTTP并不知道當前客戶端是一個”老用戶“闷串。
  • 可以使用Cookie來解決無狀態(tài)的問題,Cookie就相當于一個通行證筋量,第一次訪問的時候給客戶端發(fā)送一個Cookie烹吵,當客戶端再次來的時候,拿著Cookie(通行證)桨武,那么服務器就知道這個是”老用戶“肋拔。

URI和URL的區(qū)別

URI和URL的區(qū)別

URI,是uniform resource identifier呀酸,統(tǒng)一資源標識符凉蜂,用來唯一的標識一個資源。

  • Web上可用的每種資源如HTML文檔性誉、圖像窿吩、視頻片段、程序等都是一個來URI來定位的
  • URI一般由三部組成:
  • ①訪問資源的命名機制
  • ②存放資源的主機名
  • ③資源自身的名稱错览,由路徑表示纫雁,著重強調(diào)于資源。

URL是uniform resource locator倾哺,統(tǒng)一資源定位器先较,它是一種具體的URI,即URL可以用來標識一個資源悼粮,而且還指明了如何locate這個資源闲勺。

  • URL是Internet上用來描述信息資源的字符串,主要用在各種WWW客戶程序和服務器程序上扣猫,特別是著名的Mosaic菜循。
  • 采用URL可以用一種統(tǒng)一的格式來描述各種信息資源,包括文件申尤、服務器的地址和目錄等癌幕。URL一般由三部組成:
  • ①協(xié)議(或稱為服務方式)
  • ②存有該資源的主機IP地址(有時也包括端口號)
  • ③主機資源的具體地址衙耕。如目錄和文件名等

URN,uniform resource name勺远,統(tǒng)一資源命名橙喘,是通過名字來標識資源,比如mailto:java-net@java.sun.com胶逢。

  • URI是以一種抽象的厅瞎,高層次概念定義統(tǒng)一資源標識,而URL和URN則是具體的資源標識的方式初坠。URL和URN都是一種URI和簸。籠統(tǒng)地說碟刺,每個 URL 都是 URI锁保,但不一定每個 URI 都是 URL。這是因為 URI 還包括一個子類半沽,即統(tǒng)一資源名稱 (URN)爽柒,它命名資源但不指定如何定位資源。上面的 mailto者填、news 和 isbn URI 都是 URN 的示例霉赡。

在Java的URI中,一個URI實例可以代表絕對的幔托,也可以是相對的穴亏,只要它符合URI的語法規(guī)則。而URL類則不僅符合語義重挑,還包含了定位該資源的信息嗓化,因此它不能是相對的。

在Java類庫中谬哀,URI類不包含任何訪問資源的方法刺覆,它唯一的作用就是解析。

相反的是史煎,URL類可以打開一個到達資源的流谦屑。

常用的HTTP方法有哪些?

常用的HTTP方法有哪些?

  • GET: 用于請求訪問已經(jīng)被URI(統(tǒng)一資源標識符)識別的資源篇梭,可以通過URL傳參給服務器
  • POST:用于傳輸信息給服務器氢橙,主要功能與GET方法類似,但一般推薦使用POST方式恬偷。
  • PUT: 傳輸文件悍手,報文主體中包含文件內(nèi)容,保存到對應URI位置。
  • HEAD: 獲得報文首部坦康,與GET方法類似竣付,只是不返回報文主體,一般用于驗證URI是否有效滞欠。
  • DELETE:刪除文件古胆,與PUT方法相反,刪除對應URI位置的文件筛璧。
  • OPTIONS:查詢相應URI支持的HTTP方法逸绎。

HTTP請求報文與響應報文格式

HTTP請求報文與響應報文格式

請求報文包含四部分:

image
  • a、請求行:包含請求方法隧哮、URI、HTTP版本信息
  • b座舍、請求首部字段
  • c沮翔、請求內(nèi)容實體
  • d、空行

響應報文包含四部分:

image
  • a曲秉、狀態(tài)行:包含HTTP版本采蚀、狀態(tài)碼、狀態(tài)碼的原因短語
  • b承二、響應首部字段
  • c榆鼠、響應內(nèi)容實體
  • d、空行

常見的首部:

  • 通用首部字段(請求報文與響應報文都會使用的首部字段)
    • Date:創(chuàng)建報文時間
    • Connection:連接的管理
    • Cache-Control:緩存的控制
    • Transfer-Encoding:報文主體的傳輸編碼方式
  • 請求首部字段(請求報文會使用的首部字段)
    • Host:請求資源所在服務器
    • Accept:可處理的媒體類型
    • Accept-Charset:可接收的字符集
    • Accept-Encoding:可接受的內(nèi)容編碼
    • Accept-Language:可接受的自然語言
  • 響應首部字段(響應報文會使用的首部字段)
    • Accept-Ranges:可接受的字節(jié)范圍
    • Location:令客戶端重新定向到的URI
    • Server:HTTP服務器的安裝信息
  • 實體首部字段(請求報文與響應報文的的實體部分使用的首部字段)
    • Allow:資源可支持的HTTP方法
    • Content-Type:實體主類的類型
    • Content-Encoding:實體主體適用的編碼方式
    • Content-Language:實體主體的自然語言
    • Content-Length:實體主體的的字節(jié)數(shù)
    • Content-Range:實體主體的位置范圍亥鸠,一般用于發(fā)出部分請求時使用

HTTPS工作原理

HTTPS工作原理

  • 一妆够、首先HTTP請求服務端生成證書,客戶端對證書的有效期负蚊、合法性神妹、域名是否與請求的域名一致、證書的公鑰(RSA加密)等進行校驗家妆;
  • 二鸵荠、客戶端如果校驗通過后,就根據(jù)證書的公鑰的有效伤极, 生成隨機數(shù)蛹找,隨機數(shù)使用公鑰進行加密(RSA加密);
  • 三哨坪、消息體產(chǎn)生的后庸疾,對它的摘要進行MD5(或者SHA1)算法加密,此時就得到了RSA簽名当编;
  • 四彼硫、發(fā)送給服務端,此時只有服務端(RSA私鑰)能解密。
  • 五拧篮、解密得到的隨機數(shù)词渤,再用AES加密,作為密鑰(此時的密鑰只有客戶端和服務端知道)串绩。
image

具體的參考鏈接:http://blog.csdn.net/sean_cd/article/details/6966130

一次完整的HTTP請求所經(jīng)歷的7個步驟

一次完整的HTTP請求所經(jīng)歷的7個步驟

HTTP通信機制是在一次完整的HTTP通信過程中缺虐,Web瀏覽器與Web服務器之間將完成下列7個步驟:

  • 建立TCP連接

在HTTP工作開始之前,Web瀏覽器首先要通過網(wǎng)絡(luò)與Web服務器建立連接礁凡,該連接是通過TCP來完成的高氮,該協(xié)議與IP協(xié)議共同構(gòu)建 Internet,即著名的TCP/IP協(xié)議族顷牌,因此Internet又被稱作是TCP/IP網(wǎng)絡(luò)剪芍。HTTP是比TCP更高層次的應用層協(xié)議,根據(jù)規(guī)則窟蓝, 只有低層協(xié)議建立之后才能罪裹,才能進行更層協(xié)議的連接,因此运挫,首先要建立TCP連接状共,一般TCP連接的端口號是80。

  • Web瀏覽器向Web服務器發(fā)送請求行

一旦建立了TCP連接谁帕,Web瀏覽器就會向Web服務器發(fā)送請求命令峡继。例如:GET /sample/hello.jsp HTTP/1.1。

  • Web瀏覽器發(fā)送請求頭

    • 瀏覽器發(fā)送其請求命令之后匈挖,還要以頭信息的形式向Web服務器發(fā)送一些別的信息碾牌,之后瀏覽器發(fā)送了一空白行來通知服務器,它已經(jīng)結(jié)束了該頭信息的發(fā)送儡循。
  • Web服務器應答

    • 客戶機向服務器發(fā)出請求后小染,服務器會客戶機回送應答, HTTP/1.1 200 OK 贮折,應答的第一部分是協(xié)議的版本號和應答狀態(tài)碼裤翩。
  • Web服務器發(fā)送應答頭

    • 正如客戶端會隨同請求發(fā)送關(guān)于自身的信息一樣,服務器也會隨同應答向用戶發(fā)送關(guān)于它自己的數(shù)據(jù)及被請求的文檔调榄。
  • Web服務器向瀏覽器發(fā)送數(shù)據(jù)

    • Web服務器向瀏覽器發(fā)送頭信息后踊赠,它會發(fā)送一個空白行來表示頭信息的發(fā)送到此為結(jié)束,接著每庆,它就以Content-Type應答頭信息所描述的格式發(fā)送用戶所請求的實際數(shù)據(jù)筐带。
  • Web服務器關(guān)閉TCP連接

    • 一般情況下,一旦Web服務器向瀏覽器發(fā)送了請求數(shù)據(jù)缤灵,它就要關(guān)閉TCP連接伦籍,然后如果瀏覽器或者服務器在其頭信息加入了這行代碼:

Connection:keep-alive

TCP連接在發(fā)送后將仍然保持打開狀態(tài)蓝晒,于是,瀏覽器可以繼續(xù)通過相同的連接發(fā)送請求帖鸦。保持連接節(jié)省了為每個請求建立新連接所需的時間芝薇,還節(jié)約了網(wǎng)絡(luò)帶寬。

建立TCP連接->發(fā)送請求行->發(fā)送請求頭->(到達服務器)發(fā)送狀態(tài)行->發(fā)送響應頭->發(fā)送響應數(shù)據(jù)->斷TCP連接

最具體的HTTP請求過程:http://blog.51cto.com/linux5588/1351007

常見的HTTP相應狀態(tài)碼

常見的HTTP相應狀態(tài)碼

  • 200:請求被正常處理
  • 204:請求被受理但沒有資源可以返回
  • 206:客戶端只是請求資源的一部分作儿,服務器只對請求的部分資源執(zhí)行GET方法洛二,相應報文中通過Content-Range指定范圍的資源。
  • 301:永久性重定向
  • 302:臨時重定向
  • 303:與302狀態(tài)碼有相似功能攻锰,只是它希望客戶端在請求一個URI的時候晾嘶,能通過GET方法重定向到另一個URI上
  • 304:發(fā)送附帶條件的請求時,條件不滿足時返回娶吞,與重定向無關(guān)
  • 307:臨時重定向垒迂,與302類似,只是強制要求使用POST方法
  • 400:請求報文語法有誤妒蛇,服務器無法識別
  • 401:請求需要認證
  • 403:請求的對應資源禁止被訪問
  • 404:服務器無法找到對應資源
  • 500:服務器內(nèi)部錯誤
  • 503:服務器正忙

HTTP1.1版本新特性

HTTP1.1版本新特性

  • a机断、默認持久連接節(jié)省通信量,只要客戶端服務端任意一端沒有明確提出斷開TCP連接材部,就一直保持連接毫缆,可以發(fā)送多次HTTP請求
  • b唯竹、管線化乐导,客戶端可以同時發(fā)出多個HTTP請求,而不用一個個等待響應
  • c浸颓、斷點續(xù)傳
    • 實際上就是利用HTTP消息頭使用分塊傳輸編碼物臂,將實體主體分塊傳輸。

HTTP優(yōu)化方案

我下面就簡要概括一下:

  • TCP復用:TCP連接復用是將多個客戶端的HTTP請求復用到一個服務器端TCP連接上产上,而HTTP復用則是一個客戶端的多個HTTP請求通過一個TCP連接進行處理棵磷。前者是負載均衡設(shè)備的獨特功能;而后者是HTTP 1.1協(xié)議所支持的新功能晋涣,目前被大多數(shù)瀏覽器所支持仪媒。
  • 內(nèi)容緩存:將經(jīng)常用到的內(nèi)容進行緩存起來,那么客戶端就可以直接在內(nèi)存中獲取相應的數(shù)據(jù)了谢鹊。
  • 壓縮:將文本數(shù)據(jù)進行壓縮算吩,減少帶寬
  • SSL加速(SSL Acceleration):使用SSL協(xié)議對HTTP協(xié)議進行加密,在通道內(nèi)加密并加速
  • TCP緩沖:通過采用TCP緩沖技術(shù)佃扼,可以提高服務器端響應時間和處理效率偎巢,減少由于通信鏈路問題給服務器造成的連接負擔。

詳情參考:

如果文章有錯的地方歡迎指正兼耀,大家互相交流压昼。習慣在微信看技術(shù)文章的同學求冷,可以關(guān)注微信公眾號:Java3y

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市窍霞,隨后出現(xiàn)的幾起案子匠题,更是在濱河造成了極大的恐慌,老刑警劉巖官撼,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梧躺,死亡現(xiàn)場離奇詭異,居然都是意外死亡傲绣,警方通過查閱死者的電腦和手機掠哥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秃诵,“玉大人续搀,你說我怎么就攤上這事〔ぞ唬” “怎么了禁舷?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長毅往。 經(jīng)常有香客問我牵咙,道長,這世上最難降的妖魔是什么攀唯? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任洁桌,我火速辦了婚禮,結(jié)果婚禮上侯嘀,老公的妹妹穿的比我還像新娘另凌。我一直安慰自己,他們只是感情好戒幔,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布吠谢。 她就那樣靜靜地躺著,像睡著了一般诗茎。 火紅的嫁衣襯著肌膚如雪工坊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天敢订,我揣著相機與錄音王污,去河邊找鬼。 笑死枢析,一個胖子當著我的面吹牛玉掸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播醒叁,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼司浪,長吁一口氣:“原來是場噩夢啊……” “哼泊业!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起啊易,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤吁伺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后租谈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篮奄,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年割去,在試婚紗的時候發(fā)現(xiàn)自己被綠了窟却。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡呻逆,死狀恐怖夸赫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咖城,我是刑警寧澤茬腿,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站宜雀,受9級特大地震影響切平,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辐董,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一悴品、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧郎哭,春花似錦他匪、人聲如沸菇存。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽依鸥。三九已至亥至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贱迟,已是汗流浹背姐扮。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留衣吠,地道東北人茶敏。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像缚俏,于是被迫代替她去往敵國和親惊搏。 傳聞我的和親對象是個殘疾皇子贮乳,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

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

  • 本篇文章篇幅比較長,先來個思維導圖預覽一下恬惯。 一向拆、概述 1.計算機網(wǎng)絡(luò)體系結(jié)構(gòu)分層 2.TCP/IP 通信傳輸流 ...
    滌生_Woo閱讀 54,969評論 24 557
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)酪耳,斷路器浓恳,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 1. 網(wǎng)絡(luò)基礎(chǔ)TCP/IP HTTP基于TCP/IP協(xié)議族,HTTP屬于它內(nèi)部的一個子集碗暗。 把互聯(lián)網(wǎng)相關(guān)聯(lián)的協(xié)議集...
    yozosann閱讀 3,440評論 0 20
  • 我記得從很久之前開始言疗,有這樣一個說法吆鹤,深夜是每個人離自己最近的時間,所以在深夜洲守,你會看到自己真正的樣子疑务。也許就是這...
    猢桃夾子閱讀 312評論 0 0
  • 從女兒發(fā)燒到現(xiàn)在幾天了,我是在倍受煎熬的梗醇,每次女兒生病知允,我都是嚇的腿軟的那種,這次情況復雜叙谨,我們剛開始照顧不好温鸽,女...
    你好3306閱讀 209評論 0 0