最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

HTTP協(xié)議簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

 更新時(shí)間:2017年07月19日 10:19:00   作者:sundacheng  
這篇文章主要介紹了HTTP協(xié)議簡(jiǎn)介,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

TCP協(xié)議對(duì)應(yīng)于傳輸層,而HTTP協(xié)議對(duì)應(yīng)于應(yīng)用層,從本質(zhì)上來(lái)說(shuō),二者沒(méi)有可比性。Http協(xié)議是建立在TCP協(xié)議基礎(chǔ)之上的,當(dāng)瀏覽器需要從服務(wù)器獲取網(wǎng)頁(yè)數(shù)據(jù)的時(shí)候,會(huì)發(fā)出一次Http請(qǐng)求。Http會(huì)通過(guò)TCP建立起一個(gè)到服務(wù)器的連接通道,當(dāng)本次請(qǐng)求需要的數(shù)據(jù)完畢后,Http會(huì)立即將TCP連接斷開(kāi),這個(gè)過(guò)程是很短的。所以Http連接是一種短連接,是一種無(wú)狀態(tài)的連接。所謂的無(wú)狀態(tài),是指瀏覽器每次向服務(wù)器發(fā)起請(qǐng)求的時(shí)候,不是通過(guò)一個(gè)連接,而是每次都建立一個(gè)新的連接。如果是一個(gè)連接的話,服務(wù)器進(jìn)程中就能保持住這個(gè)連接并且在內(nèi)存中記住一些信息狀態(tài)。而每次請(qǐng)求結(jié)束后,連接就關(guān)閉,相關(guān)的內(nèi)容就釋放了,所以記不住任何狀態(tài),成為無(wú)狀態(tài)連接。

隨著時(shí)間的推移,html頁(yè)面變得復(fù)雜了,里面可能嵌入了很多圖片,這時(shí)候每次訪問(wèn)圖片都需要建立一次tcp連接就顯得低效了。因此Keep-Alive被提出用來(lái)解決效率低的問(wèn)題。從HTTP/1.1起,默認(rèn)都開(kāi)啟了Keep-Alive,保持連接特性,簡(jiǎn)單地說(shuō),當(dāng)一個(gè)網(wǎng)頁(yè)打開(kāi)完成后,客戶端和服務(wù)器之間用于傳輸HTTP數(shù)據(jù)的TCP連接不會(huì)關(guān)閉,如果客戶端再次訪問(wèn)這個(gè)服務(wù)器上的網(wǎng)頁(yè),會(huì)繼續(xù)使用這一條已經(jīng)建立的連接Keep-Alive不會(huì)永久保持連接,它有一個(gè)保持時(shí)間,可以在不同的服務(wù)器軟件(如Apache)中設(shè)定這個(gè)時(shí)間。雖然這里使用TCP連接保持了一段時(shí)間,但是這個(gè)時(shí)間是有限范圍的,到了時(shí)間點(diǎn)依然是會(huì)關(guān)閉的,所以我們還把其看做是每次連接完成后就會(huì)關(guān)閉。后來(lái),通過(guò)Session, Cookie等相關(guān)技術(shù),也能保持一些用戶的狀態(tài)。但是還是每次都使用一個(gè)連接,依然是無(wú)狀態(tài)連接。

為什么Http是無(wú)狀態(tài)的短連接,而TCP是有狀態(tài)的長(zhǎng)連接?Http不是建立在TCP的基礎(chǔ)上嗎,為什么還能是短連接? Http就是在每次請(qǐng)求完成后就把TCP連接關(guān)了,所以是短連接。而我們直接通過(guò)Socket編程使用TCP協(xié)議的時(shí)候,因?yàn)槲覀冏约嚎梢酝ㄟ^(guò)代碼區(qū)控制什么時(shí)候打開(kāi)連接什么時(shí)候關(guān)閉連接,只要我們不通過(guò)代碼把連接關(guān)閉,這個(gè)連接就會(huì)在客戶端和服務(wù)端的進(jìn)程中一直存在,相關(guān)狀態(tài)數(shù)據(jù)會(huì)一直保存著。

在Java中會(huì)有Socket,實(shí)際上socket是對(duì)TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議,而是一個(gè)調(diào)用接口(API)。Socket的出現(xiàn)只是使得程序員更方便地使用TCP/IP協(xié)議棧而已,是對(duì)TCP/IP協(xié)議的抽象,從而形成了我們知道的一些最基本的函數(shù)接口,比如create、listen、connect、accept、send、read和write等等。

比較形象的描述:HTTP是轎車,提供了封裝或者顯示數(shù)據(jù)的具體形式;Socket是發(fā)動(dòng)機(jī),提供了網(wǎng)絡(luò)通信的能力。對(duì)于從C#編程的角度來(lái)講,為了方便,你可以直接選擇已經(jīng)制造好的轎車Http來(lái)與服務(wù)器交互。但是有時(shí)候往往因?yàn)榄h(huán)境因素或者其他的一些定制的請(qǐng)求,必須要使用TCP協(xié)議,這時(shí)就需要使用Socket編程,然后自己去處理獲取的數(shù)據(jù)。就像是你用已有的發(fā)動(dòng)機(jī),自己造了一輛卡車,去從服務(wù)器交互。

HTTP/1.0和HTTP/1.1都把TCP作為底層的傳輸協(xié)議。HTTP客戶首先發(fā)起建立與服務(wù)器TCP連接。一旦建立連接,瀏覽器進(jìn)程和服務(wù)器進(jìn)程就可以通過(guò)各自的套接字來(lái)訪問(wèn)TCP。如前所述,客戶端套接字是客戶進(jìn)程和TCP連接之間的“門(mén)”,服務(wù)器端套接字是服務(wù)器進(jìn)程和同一TCP連接之間的“門(mén)”??蛻敉约旱奶捉幼职l(fā)送HTTP請(qǐng)求消息,也從自己的套接字接收HTTP響應(yīng)消息。類似地,服務(wù)器從自己的套接字接收HTTP請(qǐng)求消息,也往自己的套接字發(fā)送HTTP響應(yīng)消息??蛻艋蚍?wù)器一旦把某個(gè)消息送入各自的套接字,這個(gè)消息就完全落入TCP的控制之中。TCP給HTTP提供一個(gè)可靠的數(shù)據(jù)傳輸服務(wù);這意味著由客戶發(fā)出的每個(gè)HTTP請(qǐng)求消息最終將無(wú)損地到達(dá)服務(wù)器,由服務(wù)器發(fā)出的每個(gè)HTTP響應(yīng)消息最終也將無(wú)損地到達(dá)客戶。

WebService不需要連接,一秒中至少可以支持上萬(wàn)/十萬(wàn)的請(qǐng)求,每次請(qǐng)求然后釋放,沒(méi)有空余的內(nèi)存消耗。一般不會(huì)限制同時(shí)連接的個(gè)數(shù),這是優(yōu)勢(shì)。因?yàn)槊總€(gè)連接即使沒(méi)有在請(qǐng)求數(shù)據(jù),也會(huì)在內(nèi)存中占用一定的空間存儲(chǔ)。會(huì)限制,比如SQL Server數(shù)據(jù)庫(kù)服務(wù)器,一般最多同時(shí)連接16個(gè)。

Http協(xié)議一定通過(guò)指定的端口,80,所以一般計(jì)算機(jī)上不會(huì)限制這個(gè)端口,所以Http協(xié)議能夠順利通過(guò)所有機(jī)器上的防火墻。而使用Socket編程的話,就需要自己指定特定的端口,那么很可能這個(gè)端口是在某個(gè)環(huán)境中禁用的,那么就無(wú)法穿透防火墻。

apache使用的是80端口,也就是這個(gè)程序一直在監(jiān)聽(tīng)著這個(gè)端口。一旦發(fā)現(xiàn)有人要建立到這個(gè)端口的連接,他就會(huì)響應(yīng),然后建立連接。這里說(shuō)的連接都是短連接。所以你對(duì)服務(wù)器上的網(wǎng)址的請(qǐng)求,都是通過(guò)80端口送到網(wǎng)站程序的。然后通過(guò)這個(gè)端口發(fā)送的客戶端瀏覽器。

相關(guān)文章

  • 詳解git的分支與合并的兩種方法

    詳解git的分支與合并的兩種方法

    這篇文章主要介紹了詳解git的分支與合并的兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • git?stash?暫存命令操作

    git?stash?暫存命令操作

    這篇文章主要介紹了git stash暫存命令操作,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • git中commit和push的區(qū)別及說(shuō)明

    git中commit和push的區(qū)別及說(shuō)明

    這篇文章主要介紹了git中commit和push的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • WinSCP和PuTTY(與Linux系統(tǒng)鏈接的工具)的安裝和使用圖文教程

    WinSCP和PuTTY(與Linux系統(tǒng)鏈接的工具)的安裝和使用圖文教程

    Putty是用來(lái)遠(yuǎn)程連接服務(wù)器的,支持SSH、Telnet、Serial等協(xié)議的連接,WinSCP是一個(gè)Windows環(huán)境下使用SSH的開(kāi)源圖形化SFTP客戶端,它的主要功能就是在本地與遠(yuǎn)程計(jì)算機(jī)間安全的復(fù)制文件,本文重點(diǎn)給大家介紹WinSCP和PuTTY安裝使用,感興趣的朋友一起看看吧
    2022-06-06
  • 玩轉(zhuǎn)VSCode插件之Remote-SSH的使用情況

    玩轉(zhuǎn)VSCode插件之Remote-SSH的使用情況

    這篇文章主要介紹了玩轉(zhuǎn)VSCode插件之Remote-SSH的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Git沖突處理指南之如何高效解決代碼沖突問(wèn)題

    Git沖突處理指南之如何高效解決代碼沖突問(wèn)題

    我們?cè)谌粘J褂肎it的過(guò)程中經(jīng)常會(huì)發(fā)生一些意外情況,如果處理不當(dāng),則可能會(huì)出現(xiàn)代碼丟失的假象,這篇文章主要給大家介紹了關(guān)于Git沖突處理指南之如何高效解決代碼沖突問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • 微信小程序給圖片做動(dòng)態(tài)標(biāo)注的實(shí)例分享

    微信小程序給圖片做動(dòng)態(tài)標(biāo)注的實(shí)例分享

    這篇文章主要介紹了微信小程序給圖片做動(dòng)態(tài)標(biāo)注的一個(gè)簡(jiǎn)化的教程,幫助你了解如何在微信小程序中實(shí)現(xiàn)圖片標(biāo)注的功能,需要的朋友可以參考下
    2023-08-08
  • Typora?1.4.8激活?2022最新Typora破解激活使用教程

    Typora?1.4.8激活?2022最新Typora破解激活使用教程

    Typora?for?mac?是一款簡(jiǎn)潔的markdown編輯器、寫(xiě)作軟件。它去除了預(yù)覽窗口,模式切換器,語(yǔ)法符號(hào)以及所有其他不必要的干擾,今天給大家分享Typora?1.4.8?最新Typora破解激活使用教程,感興趣的朋友跟隨小編一起看看吧
    2023-01-01
  • 使用swipe方法模擬屏幕滑動(dòng)與手勢(shì)密碼繪制

    使用swipe方法模擬屏幕滑動(dòng)與手勢(shì)密碼繪制

    這篇文章主要介紹了使用swipe方法模擬屏幕滑動(dòng)與手勢(shì)密碼繪制 ,本文通過(guò)實(shí)力代碼,圖文效果的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 詳解版本控制利器Git,SVN的異同以及適用范圍

    詳解版本控制利器Git,SVN的異同以及適用范圍

    本文通過(guò)對(duì)版本控制程序git及SVN進(jìn)行對(duì)比分析其優(yōu)缺點(diǎn),以及他們的適用范圍,希望對(duì)大家能有所幫助
    2014-11-11

最新評(píng)論

昌平区| 土默特右旗| 铅山县| 鄂托克前旗| 大冶市| 安西县| 武陟县| 彭泽县| 兰溪市| 曲阳县| 城步| 页游| 安陆市| 广德县| 台北县| 青龙| 荣昌县| 茶陵县| 涡阳县| 柏乡县| 屏东市| 滨州市| 东光县| 龙里县| 大石桥市| 桦南县| 华阴市| 绥化市| 耒阳市| 唐山市| 泰安市| 城市| 涟源市| 额济纳旗| 博罗县| 顺义区| 嫩江县| 阳江市| 宜君县| 滨海县| 云南省|