{eval=Array;=+count(Array);}

亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

問答專欄Q & A COLUMN

一次完整的http請求過程是怎樣的?

ningwangningwang 回答9 收藏1
收藏問題

9條回答

fxp

fxp

回答于2022-06-22 19:42

謝邀~

我們打開瀏覽器,在地址欄輸入www.wukong.com,幾秒后瀏覽器打開悟空問答的頁面,那么這幾秒鐘內(nèi)發(fā)生了哪些事情,我就帶大家一起看看完整的流程:

解析URL

瀏覽器首先會對輸入的URL進行驗證,如果不合法的時候,那么會把輸入的文字傳給默認的搜索引擎,比如你只在地址欄輸入“悟空問答”幾個字。

如果URL通過驗證,那么可以解析得到協(xié)議(http或者https)、域名(wukong)、資源(首頁)等信息。

DNS查詢

  • 瀏覽器會先檢查域名信息是否在緩存中。

  • 再檢查域名是否在本地的Hosts文件中。

  • 如果還不在,那么瀏覽器會向DNS服務(wù)器發(fā)送一個查詢請求,獲得目標服務(wù)器的IP地址。

TCP封包及傳輸

這時候瀏覽器獲得了目標服務(wù)器的IP(DNS返回)、端口(URL中包含,沒有就使用默認),瀏覽器會調(diào)用庫函數(shù)socket,生成一個TCP流套接字,也就是完成了TCP的封包。

TCP封包完成之后,就可以傳輸了,在完成“你瞅啥”,“瞅你咋地”,“來,過來嘮嘮”一系列操作之后,瀏覽器和服務(wù)器就完成了TCP的三次握手,建立了連接,后面就可以請求服務(wù)器資源了。

服務(wù)器接收請求并相應(yīng)

  • HTTP有很多請求方法,比如:GET/POST/PUT/DELETE等等,我們?yōu)g覽器輸入URL這種,是GET方法。

  • 服務(wù)器接收到GET請求,服務(wù)器根據(jù)請求信息,獲得相應(yīng)的相應(yīng)內(nèi)容。例如我們輸入的是:www.wukong.com,那么意味著訪問首頁文件。

瀏覽器解析并渲染

瀏覽器從服務(wù)器拿到了想要訪問的資源,大多數(shù)時候,這個資源就是HTML頁面,當然也可能是一個其他類型的文件。

  • 瀏覽器先對HTML文檔進行解析,生成解析樹(以DOM元素為節(jié)點的樹)。

  • 加載頁面的外部資源,比如JS、CSS、圖片。

  • 遍歷DOM樹,并計算每個節(jié)點的樣式,最終完成渲染,變成我們看到的頁面。

這次請求響應(yīng)之后,會斷開連接,就這樣,完成了一次HTTP的請求。

我將持續(xù)分享Java開發(fā)、架構(gòu)設(shè)計、程序員職業(yè)發(fā)展等方面的見解,希望能得到你的關(guān)注。

評論0 贊同0
  •  加載中...
hoohack

hoohack

回答于2022-06-22 19:42

“我是喲喲吼說科技,專注于數(shù)據(jù)網(wǎng)絡(luò)的回答,歡迎大家與我交流數(shù)據(jù)網(wǎng)絡(luò)的問題”

如題,一個完整的HTTP過程是怎樣的?

一個完整的HTTP過程包括建立連接、數(shù)據(jù)傳輸、斷開連接等七個步驟。

下面喲喲來詳細介紹一下每一步:

1、TCP建立連接

HTTP協(xié)議是基于TCP協(xié)議來實現(xiàn)的,因此首先就是要通過TCP三次握手與服務(wù)器端建立連接,一般HTTP默認的端口號為80;

2、瀏覽器發(fā)送請求命令

在與服務(wù)器建立連接后,Web瀏覽器會想服務(wù)器發(fā)送請求命令

3、瀏覽器發(fā)送請求頭消息

在瀏覽器發(fā)送請求命令后,還會發(fā)送一些其它信息,最后以一行空白內(nèi)容告知服務(wù)器已經(jīng)完成頭信息的發(fā)送;

4、服務(wù)器應(yīng)答

在收到瀏覽器發(fā)送的請求后,服務(wù)器會對其進行回應(yīng),應(yīng)答的第一部分是協(xié)議的版本號和應(yīng)答狀態(tài)碼;

5、服務(wù)器回應(yīng)頭信息

與瀏覽器端同理,服務(wù)器端也會將自身的信息發(fā)送一份至瀏覽器;

6、服務(wù)器發(fā)送數(shù)據(jù)

在完成所有應(yīng)答后,會以Content-Type應(yīng)答頭信息所描述的格式發(fā)送用戶所需求的數(shù)據(jù)信息;

7、斷開TCP連接

在完成此次數(shù)據(jù)通信后,服務(wù)器會通過TCP四次揮手主動斷開連接。但若此次連接為長連接,那么瀏覽器或服務(wù)器的頭信息會加入keep-alive的信息,會保持此連接狀態(tài),在有其它數(shù)據(jù)發(fā)送時,可以節(jié)省建立連接的時間;

歡迎大家多多關(guān)注我,在下方評論區(qū)說出自己的見解。

評論0 贊同0
  •  加載中...
HollisChuang

HollisChuang

回答于2022-06-22 19:42

前言

今天我們來徹底聊聊,什么是TCP/IP、http、socket、長連接、短連接

TCP/IP

TCP/IP是協(xié)議組,分為三個層次:

  • 網(wǎng)絡(luò)層
  • 傳輸層
  • 應(yīng)用層。

在網(wǎng)絡(luò)層有:

  • IP協(xié)議
  • ICMP協(xié)議
  • ARP協(xié)議
  • RARP協(xié)議
  • BOOTP協(xié)議

在傳輸層中有:

  • TCP協(xié)議
  • UDP協(xié)議

在應(yīng)用層有:

TCP包括:

  • FTP協(xié)議
  • HTTP協(xié)議
  • TELNET協(xié)議
  • SMTP協(xié)議

UDP包括:

  • DNS協(xié)議
  • TFTP協(xié)議

短連接

流程:連接->傳輸數(shù)據(jù)->關(guān)閉連接

HTTP是無狀態(tài)的,瀏覽器和服務(wù)器每進行一次HTTP操作,就建立一次連接,但任務(wù)結(jié)束就中斷連接。

也可以這樣說:短連接是指SOCKET連接后發(fā)送后接收完數(shù)據(jù)后馬上斷開連接。

長連接

流程:連接 -> 傳輸數(shù)據(jù) -> 保持連接 -> 傳輸數(shù)據(jù) -> 。。。-> 關(guān)閉連接。

長連接指建立SOCKET連接后不管是否使用都保持連接,但安全性較差。

http的長連接

HTTP也可以建立長連接的,使用Connection:keep-alive,HTTP 1.1默認進行長連接。

HTTP1.1 和 HTTP1.0 相比較而言,最大的區(qū)別就是增加了長連接支持(貌似最新的 http1.0 可以顯示的指定 keep-alive),但還是無狀態(tài)的,或者說是不可以信任的。

什么時候用長連接,短連接?

長連接多用于操作頻繁,點對點的通訊,而且連接數(shù)不能太多情況。

每個TCP連接都需要三步握手,這需要時間,如果每個操作都是先連接,再操作的話那么處理速度會降低很多。

所以每個操作完后都不斷開,次處理時直接發(fā)送數(shù)據(jù)包就OK了,不用建立TCP連接。

例如:數(shù)據(jù)庫的連接用長連接, 如果用短連接頻繁的通信會造成socket錯誤,而且頻繁的socket 創(chuàng)建也是對資源的浪費。


而像WEB網(wǎng)站的http服務(wù)一般都用短鏈接,因為長連接對于服務(wù)端來說會耗費一定的資源。

而像WEB網(wǎng)站成千上萬甚至上億客戶端的頻繁連接,用短連接會更省一些資源,如果用長連接,而且同時有成千上萬的用戶,如果每個用戶都占用一個連接的話,那可想而知吧。

所以并發(fā)量大,但每個用戶無需頻繁操作情況下需用短連好。

總之,長連接和短連接的選擇要視情況而定。

數(shù)據(jù)發(fā)送接收方式

異步

報文發(fā)送和接收是分開的,相互獨立的,互不影響。這種方式又分兩種情況:

  • 異步雙工:接收和發(fā)送在同一個程序中,由兩個不同的子進程分別負責發(fā)送和接收
  • 異步單工:接收和發(fā)送是用兩個不同的程序來完成。

同步

報文發(fā)送和接收是同步進行,既報文發(fā)送后等待接收返回報文。

同步方式一般需要考慮超時問題,即報文發(fā)出去后不能無限等待,需要設(shè)定超時時間,超過該時間發(fā)送方不再等待讀返回報文,直接通知超時返回。

在長連接中一般是沒有條件能夠判斷讀寫什么時候結(jié)束,所以必須要加長度報文頭。讀函數(shù)先是讀取報文頭的長度,再根據(jù)這個長度去讀相應(yīng)長度的報文。

Socket是什么

Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口(TCP/IP是協(xié)議,Socket是他們的具體實現(xiàn)和對外api)。

在設(shè)計模式中,Socket其實就是一個門面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面。

對用戶來說,一組簡單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議。

Socket 通信示例

主機 A 的應(yīng)用程序要能和主機 B 的應(yīng)用程序通信,必須通過 Socket 建立連接,而建立 Socket 連接必須需要底層 TCP/IP 協(xié)議來建立 TCP 連接。

建立 TCP 連接需要底層 IP 協(xié)議來尋址網(wǎng)絡(luò)中的主機。

我們知道網(wǎng)絡(luò)層使用的 IP 協(xié)議可以幫助我們根據(jù) IP 地址來找到目標主機,但是一臺主機上可能運行著多個應(yīng)用程序,如何才能與指定的應(yīng)用程序通信就要通過 TCP 或 UPD 的地址也就是端口號來指定。

這樣就可以通過一個 Socket 實例唯一代表一個主機上的一個應(yīng)用程序的通信鏈路了。


建立通信鏈路(有點燒腦,可繞過)

當客戶端要與服務(wù)端通信,客戶端首先要創(chuàng)建一個 Socket 實例,操作系統(tǒng)將為這個 Socket 實例分配一個沒有被使用的本地端口號,并創(chuàng)建一個包含本地和遠程地址和端口號的套接字數(shù)據(jù)結(jié)構(gòu)。


這個數(shù)據(jù)結(jié)構(gòu)將一直保存在系統(tǒng)中直到這個連接關(guān)閉。在創(chuàng)建 Socket 實例的構(gòu)造函數(shù)正確返回之前,將要進行 TCP 的三次握手協(xié)議,TCP 握手協(xié)議完成后,Socket 實例對象將創(chuàng)建完成,否則將拋出 IOException 錯誤。


與之對應(yīng)的服務(wù)端將創(chuàng)建一個 ServerSocket 實例,ServerSocket 創(chuàng)建比較簡單只要指定的端口號沒有被占用,一般實例創(chuàng)建都會成功,同時操作系統(tǒng)也會為 ServerSocket 實例創(chuàng)建一個底層數(shù)據(jù)結(jié)構(gòu),這個數(shù)據(jù)結(jié)構(gòu)中包含指定監(jiān)聽的端口號和包含監(jiān)聽地址的通配符,通常情況下都是“*”即監(jiān)聽所有地址。


之后當調(diào)用 accept() 方法時,將進入阻塞狀態(tài),等待客戶端的請求。當一個新的請求到來時,將為這個連接創(chuàng)建一個新的套接字數(shù)據(jù)結(jié)構(gòu),該套接字數(shù)據(jù)的信息包含的地址和端口信息正是請求源地址和端口。


這個新創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)將會關(guān)聯(lián)到 ServerSocket 實例的一個未完成的連接數(shù)據(jù)結(jié)構(gòu)列表中,注意這時服務(wù)端與之對應(yīng)的 Socket 實例并沒有完成創(chuàng)建,而要等到與客戶端的三次握手完成后,這個服務(wù)端的 Socket 實例才會返回,并將這個 Socket 實例對應(yīng)的數(shù)據(jù)結(jié)構(gòu)從未完成列表中移到已完成列表中。所以 ServerSocket 所關(guān)聯(lián)的列表中每個數(shù)據(jù)結(jié)構(gòu),都代表與一個客戶端的建立的 TCP 連接。

評論0 贊同0
  •  加載中...
blastz

blastz

回答于2022-06-22 19:42

Http請求的一次詳解:

  1. 客戶端輸入URL

  2. 客戶端檢測緩存:

有緩存且較新,客戶端直接讀取本地緩存進行資源展示;

有緩存但是不新,準備http請求包,發(fā)送至服務(wù)端進行緩存校驗;

備注:http1.0中Expire、http1.1中是Cache-Control根據(jù)發(fā)起http請求:

請求報文包含:
a) 請求行
用來說明請求類型(getpostdelete等)、要訪問的資源(URI)以及使用的HTTP版本(1.0還是1.1)
b) 首部(header)
HOST將指出請求的目的地;
User-Agent由瀏覽器來定義,自動發(fā)送;
Connection:通常設(shè)置為keep-Alive, 長連接;
其他首部包括等。
c) 空行
d) 請求實體

3. 提取請求首部HOST通過DNS域名解析獲取服務(wù)IP(DNS緩存遞歸等)

4. 通過IP與默認端口創(chuàng)建TCP連接,進行http請求報文數(shù)據(jù)發(fā)送,其中重點就三次握手進行描述:

客戶端向服務(wù)端發(fā)送syn=1,seq=client請求的ID;
服務(wù)端向客戶端發(fā)送syn=1,seq=服務(wù)端請求的ID,ack=客戶端請求的ID+1;
客戶端向服務(wù)端發(fā)送syn=0,seq=客戶端請求的ID+1,ack=服務(wù)端請求的ID+1,datadata…

5. 服務(wù)端程序接受請求,定向到請求路徑處理請求:

服務(wù)器對請求報文進行解析,并獲取請求的資源及請求方法等相關(guān)信息,根據(jù)方法,資源,首部和可選的主體部分對請求進行處理

元數(shù)據(jù):請求報文首部
<method> <URL> <VERSION>
HEADERS格式name:value
<request body>
示例:
Host: www.chuyuni.cn 請求的主機名稱
Server: Apache/2.4.7

HTTP常用請求方式:MethodGET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS

6.訪問資源:

服務(wù)器獲取請求報文中請求的資源web服務(wù)器,即存放了web資源的服務(wù)器,負責向請求者提供對方請求的靜態(tài)資源,或動態(tài)運行后生成的資源

資源放置于本地文件系統(tǒng)特定的路徑:DocRoot
DocRoot → /var/www/html
/var/www/html/images/logo.jpg
http://www.magedu.com/images/logo.jpg
web服務(wù)器資源路徑映射方式:
(a) docroot (b) alias
(c) 虛擬主機docroot(d) 用戶家目錄docroot

7. 返回處理結(jié)果,準備http響應(yīng):

響應(yīng)報文包含:
a) 狀態(tài)行:http版本(1.1或者1.0),狀態(tài)碼
200:請求正常處理
304:返回上次請求資源未作改動,驗證瀏覽器的緩存機制
400:請求參數(shù)錯誤
401:客戶端無權(quán)訪問,要去輸入用戶名密碼之類的授權(quán)信息
403:禁止訪問(讀寫權(quán)限等影響)
404:請求的資源不存在
500:服務(wù)內(nèi)部錯誤
502:網(wǎng)關(guān)錯誤
503:臨時過載或者維護,導(dǎo)致服務(wù)端無法正常處理請求
b) 首部
報文支持的語言編碼格式等,注意If-Modified-Since:只有當所請求的內(nèi)容在指定的日期之后又經(jīng)過修改才返回它,否則返回304“Not Modified”應(yīng)答,用于服務(wù)端緩存校驗
c) 空行
d) 響應(yīng)報文實體

8. 通過建立的tcp連接來返回相關(guān)的http響應(yīng)報文及http狀態(tài)信息,然后根據(jù)實際情況看是否關(guān)閉連接(Connection的keep-alive)

9. TCP連接關(guān)閉經(jīng)歷4次握手

客戶端主動關(guān)閉連接放發(fā)送FIN進入FIN_WAIT1狀態(tài)

服務(wù)端發(fā)最后的data和ack客戶端接收進入CLOSEWAIT狀態(tài),客戶端進入接受ACK進入FINWAIT2狀態(tài)

服務(wù)端主動發(fā)FIN,客戶端接受FIN并發(fā)送ack進入TIMEWAIT狀態(tài)

服務(wù)器端正式關(guān)閉連接進入close狀態(tài)

10. 客戶端拿到http響應(yīng)的報文信息,經(jīng)過一系列前端處理過程最終將請求的資源進行展示。

作者:夕陽雨晴,歡迎關(guān)注我的我們:偶爾美文,主流Java,為你講述不一樣的碼農(nóng)生活。

評論0 贊同0
  •  加載中...
Pink

Pink

回答于2022-06-22 19:42

專業(yè)問題我來回答,

背景

  • HTTP(HyperText Transfer Protocol超文本傳輸協(xié)議),該協(xié)議位于OSI模型的應(yīng)用層,應(yīng)用層是開放系統(tǒng)的最高層,是程序員能直接操縱的通信層。一次HTTP的請求主要建立在傳輸層TCP三次握手建立通信和四次分手斷開通信的基礎(chǔ)上,應(yīng)用層在TCP建立好通信線路后直接發(fā)送數(shù)據(jù)到對端服務(wù)器上。
  • TCP:TCP是一種面向連接的可靠傳輸協(xié)議,為什么說它是一種可靠的傳輸協(xié)議,就在于他這種三次握手和四次分手的機制,通過握手能定時重傳,序號確認,數(shù)據(jù)包校驗,擁塞控制來達到可靠傳輸。當然UDP是不建立這種可靠傳輸?shù)囊蚨鴽]有握手機制。

TCP三次握手和四次分手

所謂三次握手(Three-way Handshake),是在建立通信過程中,服務(wù)端和客戶端總共發(fā)送三次數(shù)據(jù)包。三次握手的目的是:建立TCP通信,和對方同步序列號和確認號,交換通信窗口的大小等。

  • 第一次握手(SYN=1,seq=x):客戶端向服務(wù)端發(fā)送一個TCP標志位SYN為1的數(shù)據(jù)包,表明要與服務(wù)端指定的端口建立連接,同時知名該數(shù)據(jù)包的第一個字節(jié)的序號為seq=X,發(fā)送完畢后,客戶端進入SYN-END狀態(tài)。
  • 第二次握手(SYN=1,ACK=1,ack=x+1,seq=y):服務(wù)端向客戶端發(fā)送一個同步確認包(SYN=1,ACK=1,確認號為x+1,表明自己已經(jīng)收到序號為x開始的數(shù)據(jù)包,并向客戶端發(fā)送一個序號為seq=y的包,發(fā)送完畢后,服務(wù)器端進入 SYN_RCVD 狀態(tài)。
  • 第三次握手(ACK=1,seq=x+1,ack=y+1):此時客戶端向服務(wù)端發(fā)送一個確認包(ACK=1),同時確認號為y+1,表明客戶端已經(jīng)接受到服務(wù)器以y序號開始的數(shù)據(jù)包,發(fā)送完畢后,客戶端進入 ESTABLISHED 狀態(tài),當服務(wù)器端接收到這個包時,也進入 ESTABLISHED 狀態(tài),TCP握手結(jié)束。
  • 第一次揮手(FIN=1,seq=u):客戶端向服務(wù)端發(fā)送FIN=1的包,表明要斷開通信,同時發(fā)送一個序號seq=u的數(shù)據(jù)包;
  • 第二次揮手(ACK=1,seq=v,ack=u+1):服務(wù)端向客戶端發(fā)送一個確認數(shù)據(jù)包(ACK=1),同時發(fā)送一個序列號為seq=v的數(shù)據(jù)包。
  • 第三次揮手(FIN=1,ACK=1,seq=w,ack=u+1):FIN=1,表明服務(wù)端同意斷開通信鏈路,這個包同樣是確認包(ACK=1),因為服務(wù)端發(fā)送的兩次確認包之間客戶端并沒有發(fā)送數(shù)據(jù)包給服務(wù)端,所以確認號都是ack=u+1;
  • 第四次揮揮手(ACK=1,seq=u+1,ack=w+1):服務(wù)端向客戶端發(fā)送確(ACK=1),同時發(fā)送一個序列號為u+1的包。至此,通信鏈路斷開。

完整的HTTP請求過程

1.建立TCP連接:只有當TCP建立完成后才能進行通信。

2.客戶端向服務(wù)端發(fā)起請求:該階段應(yīng)用層通過HTTP協(xié)議組裝請求包通過傳輸層網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層到達服務(wù)器。

3.客戶端向服務(wù)端發(fā)送請求頭信息:在這一步客戶端將請求頭信息組裝在各類頭部字段中,進行發(fā)送。

4.服務(wù)端向客戶端發(fā)送響應(yīng):服務(wù)端接收到客戶端的請求信息后,做出響應(yīng)來客戶端。

5.服務(wù)端向客戶端發(fā)送響應(yīng)報文的頭部字段:將響應(yīng)數(shù)據(jù)包的頭部字段發(fā)送給客戶端。

6.服務(wù)端向客戶端發(fā)送響應(yīng)數(shù)據(jù):通過Body將響應(yīng)數(shù)據(jù)給客戶單,而這些數(shù)據(jù)才是客戶端要獲取的。

7.關(guān)閉通信線路:數(shù)據(jù)發(fā)送完畢后,如果是短連接將馬上關(guān)閉通信線路,如果是長連接,服務(wù)端會通過同步信息Connection:keep-alive來告訴客戶端。

以上,就是一個完整HTTP請求的流程,其主要在于TCP建聯(lián),后續(xù)都是應(yīng)用層之間的交互來通信。

感覺我的回答對你有幫助,麻煩點贊關(guān)注哈,你的關(guān)注是我繼續(xù)下去的動力對網(wǎng)絡(luò)有興趣的可以留言交流,有疑問的也可以私信,大家一起成長,一起交流,謝謝大家

評論0 贊同0
  •  加載中...
masturbator

masturbator

回答于2022-06-22 19:42

謝謝邀請。

一次完整的HTTP請求過程是怎么樣的?事實上,題主的這個問題,最開始我也是抱著試一試的心態(tài)進來的,后來發(fā)現(xiàn)整個回答區(qū)基本上都是學(xué)術(shù)回答,講的通俗一點,都是專業(yè)人士在那邊玩,但是……沒幾個民眾能看得懂。就好像評論區(qū)那邊有一個回答的評論是,“在我們發(fā)計算機學(xué)術(shù)信息好像怪怪的。

我大致把這個問題查了個遍,寫個最通俗的版本給大家看看吧。

其實HTTP請求過程,就是發(fā)送請求—響應(yīng)的過程。

第一步

今天你想起來,有事,需要找隔壁老王要個小視頻。于是,你打開了“TCP協(xié)議牌”機器,這是一臺高清組裝的移動電話機。

①TCP告訴你,電話線路連接通道正在接通……

第二步

電話接通了,在視頻上出現(xiàn)了隔壁老王那張猥瑣的笑臉。

你開始說話。

  • ①你:喂,你能聽到我說話嗎?(第一次握手)
  • ②隔壁老王:能能能,我能聽到,那你能聽到我的說話嗎?(第二次握手)
  • ③你:哈哈,我也能聽到!那咱們開始吧!(第三次握手)

接下來,就要開始做正事了。

第三步

1.你說:

哎呀老王呀,我這邊需要一個小電影,你能給我發(fā)過來嗎?(客戶端發(fā)送請求信息)

2.接著,沒等老王說話,你就把需要的小電影名字、大小、我這網(wǎng)速等等信息給他發(fā)了過去(客戶端發(fā)送頭部信息),末尾還加上了一長串省略空格(以空格做結(jié)尾)。

第四步

老王皺皺眉頭。

“行吧!”(服務(wù)器端回應(yīng)請求信息)

“你是要這個小電影《XXX》,番號XXX,1GB大小,某度網(wǎng)盤是吧?行!”(服務(wù)器端回應(yīng)頭部信息)

老王動了動手指,查找了一下儲存卡目錄,翻出小電影。

“我給你發(fā)過去了!”(服務(wù)器端發(fā)送請求數(shù)據(jù))

第五步

你:哎呀哎呀,收到了!謝謝老王哈!下次請你吃飯!那我就先關(guān)閉了!(第一次揮手)
老王:最后跟你說一句,少看小電影!(第二次揮手)
老王:那我就先關(guān)閉了?(第三次揮手)
你:行,那你關(guān)閉吧!(第四次揮手)

視頻聊天結(jié)束。你隨即打開收到的抖音小視頻,美滋滋的看起成都小甜甜姐姐起來。

這件事告訴我們:

我還沒有女朋友。

評論0 贊同0
  •  加載中...
LdhAndroid

LdhAndroid

回答于2022-06-22 19:42

域名解析 --> 發(fā)起TCP的3次握手 --> 建立TCP連接后發(fā)起http請求 --> 服務(wù)器響應(yīng)http請求,瀏覽器得到html代碼 --> 瀏覽器解析html代碼,并請求html代碼中的資源(如js、css、圖片等) --> 瀏覽器對頁面進行渲染呈現(xiàn)給用戶

評論0 贊同0
  •  加載中...
haoguo

haoguo

回答于2022-06-22 19:42

一,在瀏覽器地址欄輸入網(wǎng)址

二,解析域名,找到主機的ip地址

三,瀏覽器與主機建立TCP連接

四,瀏覽器向主機發(fā)起GET請求

五,服務(wù)器響應(yīng)請求,返回html頁面

六,瀏覽器開始顯示服務(wù)器返回的頁面,并且在顯示html頁面的時候,如果遇見css文件,js文件,圖片,就又會再次給相應(yīng)地址服務(wù)器發(fā)起請求。

評論0 贊同0
  •  加載中...
pumpkin9

pumpkin9

回答于2022-06-22 19:42

一次完整的http請求過程是怎樣的?

一次完整的http請求可以說相當迷人:

從你輸入網(wǎng)址點擊回車的那一刻開始,一切就開始發(fā)生:

1、首先瀏覽器會解析你輸入的這一串字符;主要是解析協(xié)議(HTTP(s)、ftp:)、域名(www.qq.com)等;如果是合法的網(wǎng)址就繼續(xù)進行;

2、接下啦就是要根據(jù)第一步解析到的域名找到域名指向的IP我們稱之為DNS查詢。當然這也是一個相對有趣的過程,但不是問題重點,此處簡略;

3、找到服務(wù)器的IP地址后寫下來就是http請求的開始:

三次握手建立連接:

客戶端:“在嗎?”;

服務(wù)端:“在啊”;

客服端 :“那我開始連你啦”;開始發(fā)起http請求

建立連接后發(fā)生Http請求,請求內(nèi)容有:

請求行:uri和協(xié)議的版本 (如:GET /index.php HTTP/1.1 )

請求頭部:關(guān)客戶端信息及請求正文信息(長度、編碼格式等)

請求數(shù)據(jù):如:u=admin&pwd=123456 (可為空)

服務(wù)端在收到這些信息后作出相應(yīng)的回答:

狀態(tài):協(xié)議版本+狀態(tài)碼+簡要描述(如:HTTP/1.1 200 OK)

響應(yīng)頭部:Content-Type(必須有:比如Content-Type: text/html), 其他可選:Date 、server 等

響應(yīng)數(shù)據(jù):即服務(wù)器回應(yīng)客戶端的內(nèi)容

打開瀏覽器=》F12 訪問一下百度看一下這個完美的過程吧!

當然其中涉及的到東西遠不止這些,比如瀏覽器靜態(tài)文件的緩存;各個狀態(tài)碼含義;單次請求最大返回資源數(shù);請求字節(jié)長度限制等等。

此處班門弄斧,如有錯誤請批評指正。

評論0 贊同0
  •  加載中...

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<