圖解HTTP
1.HTTP:超文本傳輸協議
2.TCP/IP:互聯網相關協議的集合。
tcp/ip分層:應用層,傳輸層,網絡層,數據鏈路層。
應用層(HTTP協議):向用戶提供應用服務時通信的活動。
例如:FTP:文本傳輸協議;DNS:域名系統。
傳輸層(TCP協議):對上層應用層,提供處于網絡連接中的兩臺計算機之間的數據傳輸。
例如:TCP:傳輸控制協議;UDP:用戶數據報協議。
網絡層(IP【網際協議】協議):處理網絡上流動的數據包。數據包是網絡傳輸的最小單位。
鏈路層:用來處理連接網絡的硬件部分。
例如:控制操作系統,硬件的設備驅動,NIC(網卡)及光纖。
3.IP地址和ip協議
ip 協議:把各種數據包傳送給對方。
ip 地址:節點唄分配到的地址,MAC:網卡所屬的固定地址。MAC地址基本不會變。
使用ARP協議憑借MAC地址進行通信。
ARP協議:解析地址的協議,根據通信的IP地址就可以反查出對應的MAC地址。
TCP協議三次握手策略:flag-SYN-ACK。
發送端首先發送一個帶有SYN標識的數據包給對方。接收端收到后,回傳一個帶有SYN/ACK標識的數據包以示傳達確認信息。最后,發送端在回傳一個帶有ACK標志的數據包,握手結束。
4. URI和URL
URI:統一資源標識符;URL:統一資源定位符.
URI用字符串標識某一互聯網資源,而URL表示資源的地點(互聯網上所處的位置。)可見URL是URI的子集。
URI語法示例:
ftp://ftp.is.co.za/rfc/rfc1808.txt
http://www.ietf.org.rfc/rfc/rfc2396.txt
ldap://[2001:db8::7]/c=GB?objectClass?one
URI格式:
表示指定的URI,要使用涵蓋全部必要的絕對URI,絕對URL以及相對URL。相對URL:是從瀏覽器中基本URI處指定的URL。
絕對URI的格式如下表格:
http | ://user:pass | @www.example.jp | :80 | /dir/index.html? | uid=1 | #ch1 |
---|---|---|---|---|---|---|
協議方案名 | 登錄信息(認證) | 服務器地址 | 服務器端口號 | 帶層次的文件路徑 | 查詢字符串 | 片段標識符 |
5.http協議用于客戶端和服務器端的通信
http協議規定,請求從客戶端發出,最后服務器響應該請求并返回。換句話說,肯定是先從客戶端開始建立通信的,服務器端在沒有接受到請求之前不會發送響應的。
1.請求報文是從請求方法,請求URI,協議版本,可選的請求首部字段和內容實體構成。
GET /index.htm HTTP/1.1
Host:hackr.jp
請求報文的構成如下表格
方法 | URI | 協議版本 | 請求首部字段 | 內容實體 |
---|---|---|---|---|
POST | /from/entry | HTTP/1.1 | Host:hackr.jp Connection:keep-alive Content-Type:application/x-www-from-urlencoded | name=ueno&age=17 |
響應報文由協議版本,狀態碼(表示請成功或者失敗的數字代碼)、用以解釋狀態碼的原因短語,可選的響應首部字段以及實體主題構成。
響應報文的構成如下表格
協議版本 | 狀態碼 | 狀態碼的原因短語 | 響應首部字段 | 實體 |
---|---|---|---|---|
HTTP/1.1 | 200 | OK | Date :tue,10 Jul 2012 06:50:15 GMT Content-Length:362 Content-Type:text/html | <html> |
6.http是不保存狀態的協議
HTTP是一種不保存狀態,即無狀態(stateless)協議。HTTP協議自身不對請求和響應之間的通信狀態進行保存。也就是說HTTP這個級別,協議對于發送的請求或者響應都不做持久化的處理。(若是想要保存狀態,可以引入Cookie技術。)
7.請求URI定位資源
當客戶端請求訪問資源而發送請求時,URI需要將作為請求報文中的請求URI包含在內。
請求URI的方式:
~URI為完整的請求URI GET http://hackr.jp/index.htm HTTP/1.1
~在首部字段Host中寫明網絡域名或者IP地址 GET /inedx.htm HTTP/1.1 Host :hackr.jp
除此之外,如果不是訪問特定資源而是對服務器本身發起請求,可以用一個*來代替請求URI. OPTIONS * HTTP/1.1