計算機網絡知識
-
DNS
即域名系統。因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。
1、瀏覽器中輸入www.qq.com域名,操作系統會先檢查本地的hosts文件是否有這個網址映射關系,如果有,就先調用這個IP地址映射,完成域名解析。
2、如果hosts里沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網址映射關系,如果有,直接返回,完成域名解析。
3、如果兩者都沒有相應的網址映射關系,首先會找TCP/IP參數中設置的首選DNS服務器,在此我們叫它本地DNS服務器,此服務器收到查詢時,如果要查詢的域名,包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性。
4、如果要查詢的域名,不由本地DNS服務器區域解析,但該服務器已緩存了此網址映射關系,則調用這個IP地址映射,完成域名解析,此解析不具有權威性。
5、如果本地DNS服務器本地區域文件與緩存解析都失效,則根據本地DNS服務器的設置(是否設置轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至13臺根DNS,根DNS服務器收到請求后會判斷這個域名(.com)是誰來授權管理,并會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息后,將會聯系負責.com域的這臺服務器。這臺負責.com域的服務器收到請求后,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務器地址(qq.com)給本地DNS服務器。當本地DNS服務器收到這個地址后,就會找qq.com域服務器,重復上面的動作,進行查詢,直至找到www.qq.com主機。
6、如果用的是轉發模式,此DNS服務器就會把請求轉發至上一級DNS服務器,由上一級服務器進行解析,上一級服務器如果不能解析,或找根DNS或把轉請求轉至上上級,以此循環。不管是本地DNS服務器用是是轉發,還是根提示,最后都是把結果返回給本地DNS服務器,由此DNS服務器再返回給客戶機。
-
ARP
在同一個網絡(無特別說明,均指以太網絡)中進行通信的主機,必須要擁有目標主機的MAC地址才能夠正確地將數據發送給目標主機,那么如何知道目標主機的MAC地址呢?可以通過ARP協議。ARP協議就是用來獲取目標IP地址所對應的MAC地址的,也就是說,ARP協議可以動態地在三層IP地址和二層MAC地址之間建立一種映射關系。
ARP是一個網絡層的協議,這是出于它為網絡層的IP協議提供服務而考慮的。但實際上,由于ARP協議用以解析出IP地址(邏輯地址)所對應數據鏈路層中的地址(物理地址/硬件地址),所以把其劃分在數據鏈路層也是沒有問題的,這并沒有嚴格的定義。
-
RIP
路由選擇協議,:確定數據報在源與目的地之間采用的路徑
-
HTPP請求
HTTP(HyperText Transfer Protocol,超文本傳輸協議),即計算機通過網絡通信的規則。
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服務器向瀏覽器發送數據
以Content-Type應答頭信息所描述的格式發送用戶所請求的實際數據
7) Web服務器關閉TCP連接
一般情況下,一旦Web服務器向瀏覽器發送了請求數據,它就要關閉TCP連接,然后如果瀏覽器或者服務器在其頭信息加入了這行代碼
Connection:keep-alive
TCP連接在發送后將仍然保持打開狀態,于是,瀏覽器可以繼續通過相同的連接發送請求。
保持連接節省了為每個請求建立新連接所需的時間,還節約了網絡帶寬。
請求報文格式:請求方法URI協議/版本、 請求頭(Request Header)、 請求正文
GET/sample.jspHTTP/1.1
Accept:image/gif.image/jpeg,*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate
username=jinqiao&password=1234
響應報文格式:協議狀態版本代碼描述、響應頭(Response Header)、響應正文
- get方法與post方法對比
GET方法
GET方法是默認的HTTP請求方法,我們日常用GET方法來提交表單數據,然而用GET方法提交的表單數據只經過了簡單的編碼,同時它將作為URL的一部分向Web服務器發送,因此,如果使用GET方法來提交表單數據就存在著安全隱患上。例如
Http://127.0.0.1/login.jsp?Name=zhangsan&Age=30&Submit=%cc%E+%BD%BB
從上面的URL請求中,很容易就可以辯認出表單提交的內容。另外由于GET方法提交的數據是作為URL請求的一部分所以提交的數據量不能太大
POST方法
POST方法是GET方法的一個替代方法,它主要是向Web服務器提交表單數據,尤其是大批量的數據。POST方法克服了GET方法的一些缺點。通過POST方法提交表單數據時,數據不是作為URL請求的一部分而是作為標準數據傳送給Web服務器,這就克服了GET方法中的信息無法保密和數據量太小的缺點。因此,出于安全的考慮以及對用戶隱私的尊重,通常表單提交時采用POST方法。
-
cookie
HTTP Cookie(也叫Web cookie或者瀏覽器Cookie)是服務器發送到用戶瀏覽器并保存在瀏覽器上的一塊數據,它會在瀏覽器下一次發起請求時被攜帶并發送到服務器上。比較經典的,可以它用來確定兩次請求是否來自于同一個瀏覽器,從而能夠確認和保持用戶的登錄狀態。Cookie的使用使得基于無狀態的HTTP協議上記錄穩定的狀態信息成為了可能。
cookie的屬性
key-value:cookie通過key-value的方式存儲屬性名和值。
domain:規定了需要發送Cookie的主機名。如果沒有指定,默認為當前的文檔地址上的主機名(但是不包含子域名)。如果指定了Domain,則一般包含子域名。
path:Path指令表明需要發送Cookie的URL路徑。字符%x2F (即"/")用做文件夾分隔符,子文件夾也會被匹配到。
hostOnly:布爾型的值,true表示cookie只能匹配domain中指定好的請求路徑。反之則不。
httpOnly:HTTP-only類型的Cookie不能使用Javascript通過Document.cookie
屬性來訪問,從而能夠在一定程度上阻止跨域腳本攻擊(XSS)。
secure:布爾型的值,true表示cookie只在安全的情況下有效。一般是在https情況下。即在使用SLL和HTTPS協議向服務器發起請求時,才能確保Cookie被安全地發送到服務器。
expirationDate:指明cookie的過期的時間。
Max-Age:指明cookie的有效期。
session:布爾值,true表示cookie是session cookie。false的話表示持續的cookie且不過期。
storeId:代表存放cookie的id的字符串。
-
HTTP與HTTPS
HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。
https協議需要到ca申請證書,一般免費證書很少,需要交費。http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議http和https使用的是完全不同的連接方式用的端口也不一樣,前者是80,后者是443。
客戶端產生一個對稱的密鑰,通過server 的證書來交換密鑰. 一般意義上的握手過程.ii. 加下來所有的信息往來就都是加密的. 第三方即使截獲,也沒有任何意義.因為他沒有密鑰
-
HTTP狀態碼
-
HTTP請求方法method
- URL、URN與URI
URI:uniform resource identifier,統一資源標識符,用于唯一的標識一個資源。
URL:uniform resource locator,統一資源定位器,它是一種具體的URI,即URL可以用來標識一個資源,而且還指明了如何locate這個資源
URN:uniform resource name,統一資源命名,是通過名字來標識資源。
URI是以一種抽象的,高層次概念定義統一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI。