1、HTTP 的請求處理過程是什麼?
那個叫名稱解析過程:
當客戶端向DNS伺服器發送請求,要求解析地址地址www.baidu.com時,將執行如下步驟:
1.為了查詢www.baidu.com的IP地址,客戶端發出請求並向所設置的DNS伺服器發送遞歸查詢。
2.若所設DNS伺服器無法在其資料庫中找到www.baidu.com的匹配項,則向根目錄域的權威DNS發送迭代查詢。
3.若根目錄域權威DNS伺服器也找不到www.baidu.com的匹配項,則以com域的權威DNS伺服器的IP地址返回給1中的伺服器。
4.1中的DNS伺服器收到根目錄域返回信息後,向com域的權威DNS伺服器發送迭代查詢。
5.若com域的權威DNS伺服器也找不到www.baidu.com的匹配項,則以web.com域的權威DNS伺服器的IP地址返回給1中的伺服器。
6.1中的DNS伺服器收到com域返回信息後,向web.com域的權威DNS伺服器發送迭代查詢。
7.若web.com域的權威DNS伺服器在其資料庫中找到了www.baidu.com的匹配項,則以www.baidu.com的IP地址返回給1中的伺服器。
8.1中的DNS伺服器收到web.com域返回信息後,將www.baidu.com的IP地址作為響應發送給客戶端。
2、伺服器如何處理http請求
1.需求
了解服務端如何處理http請求,了解基本的處理流程
2.實戰
處理http請求分為7個步驟
2.1 Tcp連接
建立一條tcp鏈接,(若之前不存在持久鏈接keep-alive),把客戶端的ip和port,服務端的ip和port數據放到web伺服器連接表中。伺服器隨時監聽鏈接表中的鏈接,看有沒有數據變化
2.2 接收http請求
一旦我們發送http請求了,這條tcp鏈接就開始工作了。因為web伺服器鏈接表中有許多鏈接需要被處理,處理的方式有單線程,多線程這些(這些涉及操作系統的知識)。
2.3 處理http請求
處理的過程大致是把請求的信息解析出來,如下圖
2.4 訪問資源
訪問資源可以是訪問靜態資源,這個就直接根據url地址去伺服器里找就好了。
訪問動態資源的話要經過一個叫cgi的東西,再用服務端腳本處理,再返回給前端。如下圖所示
2.5 構建響應
要是找到資源,則構建響應信息,包括響應的對象類型,長度,狀態碼。
另一個情況是重定向響應,就是直接返回一個重定向,客戶端看到之後,立刻再向重定向的地址發起請求。重定向的響應的狀態碼一般是3xx。
2.6 發送響應
把構建的響應發送給客戶端
2.7 記錄日誌
服務端對這個請求響應過程進行記錄。(另外專門再講)
3.總結
以上是服務端處理http請求的大致過程。能讓大家有個大致輪廓,當然裡面有很多細節的知識沒講到,要另外查詢資料並學習
3、伺服器工作原理是什麼
伺服器的工作原理就是通過網路對伺服器進行連接,從連接過程、請求過程、應答過程以及關閉連接,這四個方面來達到數據連接、頁面訪問、許可權管理等操作。
(3)伺服器請求過程擴展資料:
伺服器訪問過程
1、連接過程
伺服器和其瀏覽器之間所建立起來的一種連接。查看連接過程是否實現,用戶可以找到和打開socket這個虛擬文件,這個文件的建立意味著連接過程這一步驟已經成功建立。
2、請求過程
瀏覽器運用socket這個文件向其伺服器而提出各種請求。
3、應答過程
運用HTTP協議把在請求過程中所提出來的請求傳輸到伺服器,進而實施任務處理,然後運用HTTP協議把任務處理的結果傳輸到瀏覽器,同時在瀏覽器上面展示上述所請求之界面。
4、關閉連接
就是當上一個步驟--應答過程完成以後,伺服器和其瀏覽器之間斷開連接之過程。
伺服器上述4個過程環環相扣、緊密相聯,邏輯性比較強,可以支持多個進程、多個線程以及多個進程與多個線程相混合的技術。
參考資料來源:網路--伺服器
參考資料來源:網路--WEB伺服器
4、瀏覽器與伺服器間一次網頁請求過程可以具體劃分為哪些步驟
網頁是通過http協議進行通信的,可以網路一下:http協議
5、主機a向主機b發起一個http請求並得到響應,請問這個過程中,會經歷哪些步驟
不同協議的通信方式有不同的過程。
圖書館查資料比較好,ccie ccna ccnp等書里講的很詳細
http協議,3次握手
用戶的點擊導致瀏覽器發起建立一個與Web伺服器的TCP連接;這里涉及·—次「三次握手」過程——首先是客戶向伺服器發送一個小的冗餘消息,接著是伺服器向客戶確認並響應以一個小的TCP消息,最後是客戶向伺服器回確認。三次握手過程的前兩次結束時,流逝的時間為1個RTT。此時客戶把HTTP請求消息發送到TCP連接中,客戶接著把三次握手過程最後一次中的確認捎帶在包含這個消息的數據分節中發送以去。伺服器收到來自TCP連接的請求消息後,把相應的HTML文件發送到TCP連接中,伺服器接著把對早先收到的客戶請求的確認捎帶在包含該HTML文件的數據分節中發送出去。
FTP的工作方式FTP支持兩種模式,一種方式叫做Standard (也就是 PORT方式,主動方式),一種是 Passive (也就是PASV,被動方式)。 Standard模式 FTP的客戶端發送 PORT 命令到FTP伺服器。Passive模式FTP的客戶端發送 PASV命令到 FTP Server。
下面介紹一個這兩種方式的工作原理:
Port模式
FTP 客戶端首先動態的選擇一個埠(一般是1024以上的)和FTP伺服器的TCP 21埠建立連接,通過這個通道發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。 PORT命令包含了客戶端用什麼埠接收數據。在傳送數據的時候,伺服器端通過自己的TCP 20埠連接至客戶端的指定埠發送數據。 FTP server必須和客戶端建立一個新的連接用來傳送數據。
Passive模式
在建立控制通道的時候和Standard模式類似,但建立連接後發送的不是Port命令,而是Pasv命令。FTP伺服器收到Pasv命令後,隨機打開一個高端埠(埠號大於1024)並且通知客戶端在這個埠上傳送數據的請求,客戶端連接FTP伺服器此埠,然後FTP伺服器將通過這個埠進行數據的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接。
很多防火牆在設置的時候都是不允許接受外部發起的連接的,所以許多位於防火牆後或內網的FTP伺服器不支持PASV模式,因為客戶端無法穿過防火牆打開FTP伺服器的高端埠;而許多內網的客戶端不能用PORT模式登陸FTP伺服器,因為從伺服器的TCP 20無法和內部網路的客戶端建立一個新的連接,造成無法工作。
6、http 請求過程
HTTP通信機制是在一次完整的HTTP通信過程中,Web瀏覽器與Web伺服器之間將完成下列7個步驟:
1. 建立TCP連接
在HTTP工作開始之前,Web瀏覽器首先要通過網路與Web伺服器建立連接,該連接是通過TCP來完成的,該協議與IP協議共同構建Internet,即著名的TCP/IP協議族,因此Internet又被稱作是TCP/IP網路。HTTP是比TCP更高層次的應用層協議,根據規則,只有低層協議建立之後才能,才能進行更層協議的連接,因此,首先要建立TCP連接,一般TCP連接的埠號是80。
2. Web瀏覽器向Web伺服器發送請求命令
一旦建立了TCP連接,Web瀏覽器就會向Web伺服器發送請求命令。例如:GET/sample/hello.jsp HTTP/1.1。
3. Web瀏覽器發送請求頭信息
瀏覽器發送其請求命令之後,還要以頭信息的形式向Web伺服器發送一些別的信息,之後瀏覽器發送了一空白行來通知伺服器,它已經結束了該頭信息的發送。
4. Web伺服器應答
客戶機向伺服器發出請求後,伺服器會客戶機回送應答, HTTP/1.1 200 OK ,應答的第一部分是協議的版本號和應答狀態碼。
5. Web伺服器發送應答頭信息
正如客戶端會隨同請求發送關於自身的信息一樣,伺服器也會隨同應答向用戶發送關於它自己的數據及被請求的文檔。
6. Web伺服器向瀏覽器發送數據
Web伺服器向瀏覽器發送頭信息後,它會發送一個空白行來表示頭信息的發送到此為結束,接著,它就以Content-Type應答頭信息所描述的格式發送用戶所請求的實際數據。
7. Web伺服器關閉TCP連接
一般情況下,一旦Web伺服器向瀏覽器發送了請求數據,它就要關閉TCP連接,然後如果瀏覽器或者伺服器在其頭信息加入了這行代碼:
Connection:keep-alive
TCP連接在發送後將仍然保持打開狀態,於是,瀏覽器可以繼續通過相同的連接發送請求。保持連接節省了為每個請求建立新連接所需的時間,還節約了網路帶寬。
7、Web伺服器對來自瀏覽器的請求的處理過程
c/s(客戶機/伺服器)有三個主要部件:資料庫伺服器、客戶應用程序和網路。伺服器負責有效地管理系統的資源,其任務集中於:
1.資料庫安全性的要求
2.資料庫訪問並發性的控制
3.資料庫前端的客戶應用程序的全局數據完整性規則
4.資料庫的備份與恢復
客戶端應用程序的的主要任務是:
1.提供用戶與資料庫交互的界面
2.向資料庫伺服器提交用戶請求並接收來自資料庫伺服器的信息
3.利用客戶應用程序對存在於客戶端的數據執行應用邏輯要求
4.網路通信軟體的主要作用是,完成資料庫伺服器和客戶應用程序之間的數據傳輸。
三層C/S結構是將應用功能分成表示層、功能層和數據層三部分。
解決方案是:對這三層進行明確分割,並在邏輯上使其獨立。
在三層C/S中, 表示層 是應用的用戶介面部分,它擔負著用戶與應用間的對話功能。它用於檢查用戶從鍵盤等輸入的數據,顯示應用輸出的數據。為使用戶能直觀地進行操作,一般要使用圖形用戶介面 (GUI),操作簡單、易學易用。在變更用戶介面時,只需改寫顯示控制和數據檢查程序,而不影響其他兩層。檢查的內容也只限於數據的形式和值的范圍,不包括有關業務本身的處理邏輯。
功能層 相當於應用的本體,它是將具體的業務處理邏輯地編入程序中。表示層和功能層之間的數據交往要盡可能簡潔。
數據層 就是DBMS,負責管理對資料庫數據的讀寫。DBMS必須能迅速執行大量數據的更新和檢索。現在的主流是關系資料庫管理系統 (RDBMS)。因此一般從功能層傳送到數據層的要求大都使用SQL語言。
在三層或N層C/S結構中,中間件 (Middleware) 是最重要的部件。所謂中間件是一個用API定義的軟體層,是具有強大通信能力和良好可擴展性的分布式軟體管理框架。它的功能是在客戶機和伺服器或者伺服器和伺服器之間傳送數據,實現客戶機群和伺服器群之間的通信。其工作流程是:在客戶機里的應用程序需要駐留網路上某個伺服器的數據或服務時,搜索此數據的C/S應用程序需訪問中間件系統。該系統將查找數據源或服務,並在發送應用程序請求後重新打包響應,將其傳送回應用程序。隨著網路計算模式的發展,中間件日益成為軟體領域的新的熱點。中間件在整個分布式系統中起數據匯流排的作用,各種異構系統通過中間件有機地結合成一個整體。每個C/S環境,從最小的LAN環境到超級網路環境,都使用某種形式的中間件。無論客戶機何時給伺服器發送請求,也無論它何時應用存取資料庫文件,都有某種形式的中間件傳遞C/S鏈路,用以消除通信協議、資料庫查詢語言、應用邏輯與操作系統之間潛在的不兼容問題。
三層C/S結構的優勢主要表現在以下幾個方面:
1.利用單一的訪問點,可以在任何地方訪問站點的資料庫;
2.對於各種信息源,不論是文本還是圖形都採用相同的界面;
3.所有的信息,不論其基於的平台,都可以用相同的界面訪問;
4.可跨平台操作;
5.減少整個系統的成本;
6.維護升級十分方便;
7.具有良好的開放性;
8.系統的可擴充性良好;
9.進行嚴密的安全管理;
0.系統管理簡單,可支持異種資料庫,有很高的可用性。
8、HTTP協議中請求方法Get和Post的區別,從HTTP請求到服務端響應過程
1、HTTP請求概述
在前面有一篇文章對HTTP協議有詳細的描述,這里就不再過多的做說明,只是簡單的作為這篇文章的引子。
HTTP協議又被稱為超文本傳輸協議,它的的設計目的是保證客戶機與伺服器之間的通信。HTTP 的工作方式是客戶端與伺服器之間的請求-應答協議。在客戶端和伺服器之間進行請求-響應時,有兩個最基本的請求方式:GET 和 POST。
其中,GET請求表示從指定的資源請求數據,POST請求表示向指定的資源提交要被處理的數據。
2、HTTP請求格式
在HTTP請求中,首先是請求行,注意這里的請求行一定要放在最前面;其次,是請求頭,英文表示為header;然後會空一行,緊接著就可以是請求的具體內容了,一般稱之為請求體,request-body。給出一個圖示如下:
3、GET請求與POST請求對比
GET請求與POST請求有一些異同點,主要有以下幾點問題:
(1)、GET請求和POST請求都是客戶端與伺服器之間交互,請求--應答模式的協議
(2)、GET請求是通過URL直接請求數據,數據信息可以在URL中直接看到,比如瀏覽器訪問;而POST請求是放在請求頭中的,我們是無法直接看到的;
(3)、GET提交有數據大小的限制,一般是不超過1024個位元組,而這種說法也不完全准確,HTTP協議並沒有設定URL位元組長度的上限,而是瀏
覽器做了些處理,所以長度依據瀏覽器的不同有所不同;POST請求在HTTP協議中也沒有做說明,一般來說是沒有設置限制的,但是實際上瀏覽器也有默認
值。總體來說,少量的數據使用GET,大量的數據使用POST。
(4)、GET請求因為數據參數是暴露在URL中的,所以安全性比較低,比如密碼是不能暴露的,就不能使用GET請求;POST請求中,請求參數信息是放在請求頭的,所以安全性較高,可以使用。在實際中,涉及到登錄操作的時候,盡量使用HTTPS請求,安全性更好。
下面給出一副圖示,說明一下HTTP中GET與POST請求的差異:
4、使用步驟:
在Android中使用HTTP請求,主要步驟如下:
(1)、實例化一個HttpGet(或HttpPost)對象,將請求的URL地址通過構造方法傳給HttpGet(或HttpPost)對象;
(2)、使用DefaultHttpClient類的execute方法發送GET或POST 請求,並返回HttpResponse對象;
(3)、通過HttpResponse介面的getEntity方法返回響應信息。
5、實例代碼
給出一個在實際應用中的一個POST請求的代碼片段:
[java] view plain copy print?
params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "Post方法"));
params.add(new BasicNameValuePair("param2", "第二個參數"));
try {
HttpPost post = new HttpPost(baseUrl);
post.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //將參數填入POST Entity中
HttpResponse response = httpClient.execute(post); //執行POST方法
resCode = response.getStatusLine().getStatusCode()); //獲取響應碼
result = EntityUtils.toString(response.getEntity(), "utf-8")); //獲取響應內容
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
6、HTTP請求狀態碼意義
HTTP請求中,主要有這樣幾個類型:1XX:表示信息提示,2XX:表示成功,3XX:表示重定向,4XX:表示客戶端請求錯誤,5XX:表示伺服器錯誤。常見的幾個HTTP請求狀態碼意義如下:
200 OK: 找到了該資源,並且一切正常。
304 NOT MODIFIED: 該資源在上次請求之後沒有任何修改。這通常用於瀏覽器的緩存機制。
401 UNAUTHORIZED: 客戶端無權訪問該資源。這通常會使得瀏覽器要求用戶輸入用戶名和密碼,以登錄到伺服器。
403 FORBIDDEN: 客戶端未能獲得授權。這通常是在401之後輸入了不正確的用戶名或密碼。
404 NOT FOUND: 在指定的位置不存在所申請的資源。
505 NOT SUPPORTED:伺服器不支持請求中所指明的HTTP版本
9、從輸入URL訪問伺服器,到獲得相應的響應信息的全部過程
不知道樓主想了解哪個過程,了解到什麼程度,我提供兩個部分吧(1)如果在URL中使用域名,以 www.qq.com 為例,DNS名稱解析過程: 當客戶端向DNS伺服器發送請求,要求解析地址地址 www.qq.com 時,將執行如下步驟: 1.為了查詢 www.qq.com 的IP地址,客戶端發出請求並向所設置的DNS伺服器發送遞歸查詢。 2.若所設DNS伺服器無法在其資料庫中找到 www.qq.com 的匹配項,則向根目錄域的權威DNS發送迭代查詢。 3.若根目錄域權威DNS伺服器也找不到 www.qq.com 的匹配項,則以com域的權威DNS伺服器的IP地址返回給1中的伺服器。 4.1中的DNS伺服器收到根目錄域返回信息後,向com域的權威DNS伺服器發送迭代查詢。 5.若com域的權威DNS伺服器也找不到 www.qq.com 的匹配項,則以web.com域的權威DNS伺服器的IP地址返回給1中的伺服器。 6.1中的DNS伺服器收到com域返回信息後,向web.com域的權威DNS伺服器發送迭代查詢。 7.若web.com域的權威DNS伺服器在其資料庫中找到了 www.qq.com 的匹配項,則以 www.qq.com 的IP地址返回給1中的伺服器。 8.1中的DNS伺服器收到web.com域返回信息後,將 www.qq.com 的IP地址作為響應發送給客戶端。(2)URL種類很多啊,我這里以最常用的HTTP協議為例吧 在http傳輸的過程中,被稱為客戶端的請求者向伺服器請求一個文件。 最基本的過程是: 1 客戶端連接一個主機; 2 伺服器接收連接, 3 客戶端請求一個文件, 4 伺服器發送一個應答. 實例:在瀏覽器上敲入「 http://www.maketop.net/resource/rs_041112_02.php 」.瀏覽器將連接 www.maketop.net 然後發送: >> GET /resource/rs_041112_02.php Http1.1 >> Host: www.maketop.net >> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, >> Accept-Language: en >> Accept-Encoding: gzip, deflate >> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10 >> Connection: Keep-Alive 解釋:瀏覽器請求頁面「/resource/rs_041112_02.php」。並使用HTTP1.1協議。並告訴伺服器你的瀏覽器是Firefox0.10。操作系統是Windows XP。 瀏覽器希望保持與 www.maketop.net 之間的連接,並請求獲得多的文件,包括網頁中的圖片。翻譯成語言上面是: >> 用HTTP1.1協議獲得 /resource/rs_041112_02.php >> 訪問的主機是: www.maketop.net >> 接收的文件包括了: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, >> 使用的語言是: en >> 接收的編碼方式(瀏覽器能夠解釋的)是: gzip, deflate >> 用戶的瀏覽器信息:Windows XP的操作系統 Firefox/0.10的瀏覽器
10、伺服器的原理,如何處理請求
問題挺多的。首先,你們老師說得已經非常簡潔了,如果要更深層次,從內網(區域網,比如你們的校園網)發送數據出去就已經夠寫好幾千字了,更別說還從內網說到外網。
伺服器只是一個相對的概念,假如別人需要訪問的網站在你的電腦上,你的電腦為別人服務,那麼你的電腦相對於別人的電腦來說就是一台伺服器。你輸入網址之後,你就向伺服器傳送了數據,數據的傳送分上傳和下載,也是相對的,你想伺服器傳送數據,對於你而言是上傳數據,對伺服器而言就變成了下載數據;然後伺服器把數據返回給你,這個過程伺服器就變成了上傳數據到你的電腦,而對於你而言,這個過程你在下載伺服器的數據。
IIS和TOMCAT這些叫WEB容器。把網站放進容器裡面,你才能訪問到網站,假如伺服器是老闆,那麼容器就是他們的秘書,他們會向老闆匯報,並讓老闆分配工作。
初學者還是先慢慢來吧,先學好底層的各種協議。