<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【38期】一份tcp、http面試指南,??键c(diǎn)都給你了

          共 3121字,需瀏覽 7分鐘

           ·

          2020-09-17 04:51

          程序員的成長(zhǎng)之路
          互聯(lián)網(wǎng)/程序員/技術(shù)/資料共享?
          關(guān)注


          閱讀本文大概需要 5 分鐘。

          來自:juejin.im/post/5ad4094e6fb9a028d7011069

          TCP

          要說http就繞不開tcp,TCP協(xié)議對(duì)應(yīng)于傳輸層,而HTTP協(xié)議對(duì)應(yīng)于應(yīng)用層,從本質(zhì)上來說,二者沒有可比性。但是,http是基于tcp協(xié)議的。

          TCP/IP 協(xié)議分層模型

          • 物理層將二進(jìn)制的0和1和電壓高低,光的閃滅和電波的強(qiáng)弱信號(hào)進(jìn)行轉(zhuǎn)換

          • 鏈路層代表驅(qū)動(dòng)

          • 網(wǎng)絡(luò)層

            • 使用 IP 協(xié)議,IP 協(xié)議基于 IP 轉(zhuǎn)發(fā)分包數(shù)據(jù)

            • IP 協(xié)議是個(gè)不可靠協(xié)議,不會(huì)重發(fā)

            • IP 協(xié)議發(fā)送失敗會(huì)使用ICMP 協(xié)議通知失敗

            • ARP 解析 IP 中的 MAC 地址,MAC 地址由網(wǎng)卡出廠提供

            • IP 還隱含鏈路層的功能,不管雙方底層的鏈路層是啥,都能通信

          • 傳輸層

            • TCP 協(xié)議面向有連接,能正確處理丟包,傳輸順序錯(cuò)亂的問題,但是為了建立與斷開連接,需要至少7次的發(fā)包收包,資源浪費(fèi)

            • UDP 面向無連接,不管對(duì)方有沒有收到,如果要得到通知,需要通過應(yīng)用層

            • 通用的 TCP 和 UDP 協(xié)議

          • 會(huì)話層以上分層

            • TCP/IP 分層中,會(huì)話層,表示層,應(yīng)用層集中在一起

            • 網(wǎng)絡(luò)管理通過 SNMP 協(xié)議


          劃重點(diǎn)了啊(面試最常問的?。?/span>

          TCP三次握手和四次揮手?

          被問爛了的問題了,這里不詳細(xì)講了,


          三次握手:
          • 客戶端–發(fā)送帶有SYN標(biāo)志的數(shù)據(jù)包–一次握手–服務(wù)端

          • 服務(wù)端–發(fā)送帶有SYN/ACK標(biāo)志的數(shù)據(jù)包–二次握手–客戶端

          • 客戶端–發(fā)送帶有帶有ACK標(biāo)志的數(shù)據(jù)包–三次握手–服務(wù)端


          四次揮手:
          • 客戶端-發(fā)送一個(gè)FIN,用來關(guān)閉客戶端到服務(wù)器的數(shù)據(jù)傳送

          • 服務(wù)器-收到這個(gè)FIN,它發(fā)回一個(gè)ACK,確認(rèn)序號(hào)為收到的序號(hào)加1 。和SYN一樣,一個(gè)FIN將占用一個(gè)序號(hào)

          • 服務(wù)器-關(guān)閉與客戶端的連接,發(fā)送一個(gè)FIN給客戶端

          • 客戶端-發(fā)回ACK報(bào)文確認(rèn),并將確認(rèn)序號(hào)設(shè)置為收到序號(hào)加1


          還不懂的童鞋,去找別人的文章好好看看!

          TCP和UDP的區(qū)別?

          仔細(xì)閱讀上面?zhèn)鬏攲永飳懙膬?nèi)容,懂了嗎?(不懂?不懂背下來啊,混蛋!

          我們微信聊天時(shí)候經(jīng)常會(huì)有這種情況。



          是不是感同身受,這種情況就是對(duì)方用了TCP協(xié)議來聊天,要經(jīng)過--在嗎?--在--巴拉巴拉,才能成功的傳遞信息。而如果對(duì)方使用UDP,則會(huì)有事直接說,不管我收沒收到。(以后找我請(qǐng)用UDP協(xié)議,著急直接打電話!

          HTTP

          Http協(xié)議是建立在TCP協(xié)議基礎(chǔ)之上的,當(dāng)瀏覽器需要從服務(wù)器獲取網(wǎng)頁數(shù)據(jù)的時(shí)候,會(huì)發(fā)出一次Http請(qǐng)求。Http會(huì)通過TCP建立起一個(gè)到服務(wù)器的連接通道,當(dāng)本次請(qǐng)求需要的數(shù)據(jù)完畢后,Http會(huì)立即將TCP連接斷開,這個(gè)過程是很短的。所以Http連接是一種短連接,是一種無狀態(tài)的連接。


          所謂的無狀態(tài),是指瀏覽器每次向服務(wù)器發(fā)起請(qǐng)求的時(shí)候,不是通過一個(gè)連接,而是每次都建立一個(gè)新的連接。如果是一個(gè)連接的話,服務(wù)器進(jìn)程中就能保持住這個(gè)連接并且在內(nèi)存中記住一些信息狀態(tài)。而每次請(qǐng)求結(jié)束后,連接就關(guān)閉,相關(guān)的內(nèi)容就釋放了,所以記不住任何狀態(tài),成為無狀態(tài)連接。

          http傳輸流





          發(fā)送端在層與層間傳輸數(shù)據(jù)時(shí),沒經(jīng)過一層都會(huì)被加上首部信息,接收端每經(jīng)過一層都會(huì)刪除一條首部


          又來劃重點(diǎn)了啊

          HTTP的英文全稱?

          開玩笑的,這個(gè)顯然不是重點(diǎn),但是不排除有人會(huì)去問,還是要知道的:超文本傳輸協(xié)議(HyperText Transfer Protocol)

          狀態(tài)碼?

          狀態(tài)碼就那些,常用的記住就行了:


          2XX 成功
          • 200 OK,表示從客戶端發(fā)來的請(qǐng)求在服務(wù)器端被正確處理

          • 204 No content,表示請(qǐng)求成功,但響應(yīng)報(bào)文不含實(shí)體的主體部分

          • 206 Partial Content,進(jìn)行范圍請(qǐng)求


          3XX 重定向
          • 301 moved permanently,永久性重定向,表示資源已被分配了新的 URL

          • 302 found,臨時(shí)性重定向,表示資源臨時(shí)被分配了新的 URL

          • 303 see other,表示資源存在著另一個(gè) URL,應(yīng)使用 GET 方法定向獲取資源

          • 304 not modified,表示服務(wù)器允許訪問資源,但因發(fā)生請(qǐng)求未滿足條件的情況

          • 307 temporary redirect,臨時(shí)重定向,和302含義相同


          4XX 客戶端錯(cuò)誤
          • 400 bad request,請(qǐng)求報(bào)文存在語法錯(cuò)誤

          • 401 unauthorized,表示發(fā)送的請(qǐng)求需要有通過 HTTP 認(rèn)證的認(rèn)證信息

          • 403 forbidden,表示對(duì)請(qǐng)求資源的訪問被服務(wù)器拒絕

          • 404 not found,表示在服務(wù)器上沒有找到請(qǐng)求的資源


          5XX 服務(wù)器錯(cuò)誤
          • 500 internal sever error,表示服務(wù)器端在執(zhí)行請(qǐng)求時(shí)發(fā)生了錯(cuò)誤

          • 503 service unavailable,表明服務(wù)器暫時(shí)處于超負(fù)載或正在停機(jī)維護(hù),無法處理請(qǐng)求

          HTTP協(xié)議格式?

          HTTP的請(qǐng)求和響應(yīng)的消息協(xié)議是一樣的,分為三個(gè)部分,起始行、消息頭和消息體。這三個(gè)部分以CRLF作為分隔符。最后一個(gè)消息頭有兩個(gè)CRLF,用來表示消息頭部的結(jié)束。



          HTTP請(qǐng)求的起始行稱為請(qǐng)求行,形如GET /index.html HTTP/1.1


          HTTP響應(yīng)的起始行稱為狀態(tài)行,形如200 ok


          消息頭部有很多鍵值對(duì)組成,多個(gè)鍵值對(duì)之間使用CRLF作為分隔符,也可以完全沒有鍵值對(duì)。形如Content-Encoding: gzip 消息體是一個(gè)字符串,字符串的長(zhǎng)度是由消息頭部的Content-Length鍵指定的。如果沒有Content-Length字段說明沒有消息體,譬如GET請(qǐng)求就是沒有消息體的,POST請(qǐng)求的消息體一般用來放置表單數(shù)據(jù)。GET請(qǐng)求的響應(yīng)返回的頁面內(nèi)容也是放在消息體里面的。我們平時(shí)調(diào)用API返回的JSON內(nèi)容都是放在消息體里面的。

          HTTP的無狀態(tài)性?

          所謂HTTP協(xié)議的無狀態(tài)性是指服務(wù)器的協(xié)議層無需為不同的請(qǐng)求之間建立任何相關(guān)關(guān)系,它特指的是協(xié)議層的無狀態(tài)性。但是這并不代表建立在HTTP協(xié)議之上的應(yīng)用程序就無法維持狀態(tài)。


          應(yīng)用層可以通過會(huì)話Session來跟蹤用戶請(qǐng)求之間的相關(guān)性,服務(wù)器會(huì)為每個(gè)會(huì)話對(duì)象綁定一個(gè)唯一的會(huì)話ID,瀏覽器可以將會(huì)話ID記錄在本地緩存LocalStorage或者Cookie,在后續(xù)的請(qǐng)求都帶上這個(gè)會(huì)話ID,服務(wù)器就可以為每個(gè)請(qǐng)求找到相應(yīng)的會(huì)話狀態(tài)。

          輸入url到頁面加載都發(fā)生了什么事情?(最最常問的來了)

          • 輸入地址

          • 瀏覽器查找域名的 IP 地址 這一步包括 DNS 具體的查找過程,包括:瀏覽器緩存->系統(tǒng)緩存->路由器緩存...

          • 瀏覽器向 web 服務(wù)器發(fā)送一個(gè) HTTP 請(qǐng)求

          • 服務(wù)器的永久重定向響應(yīng)(從 http://example.com 到 http://www.example.com)

          • 瀏覽器跟蹤重定向地址

          • 服務(wù)器處理請(qǐng)求

          • 服務(wù)器返回一個(gè) HTTP 響應(yīng)

          • 瀏覽器顯示 HTML

          • 瀏覽器發(fā)送請(qǐng)求獲取嵌入在 HTML 中的資源(如圖片、音頻、視頻、CSS、JS等等)

          • 瀏覽器發(fā)送異步請(qǐng)求

          推薦閱讀:

          【37期】請(qǐng)你詳細(xì)說說類加載流程,類加載機(jī)制及自定義類加載器

          【36期】說說 如何停止一個(gè)正在運(yùn)行的線程?

          【35期】談?wù)勀銓?duì)Java線程之間通信方式的理解

          5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹莓派,等等。在公眾號(hào)內(nèi)回復(fù)「2048」,即可免費(fèi)獲?。?!

          微信掃描二維碼,關(guān)注我的公眾號(hào)

          朕已閱?

          瀏覽 32
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久伦理 | 国产精品―色哟呦 | 成人网站污污 | 狼友视频在线播放 | 国产亲子乱婬一级A片借种 |