1.在網(wǎng)頁瀏覽器的地址欄中輸入URL時,Web頁面是如何呈現(xiàn)的姜凄?
web瀏覽器根據(jù)地址欄中指定的URL從服務器端獲取文件資源等信息女气,從而顯示出web頁面。Web使用一種名為HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議)的協(xié)議作為規(guī)范掉缺,完成從客戶端到服務端的一系列運作流程「昵埽可以說眶明,web是建立在HTTP協(xié)議上通信的。
2.HTTP是如何產(chǎn)生和發(fā)展的筐高?
1989年3月搜囱,CERN(歐洲核子研究組織)的蒂姆·博納斯·李博士提出了一種能讓遠隔兩地的研究者們共享知識的設想:借助多文檔之間相互關聯(lián)形成的超文本(HyperText),連成可相互參閱的WWW(World Wide Web柑土,萬維網(wǎng))蜀肘。
1990年11月,CERN成功研發(fā)了世界上第一臺Web服務器和Web瀏覽器稽屏。
1991年8月6號扮宠,世界上第一個網(wǎng)站上線了。http://info.cern.ch/
1993年1月诫欠,現(xiàn)代瀏覽器的祖先NCSA(National Center for Supercomputer Applications涵卵,美國國家超級計算機中心)研發(fā)的Mosaic問世了。它以in-line(內(nèi)聯(lián))等形式顯示HTML的圖像荒叼,在圖像方面出色的表現(xiàn)使它迅速在世界范圍內(nèi)流行開來轿偎。
1993年9月,NCSA Mosaic發(fā)布了Windows和Macintosh版被廓,使用CGI技術的NCSA Web服務器坏晦、NCSA HTTPd1.0也差不多是這個時期出現(xiàn)的。
1994年12月嫁乘,網(wǎng)景通信公司發(fā)布了Netscape Navigator1.0昆婿,1995年微軟發(fā)布了Internet Explorer1.0和2.0。
1995年蜓斧,Apache 0.2出現(xiàn)仓蛆,HTML發(fā)布了2.0版本,同年挎春,微軟公司和網(wǎng)景公司爆發(fā)瀏覽器大戰(zhàn)看疙,各自對HTML做了擴展,導致在寫HTML頁面時直奋,必須考慮兼容兩家公司的瀏覽器能庆。時至今日,這個問題仍令寫前端頁面的工程師感到棘手脚线。
1996年5月搁胆,HTTP正式作為標準被公布,被命名為HTTP1.0
1997年1月,HTTP1.1公布
2000年前后渠旁,這場戰(zhàn)爭隨著網(wǎng)景公司的衰落而暫告一段落。
2004年顾腊,Mozilla基金會發(fā)布了Firefox瀏覽器肛度,Internet Explorer瀏覽器的版本從6升到7,之后接連發(fā)布了8投慈、9承耿、10版本。另外伪煤,Chrome加袋、Opera、Safari等瀏覽器也紛紛出現(xiàn)抱既。
2015年5月职烧,HTTP2.0正式發(fā)表,多數(shù)瀏覽器已經(jīng)在2015年底支持了該協(xié)議防泵。
3.網(wǎng)絡基礎TCP/IP
3.1. TCP/IP的介紹
通常使用的網(wǎng)絡(包括互聯(lián)網(wǎng))是在TCP/IP協(xié)議族的基礎上運作的蚀之。而HTTP屬于它內(nèi)部的一個子集。
計算機與網(wǎng)絡設備要相互通信捷泞,雙方就必須基于相同的方法足删。比如,如何探測到通信目標锁右、由哪一邊先發(fā)起通 信失受、使用那種語言進行通信、怎樣結束通信等規(guī)則都需要事先確定咏瑟。不同的硬件拂到、操作系統(tǒng)之間的通信,所有的這一切都需要一種規(guī)則码泞。我們把這種規(guī)則稱為協(xié)議兄旬。協(xié)議中存在各種各樣的內(nèi)容,從電纜的規(guī)格到IP的選定方法余寥、尋找異地用戶的方法领铐、雙方建立通信的順序,以及Web頁面顯示需要處理的步驟等等劈狐。像這樣把與互聯(lián)網(wǎng)相關聯(lián)的協(xié)議集合起來總稱為TCP/IP罐孝。
3.2.TCP/IP的分層管理
按層次分為以下4層:應用層呐馆、傳輸層肥缔、網(wǎng)絡層和數(shù)據(jù)鏈路層。
應用層:決定了向用戶提供應用服務時通信的活動汹来。TCP/IP協(xié)議族內(nèi)預存了各類通用的應用服務续膳。比如 FTP(File Transfer Protocol改艇,文件傳輸協(xié)議)、DNS(Domain Name System坟岔,域名系統(tǒng))谒兄、HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議)。
傳輸層:傳輸層對上層應用層社付,提供處于網(wǎng)絡連接中的兩臺計算機之間的數(shù)據(jù)傳輸承疲。傳輸層有兩個不同的協(xié)議:TCP(Transmission Control Protocol,傳輸控制協(xié)議)和UDP(User Data Protocol鸥咖,用戶數(shù)據(jù)報協(xié)議)燕鸽。
網(wǎng)絡層:用來處理網(wǎng)絡上流動的數(shù)據(jù)包油宜。數(shù)據(jù)包是網(wǎng)絡傳輸?shù)淖钚?shù)據(jù)單位菜皂。該層規(guī)定了通過怎樣的路徑到達對方計算機。并把數(shù)據(jù)包傳送到對方乘凸。
鏈路層:用來處理連接網(wǎng)絡的硬件部分鸥拧。包括控制操作系統(tǒng)党远、硬件的設備驅(qū)動、NIC(Network Interface Card富弦,網(wǎng)絡適配器沟娱,即網(wǎng)卡),及光纖等物理課件部分腕柜。
3.3.TCP/IP通信傳輸流
利用TCP/IP協(xié)議族進行網(wǎng)絡通信時花沉,會通過分層順序與對方進行通信,發(fā)送端從應用層往下走媳握,接收到從鏈路層往上走碱屁。
3.4.與HTTP關系密切的協(xié)議:IP、TCP和DNS
IP(Internet Protocol)網(wǎng)際協(xié)議:位于網(wǎng)絡層蛾找,用于把各種數(shù)據(jù)包傳送給對方娩脾,而要保證數(shù)據(jù)確實傳送給對方,則需要滿足各類條件打毛。其中最重要的條件時IP地址和MAC地址柿赊,IP地址指明了節(jié)點被分配到的地址,MAC地址是指網(wǎng)卡所屬的固定地址幻枉。IP地址和MAC地址進行配對碰声。IP地址可變換,但MAC地址基本不會更改熬甫。IP間的通信依賴MAC地址胰挑。在網(wǎng)絡上,通信的雙方在同一局域網(wǎng)(LAN)內(nèi)的情況是很少的。通常是經(jīng)過多臺計算機和網(wǎng)絡設備中轉(zhuǎn)才能連接到對方瞻颂。而在進行中轉(zhuǎn)時豺谈,會利用下一站中轉(zhuǎn)設備MAC地址來搜索下一個中轉(zhuǎn)目標。這時贡这,會采用ARP協(xié)議(Address Resolution Protocol)茬末。ARP是一種用以解析地址的協(xié)議,根據(jù)通信方的IP地址就可以反查出對應的MAC地址盖矫。
TCP:位于傳輸層丽惭,提供可靠的字節(jié)流服務,所謂的字節(jié)流服務是指辈双,為了方便傳輸吐根,將大塊數(shù)據(jù)分割成以報文段為單位的數(shù)據(jù)包進行管理。而可靠的傳輸服務時指辐马,能夠把數(shù)據(jù)準確可靠的傳輸給對方拷橘。為了準確地將數(shù)據(jù)送達搭配目標處,TCP采用了三次握手策略喜爷。用TCP協(xié)議把數(shù)據(jù)包發(fā)送出去后冗疮,TCP不會對傳送后的情況置之不理,它一定會向?qū)Ψ酱_認是否成功送達檩帐。握手過程中使用了TCP的標志——SYN(synchrinize)和ACK(acknowledgement)术幔。
發(fā)送端首先發(fā)送一個帶SYN標志的數(shù)據(jù)包給對方。接收端收到后湃密,回傳一個帶有SYN/ACK標志的數(shù)據(jù)包以示傳達確認消息诅挑。最后,發(fā)送端再回傳一個帶ACK標志的數(shù)據(jù)包泛源,代表“握手”結束拔妥。若在握手過程中某個階段莫名中斷,TCP協(xié)議會再次以相同的順序發(fā)送相同的數(shù)據(jù)包达箍。
DNS:位于用用層没龙,提供域名到IP地址之間的解析服務。用戶通常使用主機名或域名來訪問對方的計算機缎玫,而不是直接通過IP地址訪問硬纤。因為與IP地址的一組純數(shù)字相比,用字母配合數(shù)字的表示形式來指定計算機名更符合人類的記憶習慣赃磨。但要讓計算機去理解名稱筝家,相對而言就變得困難了,因為計算機更擅長處理一長串數(shù)字邻辉。為了解決上述的問題溪王,DNS服務應運而生腮鞍。DNS協(xié)議提供域名查找IP地址,或逆向從UO地址反查域名的服務在扰。