西雙版納網(wǎng)站建設開發(fā)公司seo百度站長工具
1.http 相關概念
HTTP是處于應用層的協(xié)議,使用TCP傳輸層協(xié)議進行可靠的傳送。因此,需要特別提醒的是,萬維網(wǎng)是基于因特網(wǎng)的一種廣泛因特網(wǎng)應用系統(tǒng),且萬維網(wǎng)采用的是HTTP(80/TCP)和 HTTPS(443/TCP)的傳輸協(xié)議,但因特網(wǎng)還有其他的網(wǎng)絡應用系統(tǒng)(如:FTP、SMTP等等)
2.HTTP 相關技術
?WEB開發(fā)語言
http: Hyper Text Transfer Protocol 應用層協(xié)議,默認端口: 80/tcp
WEB前端開發(fā)語言:
-
html
-
css
-
javascript
html
Hyper Text Markup Language 超文本標記語言,編程語言,主要負責實現(xiàn)頁面的結構
CSS
Cascading Style Sheet 層疊樣式表, 定義了如何顯示(裝扮) HTML 元素,比如:字體大小和顏色屬性等。樣式通常保存在外部的 .css 文件中,用于存放一些HTML文件的公共屬性,從而通過僅編輯一個簡單的 CSS 文檔,可以同時改變站點中所有頁面的布局和外觀。
js
javascript,實現(xiàn)網(wǎng)頁的動畫效果,但實屬于靜態(tài)資源
,Java和javascript的關系: 周杰和周杰倫的關系
MIME
MIME : Multipurpose Internet Mail Extensions 多用途互聯(lián)網(wǎng)郵件擴展
文件 /etc/mime.types ,來自于mailcap包
MIME格式:type/subtype 主要類型/次要類型、
URI(i) 和 URL uri
URI: Uniform Resource Identifier 統(tǒng)一資源標識,分為URL 和 URN
-
URN:Uniform Resource Naming,統(tǒng)一資源命名
-
URL:Uniform Resorce Locator,統(tǒng)一資源定位符,用于描述某服務器某特定資源位置
兩者區(qū)別:
-
URN如同一個人的名稱,而URL代表一個人的住址。換言之,URN定義某事物的身份,而URL提供查找該事物的方法。URN僅用于命名,而不指定地URL組成
?scheme:方案,訪問服務器以獲取資源時要使用哪種協(xié)議
user:用戶,某些方案訪問資源時需要的用戶名
password:密碼,用戶對應的密碼,中間用:分隔
Host:主機,資源宿主服務器的主機名或IP地址
port:端口,資源宿主服務器正在監(jiān)聽的端口號,很多方案有默認端口號
path:路徑,服務器資源的本地名,由一個/將其與前面的URL組件分隔
params:參數(shù),指定輸入的參數(shù),參數(shù)為名/值對,多個參數(shù),用;分隔
query:查詢,傳遞參數(shù)給程序,如數(shù)據(jù)庫,用?分隔,多個查詢用&分隔
frag:片段,一小片或一部分資源的名字,此組件在客戶端使用,用#分隔
HTTP版本協(xié)議
http/0.9
原型版本,功能簡陋,只有一個命令GET。GET /index.html ,服務器只能回應HTML格式字符串,不能回應別的格式(只能提供下載)
http/1.0
每個TCP連接只能發(fā)送一個請求,發(fā)送數(shù)據(jù)完畢,連接就關閉,如果還要請求其他資源,就必須再新建一個連接引入了POST命令和HEAD命令頭信息是 ASCII 碼,后面數(shù)據(jù)可為任何格式。(提供下載和上傳服務)
http/1.1
引入了持久連接,即TCP連接默認不關閉,可以被多個請求復用
HTTP 請求訪問的完整過程
-
建立連接
-
接收請求
-
處理請求
-
訪問資源
-
構建響應報文
-
發(fā)送響應報文
-
記錄日志
一次完整的http請求處理過程
1、建立連接:
接收或拒絕連接請求
2、接收請求:
接收客戶端請求報文中對某資源的一次請求的過程
Web訪問響應模型:
-
單進程I/O模型:啟動一個進程處理用戶請求,而且一次只處理一個,多個請求被串行響應
-
多進程I/O模型:并行啟動多個進程,每個進程響應一個連接請求
-
復用I/O結構:啟動一個進程,同時響應N個連接請求
-
復用的多進程I/O模型:啟動M個進程,每個進程響應N個連接請求,同時接收M*N個請求
3、處理請求:
服務器對請求報文進行解析,并獲取請求的資源及請求方法等相關信息,根據(jù)方法,資源,首部和可選的主體部分對請求進行處理
常用請求Method: GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS
4、訪問資源:
服務器獲取請求報文中請求的資源web服務器,即存放了web資源的服務器,負責向請求者提供對方請求的靜態(tài)資源,或動態(tài)運行后生成的資源
5、構建響應報文:
一旦Web服務器識別除了資源,就執(zhí)行請求方法中描述的動作,并返回響應報文。響應報文中 包含有響應狀態(tài)碼、響應首部,如果生成了響應主體的話,還包括響應主體
6、發(fā)送響應報文
Web服務器通過連接發(fā)送數(shù)據(jù)時也會面臨與接收數(shù)據(jù)一樣的問題。服務器可能有很多條到各個客戶端的連接,有些是空閑的,有些在向服務器發(fā)送數(shù)據(jù),還有一些在向客戶端回送響應數(shù)據(jù)。服務器要記錄連接的狀態(tài),還要特別注意對持久連接的處理。對非持久連接而言,服務器應該在發(fā)送了整條報文之后,關閉自己這一端的連接。對持久連接來說,連接可能仍保持打開狀態(tài),在這種情況下,服務器要正確地計算Content-Length首部,不然客戶端就無法知道響應什么時候結束
7、記錄日志
最后,當事務結束時,Web服務器會在日志文件中添加一個條目,來描述已執(zhí)行的事務
請求報文:
方法:
-
GET: 獲取資源 當前網(wǎng)絡請求中,絕大部分使用的是 GET 方
-
HEAD: 獲取報文首部,主要用于確認 URL 的有效性以及資源更新的日期時間等
-
POST: 傳輸實體主體 (比如傳輸 用戶名密碼)
-
PUT: 上傳文件(比如寫博客)
-
PATCH: 對資源進行部分修改
-
DELETE:刪除文件
-
OPTIONS:查詢支持的方法(查看服務端可以支持哪些方法)
-
CONNECT:要求在與代理服務器通信時建立隧道(類似加密)
-
TRACE:追蹤路徑
url:指明資源的具體位置
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
-
scheme
-
http 超文本傳輸協(xié)議
-
https 安全的http協(xié)議
-
ftp 文件傳輸協(xié)議
-
-
user:帳號
-
password:密碼
-
host:主機名 或 域名 或 ip地址
-
port: 服務器端口號
-
path:訪問資源的路徑,相當于組件路徑
-
params:參數(shù),但是這個不常用,指定一些參數(shù),譬如指定傳輸方式
-
qurey:查詢參數(shù)
-
frag:html資源片段,譬如html文檔過大的時候,frag定位到html的一部分
響應報文
狀態(tài)碼
http協(xié)議狀態(tài)碼分類
1xx:100-101 信息提示
2xx:200-206 成功
3xx:300-307 重定向
4xx:400-415 錯誤類信息,客戶端錯誤
5xx:500-505 錯誤類信息,服務器端錯誤
http協(xié)議常用的狀態(tài)碼
200: 成功,請求數(shù)據(jù)通過響應報文的entity-body部分發(fā)送;OK
301: 請求的URL指向的資源已經(jīng)被刪除;但在響應報文中通過首部Location指明了資源現(xiàn)在所處的新位置;Moved Permanently
302: 響應報文Location指明資源臨時新位置 Moved Temporarily
304: 客戶端發(fā)出了條件式請求,但服務器上的資源未曾發(fā)生改變,則通過響應此響應狀態(tài)碼通知客戶端;Not Modified
307: ?瀏覽器內(nèi)部重定向
401: 需要輸入賬號和密碼認證方能訪問資源;Unauthorized
403: 請求被禁止;Forbidden
404: 服務器無法找到客戶端請求的資源;Not Found
500: 服務器內(nèi)部錯誤;Internal Server Error,比如:cgi程序沒有執(zhí)行權限
502: 代理服務器從后端服務器收到了一條偽響應,如無法連接到網(wǎng)關;Bad Gateway
503: 服務不可用,臨時服務器維護或過載,服務器無法處理請求,比如:php服務停止,無法處理php程序
504: 網(wǎng)關超時
常見http 服務器程序
-
httpd apache,存在C10K(10K connections)問題
-
nginx 解決C10K問題lighttpd
-
IIS .asp 應用程序服務器
-
tomcat .jsp 應用程序服務器
-
jetty 開源的servlet容器,基于Java的web容器
-
Resin CAUCHO公司,支持servlets和jsp的引擎
-
webshpere:IBM公司
-
weblogic:BEA,Oracle
-
jboss:RedHat,IBM
-
oc4j:Oracle
apache介紹和特點
apache 功能:
-
提供http協(xié)議服務
-
多個虛擬主機:IP、Port、FQDN
-
CGI:Common Gateway Interface,通用網(wǎng)關接口,支持動態(tài)程序
-
反向代理
-
負載均衡
-
路徑別名
-
豐富的用戶認證機制:basic,digest
-
支持第三方模塊
apache特性:
-
高度模塊化:core + modules
-
DSO:Dynamic Shared Object 動態(tài)加載/卸載
-
MPM:multi-processing module 多路處理模塊
MPM 工作模式
prefork:
多進程I/O模型,每個進程響應一個請求,CentOS 7 httpd默認模型一個主進程:生成和回收n個子進程,創(chuàng)建套接字,不響應請求多個子進程:工作 work進程,每個子進程處理一個請求;系統(tǒng)初始時,預先生成多個空閑進程,等待請求
- ? ? ?優(yōu)點:穩(wěn)定
- ? ? ?缺點:慢,占用資源,不適用于高并發(fā)場景
worker :
是一種多進程和多線程混合的模型,有一個控制進程,啟動多個子進程,每個子進程里面包含固定的線程,使用線程程來處理請求,當線程不夠使用的時候會再啟動一個新的子進程,然后在進程里面再啟動線程處理請求,由于其使用了線程處理請求,因此可以承受更高的并發(fā)。
優(yōu)點:相比prefork 占用的內(nèi)存較少,可以同時處理更多的請求
缺點:使用keep-alive的長連接方式,某個線程會一直被占據(jù),即使沒有傳輸數(shù)據(jù),也需要一直等待到超時才會被釋放。
event:
事件驅(qū)動模型(worker模型的變種),CentOS8 默認模型 有專門的監(jiān)控線程來管理這些keep-alive類型的線程,當有真實請求時,將請求傳遞給服務線程,執(zhí)行完畢后,又允許釋放。這樣增強了高并發(fā)場景下的請求處理能力
優(yōu)點:單線程響應多請求,占據(jù)更少的內(nèi)存,高并發(fā)下表現(xiàn)更優(yōu)秀,會有一個專門的線程來管理keep-alive類型的線程,當有真實請求過來的時候,將請求傳遞給服務線程,執(zhí)行完畢后,又允許它釋放
缺點:沒有線程安全控制
?
httpd?相關文件
配置文件:
-
/etc/httpd/conf/httpd.conf 主配置文件
-
/etc/httpd/conf.d/*.conf 子配置文件
-
/etc/httpd/conf.d/conf.modules.d/ 模塊加載的配置文件
檢查配置語法:httpd -t 或 apache2 -t
服務單元文件:
-
/usr/lib/systemd/system/httpd.service
-
配置文件:/etc/sysconfig/httpd
服務控制和啟動
-
systemctl enable|disable httpd.service
-
systemctl {start|stop|restart|status|reload} httpd.service
-
apachectl start|stop|restart|configtest
-
service httpd start|stop|restart|configtest
站點網(wǎng)頁文檔根目錄:/var/www/html
模塊文件路徑:
-
/etc/httpd/modules
-
/usr/lib64/httpd/modules
主服務器程序文件:/usr/sbin/httpd
Cookie和session
cookie
Cookie 又稱為"小甜餅”。類型為"小型文本文件”,指某些網(wǎng)站為了辨別用戶身份而儲存在用戶本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過加密)。
Cookie基于HTTP協(xié)議,也叫Web Cookie或瀏覽器Cookie,是服務器發(fā)送到用戶瀏覽器并保存在客戶端本地的一小塊數(shù)據(jù),它會在瀏覽器下次向同一服務器再發(fā)起請求時被攜帶并發(fā)送到服務器上。通常,它用于告知服務端兩個請求是否來自同一瀏覽器,如保持用戶的登錄狀態(tài)。Cookie使基于無狀態(tài)的HTTP協(xié)議記錄穩(wěn)定的狀態(tài)信息成為了可能。
Cookie主要用于以下三個方面:
-
會話狀態(tài)管理(如用戶登錄狀態(tài)、購物車、游戲分數(shù)或其它需要記錄的信息)
-
個性化設置(如用戶自定義設置、主題等)
-
瀏覽器行為跟蹤(如跟蹤分析用戶行為等)
Session
cookie和session的相同和不同:
-
cookie通常是在服務器生成,但也可以在客戶端生成,session是在服務器端生成的
-
session 將數(shù)據(jù)信息保存在服務器端,可以是內(nèi)存,文件,數(shù)據(jù)庫等多種形式,cookie 將數(shù)據(jù)保存在客戶端的內(nèi)存或文件中
-
單個cookie保存的數(shù)據(jù)不能超過4K,每個站點cookie個數(shù)有限制,比如IE8為50個、Firefox為50個、Opera為30個;session存儲在服務器,沒有容量限制
-
cookie存放在用戶本地,可以被輕松訪問和修改,安全性不高;session存儲于服務器,比較安全
-
cookie有會話**cookie和持久cookie**,生命周期為瀏覽器會話期的會話cookie保存在緩存,關閉瀏覽器窗口就消失,持久cookie被保存在硬盤,知道超過設定的過期時間;隨著服務端session存儲壓力增大,會根據(jù)需要定期清理session數(shù)據(jù)
-
session中有眾多數(shù)據(jù),只將sessionID這一項可以通過cookie發(fā)送至客戶端進行保留,客戶端下次訪問時,在請求報文中的cookie會自動攜帶sessionID,從而和服務器上的的session進行關聯(lián)
cookie缺點:
1、使用cookie來傳遞信息,隨著cookie個數(shù)的增多和訪問量的增加,它占用的網(wǎng)絡帶寬也很大,試想假如cookie占用200字節(jié),如果一天的PV有幾個億,那么它要占用多少帶寬?
2、cookie并不安全,因為cookie是存放在客戶端的,所以這些cookie可以被訪問到,設置可以通過插件添加、修改cookie。所以從這個角度來說,我們要使用sesssion,session是將數(shù)據(jù)保存在服務端的,只是通過cookie傳遞一個sessionId而已,所以session更適合存儲用戶隱私和重要的數(shù)據(jù)
session 缺點:
1、不容易在多臺服務器之間共享,可以使用session綁定,session復制,session共享解決
2、session存放在服務器中,所以session如果太多會非常消耗服務器的性能cookie和session各有優(yōu)缺點,在大型互聯(lián)網(wǎng)系統(tǒng)中,單獨使用cookie和session都是不可行的
5 Web相關工具
格式:
wget [OPTION]... [URL]...
常用選項:
-q ? ? ? ? ? ? ? 靜默模式
-c ? ? ? ? ? ? ? 斷點續(xù)傳
-P /path ? ? ? ? 保存在指定目錄
-O filename 保 ? 存為指定文件名,filename 為 - 時,發(fā)送至標準輸出
--limit-rate= ? ?指定傳輸速率,單位K,M等
curl
curl是基于URL語法在命令行方式下工作的文件傳輸工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等協(xié)議。
格式:
curl [options] [URL...]
-A/--user-agent <string> 設置用戶代理發(fā)送給服務器
-e/--referer <URL> 來源網(wǎng)址
--cacert <file> CA證書 (SSL)
-k/--insecure ??允許忽略證書進行 SSL 連接
--compressed 要求返回是壓縮的格式
-H/--header "key:value” 自定義首部字段傳遞給服務器
-i 顯示頁面內(nèi)容,包括報文首部信息
-I/--head 只顯示響應報文首部信息
-D/--dump-header <file>將url的header信息存放在指定文件中
--basic 使用HTTP基本認證
-u/--user <user[:password]>設置服務器的用戶和密碼
-L ??如果有3xx響應碼,重新發(fā)請求到新位置
-O 使用URL中默認的文件名保存文件到本地
-o <file> 將網(wǎng)絡文件保存為指定的文件中
--limit-rate <rate> 設置傳輸速度
-0/--http1.0 數(shù)字0,使用HTTP 1.0
-v/--verbose 更詳細
-C 選項可對文件使用斷點續(xù)傳功能
-c/--cookie-jar <file name> 將url中cookie存放在指定文件中
-x/--proxy <proxyhost[:port]> 指定代理服務器地址
-X/--request <command> 向服務器發(fā)送指定請求方法
-U/--proxy-user <user:password> 代理服務器用戶和密碼
-T 選項可將指定的本地文件上傳到FTP服務器上
--data/-d 方式指定使用POST方式傳遞數(shù)據(jù)
-s --silent ??Silent mode
-b name=data 從服務器響應set-cookie得到值,返回給服務器
-w <format> 顯示相應的指定的報文信息,如:%{http_code},%{remote_ip}等
-m, --max-time <time> 允許最大傳輸時間
例子:
curl -I http://www.163.com
?
冒充瀏覽器
curl www.163.com -vA chrome
?