42,用戶訪問網站的基本流程?php
[x] 第一步:客戶端用戶從瀏覽器裏輸入www.baidu.com網站地址,回車後,系統首先會查找系統本地的DNS緩存及hosts文件信息,查找是否存在www.baidu.com域名對應的IP解析記錄,若是有就直接獲取IP地址,而後去訪問這個IP地址對應域名www.baidu.com的服務器,通常第一次請求時,DNS緩存是沒有解析記錄的,而hosts多在內部臨時測試時使用。css
[x] 第二步:若是客戶端本地hosts及DNS緩存及hosts文件沒有www.baidu.com域名對應的解析記錄,那麼,系統會把瀏覽器的解析請求發送給客戶端本地設置的DNS服務器地址(一般稱此DNS爲LDNS,即Local DNS)解析,若是LDNS服務器的本地緩存有對應的解析記錄就會直接返回IP地址給客戶端,若是沒有,則LDNS會負責繼續請求其餘的DNS服務器。html
[x] 第三步:LDNS會從DNS系統的(.)開始請求www.baidu.com域名的解析,針對各個層級的DNS服務器系統進行一系列的查找,最終會查找到baidu.com域名對應的受權DNS服務器,而這個受權DNS服務器正是企業購買域名時用於管理域名解析的服務器,這個受權服務器會有www.baidu.com對應的IP解析記錄,若是此時沒有,就表示企業的域名管理人員沒有爲www.baidu.com域名作解析設置,即網站還沒架設好。前端
[x] 第四步:baidu.com域名的受權DNS服務器會把www.baidu.com對應的最終IP解析記錄發給LDNS。java
[x] 第五步:LDNS把收到的來自受權DNS服務器www.baidu.com對應的IP解析記錄發給客戶端瀏覽器,而且再LDNS把本地域名和IP的對應解析緩存起來,以便下一次更快的返回相同解析請求的記錄,這些緩存記錄在指定的時間(DNS TTL值控制)內不會過時。web
[x] 第六步:客戶端瀏覽器獲取到了www.etiantian.org的對應IP地址,接下來,瀏覽器會請求得到的IP地址對應的網站服務器,網站服務器接收到客戶端的請求並響應處理(此處的處理多是數百臺集羣的服務器系統,也多是一臺雲主機),將客戶請求的內容返回給客戶端瀏覽器,至此,一次訪問瀏覽網頁的完整過程就完成了。sql
43,DNS域名解析流程(DNS遞歸查詢,DNS迭代查詢)?數據庫
遞歸查詢
遞歸查詢是一種DNS 服務器的查詢模式,在該模式下DNS 服務器接收到客戶機請求,必須使用一個準確的查詢結果回覆客戶機。若是DNS 服務器本地沒有存儲查詢DNS 信息,那麼該服務器會詢問其餘服務器,並將返回的查詢結果提交給客戶機。
迭代查詢
DNS 服務器另一種查詢方式爲迭代查詢,DNS 服務器會向客戶機提供其餘可以解析查詢請求的DNS 服務器地址,當客戶機發送查詢請求時,DNS 服務器並不直接回複查詢結果,而是告訴客戶機另外一臺DNS 服務器地址,客戶機再向這臺DNS 服務器提交請求,依次循環直到返回查詢的結果
爲止。後端
44,http和https的默認端口號?瀏覽器
http:80
https:443
45,返回碼:200,301,302,304,403,404,500,502,503,504的含義?
200~ok: 服務器成功返回網頁,標準的成功返回狀態碼
301-Moved Permanently:永久跳轉,全部的請求被跳轉到新設定的位置
403-Forbidden:禁止訪問,這個請求是合法的,但服務器端拒絕此請求,通常爲權限配置不當致使
404-Not Found :服務器找不到請求的指定頁面,多是請求了不存在的資源
500-Internal Server Error:內部服務器錯誤,因某些緣由不能完成客戶的請求
502-Bad Gateway: 壞的網關,通常爲代理服務器請求後端服務時,後端服務不可用或沒有完成響應網關服務器。
503-Service Unavailable: 服務當前不可用,可能時服務器超載或宕機。
504-Gateway Timeout:網關超時,網關代理服務器向後端請求服務時,後端服務器沒有在特定時間內完成處理請求,多是服務器過載形成
46,URL由什麼組成?所謂請求是什麼?uri又是什麼?
URL的格式由下列三部分組成:
根據HTTP標準,HTTP請求可使用多種請求方法。
HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
GET 請求指定的頁面信息,並返回實體主體。 HEAD 相似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭 POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會致使新的資源的創建和/或已有資源的修改。 PUT 從客戶端向服務器傳送的數據取代指定的文檔的內容。 DELETE 請求服務器刪除指定的頁面。 CONNECT HTTP/1.1協議中預留給可以將鏈接改成管道方式的代理服務器。 OPTIONS 容許客戶端查看服務器的性能。 TRACE 回顯服務器收到的請求,主要用於測試或診斷。
客戶端發送一個HTTP請求(request)到服務器的請求消息包括如下格式:
請求行(request line)、請求頭部(header)、空行和請求數據四個部分
請求方法 空格 URL 空格 協議版本 回車符 換行符 請求行
頭部字段名 : 值 回車符 換行符
…… 請求頭部
頭部字段名 : 值 回車符 換行符
回車符 換行符
…………………………………………………………………… 請求數據
GET /562f25980001b1b106000338.jpg HTTP/1.1 Host img.mukewang.com User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 Accept image/webp,image/*,*/*;q=0.8 Referer http://www.imooc.com/ Accept-Encoding gzip, deflate, sdch Accept-Language zh-CN,zh;q=0.8
GET說明請求類型爲GET,[/562f25980001b1b106000338.jpg]爲要訪問的資源,該行的最後一部分說明使用的是HTTP1.1版本。
從第二行起爲請求頭部,HOST將指出請求的目的地.User-Agent,服務器端和客戶端腳本都能訪問它,它是瀏覽器類型檢測邏輯的重要基礎.該信息由你的瀏覽器來定義,而且在每一個請求中自動發送等等
即便第四部分的請求數據爲空,也必須有空行。
這個例子的請求數據爲空。
POST / HTTP1.1 Host:www.wrox.com User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Content-Type:application/x-www-form-urlencoded Content-Length:40 Connection: Keep-Alive name=Professional%20Ajax&publisher=Wiley
第一部分:請求行,第一行明瞭是post請求,以及http1.1版本。
第二部分:請求頭部,第二行至第六行。
第三部分:空行,第七行的空行。
第四部分:請求數據,第八行。
Web上可用的每種資源如HTML文檔、圖像、視頻片斷、程序等都是一個來URI來定位的
URI通常由三部組成:
①訪問資源的命名機制
②存放資源的主機名
③資源自身的名稱,由路徑表示,着重強調於資源。
URL是Internet上用來描述信息資源的字符串,主要用在各類WWW客戶程序和服務器程序上,特別是著名的Mosaic。
採用URL能夠用一種統一的格式來描述各類信息資源,包括文件、服務器的地址和目錄等。URL通常由三部組成:
①協議(或稱爲服務方式)
②存有該資源的主機IP地址(有時也包括端口號)
③主機資源的具體地址。如目錄和文件名等
URI是以一種抽象的,高層次概念定義統一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI。籠統地說,每一個 URL 都是 URI,但不必定每一個 URI 都是 URL。這是由於 URI 還包括一個子類,即統一資源名稱 (URN),它命名資源但不指定如何定位資源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。
在Java的URI中,一個URI實例能夠表明絕對的,也能夠是相對的,只要它符合URI的語法規則。而URL類則不只符合語義,還包含了定位該資源的信息,所以它不能是相對的。
在Java類庫中,URI類不包含任何訪問資源的方法,它惟一的做用就是解析。
相反的是,URL類能夠打開一個到達資源的流。
47,http協議裏GET和POST請求的區別?
GET在瀏覽器回退時是無害的,而POST會再次提交請求。
GET產生的URL地址能夠被Bookmark,而POST不能夠。
GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。
GET請求只能進行url編碼,而POST支持多種編碼方式。
GET請求參數會被完整保留在瀏覽器歷史記錄裏,而POST中的參數不會被保留。
GET請求在URL中傳送的參數是有長度限制的,而POST麼有。
對參數的數據類型,GET只接受ASCII字符,而POST沒有限制。
GET比POST更不安全,由於參數直接暴露在URL上,因此不能用來傳遞敏感信息。
GET參數經過URL傳遞,POST放在Request body中。
對於GET方式的請求,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據);
而對於POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。也就是說一般GET發送一個TCP數據包,而POST會發送兩次,但並不絕對,有的瀏覽器就只發送一次。
48,什麼是靜態網頁,什麼是動態網頁?
在網站設計中,純粹HTML格式的網頁(能夠包含圖片,視頻,JS(前端功能實現),CSS(樣式)等)一般被稱爲「靜態網頁」,早期的網站大多都是靜態的。靜態網頁是相對於動態網頁而言的,是指沒有後臺數據庫,不含程序(如php,jsp,asp)和可交互的網頁。
所謂的動態網頁是與靜態網頁相對而言的,也就是說,動態網頁的URL後綴不是.htm,.html,.shtml,.xml,.js,.css等靜態網頁的常見後綴擴展名形式,而是以.asp,.aspx,.php,.js,.do,.cgi等形式做爲後綴的,而且通常在動態網頁網址中會有標誌性的符號--「?,&」,此外,在大多數狀況下後端都須要有數據庫支持等。
49,僞靜態網頁的本質是什麼?
1.靜態頁面
優勢:相對於其餘兩種頁面(動態頁面和僞靜態頁面),速度最快,並且不須要從數據庫裏面提取數據,速度快的同時,也不會對服務器產生壓力。
缺點:因爲數據都是存儲在HTML裏面,因此致使文件很是大。而且最嚴重的問題是,更改源代碼必須所有更改,而不能改一個地方,全站靜態頁面就自動更改了。若是是大型網站有較多的數據,那會佔用大量的服務器空間,每次添加內容都會生成新的HTML頁面。若是不是專業人士維護比較麻煩。
2.動態頁面
優勢:空間使用量很是小,通常幾萬條數據的網站,使用動態頁面,可能只有幾M的文件大小,而使用靜態頁面少則十幾M,多則幾十M甚至更多。由於數據庫是從數據庫裏面調出來的,若是須要修改某些值,直接更改數據庫,那麼全部的動態網頁,就會自動更新了。這一點相比靜態頁面優勢就顯而易見了。
缺點:用戶訪問速度較慢,爲何會訪問動態頁面較慢呢?這個問題要從動態頁面的訪問機制提及了,其實咱們的服務器上面有一個解釋引擎,當用戶訪問的時候,這個解釋引擎就會把動態頁面翻譯爲靜態頁面,這樣你們就可以在瀏覽器裏面查看源碼了。而這個源碼就是解釋引擎翻譯以後的源碼。除訪問速度較慢之外,動態頁面的數據是從數據庫裏面調用過來的若是訪問的人數較多,數據庫的壓力會很是大。不過如今的動態程序多數都使用了緩存技術。可是整體來說,動態頁面對於服務器的壓力比較大一些。同時動態頁面的網站通常對於服務器的要求比較高一些,同時訪問的人越多也會形成服務器的壓力越大。
3.僞靜態頁面
僞靜態頁面定義:「假」靜態頁面,實質上是動態頁面。
優勢:相比靜態頁面而言,並無速度上的明顯提高,由於是「假」靜態頁面,其實仍是一個動態頁面,也是一樣須要翻譯爲靜態頁面的。最大的好處就是讓搜索引擎(Search Engine)把本身的網頁當作靜態頁面來處理。
缺點:顧名思義,「僞靜態」就是「假靜態」,搜索引擎不會把他當作靜態頁面來處理,這只是咱們靠經驗考邏輯去分析的,並不必定準確。或許搜索引擎直接把它認爲是動態頁面。
簡單總結:
靜態頁面訪問最快;維護較爲麻煩。
50,前端語言的種類,後端語言的種類
前端:html css js 等
後端:java php