這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
15.蛤蟆筆記go語言——Web編程概念
Go目前已經擁有了成熟的Http處理包,這使得編寫能做任何事情的動態Web程式易如反掌。
Web原理
瀏覽器本身是一個用戶端,當你輸入URL的時候,首先瀏覽器會去請求DNS伺服器,通過DNS擷取相應的網域名稱對應的IP,然後通過IP地址找到IP對應的伺服器後,要求建立TCP串連,等瀏覽器發送完HTTP Request(請求)包後,伺服器接收到請求包之後才開始處理請求包,伺服器調用自身服務,返回HTTP Response(響應)包;用戶端收到來自伺服器的響應後開始渲染這個Response包裡的主體(body),等收到全部的內容隨後斷開與該伺服器之間的TCP串連。
概念
URL(Uniform Resource Locator)是“統一資源定位器”的英文縮寫,用於描述一個網路上的資源, 基本格式如下
schema://host[:port#]/path/.../[?query-string][#anchor]
scheme 指定低層使用的協議(例如:http,https, ftp)
host HTTP伺服器的IP地址或者網域名稱
port# HTTP伺服器的預設連接埠是80,這種情況下連接埠號碼可以省略。如果使用了別的連接埠,必須指 明,例如http://www.cnblogs.com:8080/
path 訪問資源的路徑
query-string 發送給http伺服器的資料
anchor 錨
HTTP協議詳解
HTTP協議是Web工作的核心,所以要瞭解清楚Web的工作方式就需要詳細的瞭解清楚HTTP是怎麼樣工作的。
HTTP是一種讓Web伺服器與瀏覽器(用戶端)通過Internet發送與接收資料的協議,它建立在TCP協議之上,一般採用TCP的80連接埠。它是一個請求、響應協議--用戶端發出一個請求,伺服器響應這個請求。在HTTP中,用戶端總是通過建立一個串連與發送一個HTTP請求來發起一個事務。伺服器不能主動去與用戶端聯絡,也不能給用戶端發出一個回調串連。用戶端與伺服器端都可以提前中斷一個串連。例如,當瀏覽器下載一個檔案時,你可以通過點擊“停止”鍵來中斷檔案的下載,關閉與伺服器的HTTP串連。
HTTP協議是無狀態的,同一個用戶端的這次請求和上次請求是沒有對應關係,對HTTP伺服器來說,它並不知道這兩個請求是否來自同一個用戶端。為瞭解決這個問題, Web程式引入了Cookie機制來維護串連的可持續狀態。
HTTP協議是建立在TCP協議之上的,因此TCP攻擊一樣會影響HTTP的通訊,例如比較常見的一些攻擊:SYN Flood是當前最流行的DoS(拒絕服務的攻擊)與DdoS(分散式阻斷服務攻擊)的方式之一,這是一種利用TCP協議缺陷,發送大量偽造的TCP串連請求,從而使得被攻擊方資源耗盡(CPU滿負荷或記憶體不足)的攻擊方式。
HTTP協議定義了很多與伺服器互動的要求方法,最基本的有4種,分別是GET,POST,PUT,DELETE. 一個URL地址用於描述一個網路上的資源,而HTTP中的GET, POST, PUT, DELETE就對應著對這個資源的查,改,增,刪4個操作。
HTTP請求包
Request包的結構, Request包分為3部分,第一部分叫Requestline(請求行), 第二部分叫Request header(要求標頭),第三部分是body(主體)。
HTTP響應包
Response包中的第一行叫做狀態行,由HTTP協議版本號碼, 狀態代碼, 狀態訊息 三部分組成。