Web基礎:
1.1網絡基礎tcp/ip
計算機兩邊想要通信,雙方就要基於相同的方法。基於c/s機制,確定誰是客戶端,服務端。不同的硬件,操作系統之間的通信,所有的一切需要一種規則,我們就把這種規則稱爲協議。
協議中存在各種各樣的內容,像這樣把相關聯的協議集合起來總稱爲tcp/ip。
利用tcp/ip通信,發送方會從上往下走,發送到服務器端在從下網上走。
首先服務器方要先啓動,並根據請示提供相應服務:
1、打開一通信通道並告知本地主機,它願意在某一個公認地址上接收客戶請求。
2、在傳輸層把從應用層接受到的請求報文分割,
3、接收到重複服務請求,處理該請求併發送應答信號。
4、返回第二步,等待另一客戶請求
5、關閉服務器。
tcp協議:面向連接協議,可靠,穩定。通信前建立鏈路,結束後拆除鏈路。端口範圍:0-65535
udp協議:無連接協議,速度快。端口範圍:0-65535
IANA:
0-1023:永久的分配給固定的應用使用:
1024-41951:註冊端口,要求並不是特別嚴格,分配給程序註冊爲某應用使用。
套接字:
Socket:ipc的一種實現:允許位於不同主機(甚至同一主機)上,不同進程之間通信,實現數據交換。
tcp套接字:SOCK_STREAM
udp套接字:SOCK_DGRAM
裸套接字:SOCK_RAM
tcp協議的特性:
tcp位於傳輸層,提供可靠的字節流服務:
字節流服務:將大塊數據分割成以報文段爲單位的數據包進行管理。
可靠性傳輸:採用三次握手策略,當tcp把數據包傳送過去之後,會確認數據包是否到達。如果數據包莫名中斷,tcp協議會再次發送相同數據包。
套接字系統調用:
socket():創建一個套接字;
bind():綁定
listen():監聽
accept():接收請求
connect():請求連接建立
write():發送
read():接收
send(),rcv(),sendto(),recvfrom()
網頁基礎知識:
http:hyper text transfer protocol
Html:編程語言,超文本標記語言;
<html>
<head>
<title>TITLE</title>
</head>
<body>
<h1></h1>
<p>blabla <a href=”http://www.a.com/log.jpg”>blabla</a></p>
</body>
</html>
CSS:層疊樣式表
Js:javascript
URL和URI:
URL:(Uniform Resource Locator)統一資源定位符
URI:(Uniform Resource ldentifier)同一資源標識符
URI的格式:
scheme://user:[email protected]:80/html/index.html.uid=1#ch1
方案名 // 用戶名,密碼@主機名稱:端口/帶層次的文件路徑?查詢字段#片段標識符
http協議版本:
http/0.9:原型版本
http/1.0:
http/1.1:
http/2.0
1.2http請求模型:
http協議是客戶端發送請求,服務器端迴應。
一次完整的http請求;
1.建立請求
持久連接
非持久連接
2.接收請求:
接受來自網絡的請求報文中對某一個請求的過程:
併發響應模型(web I/O):
單進程I/O結構:啓動一個處理用戶請求,而且一次只處理1個,多個請求被串行響應:
多進程I/O結構:並行啓動多個進程,每個進程響應一個請求
複用I/O結構:一個進程響應多個請求:
多線程模型:一個進程生成多個線程,每個線程響應多個請求;
事件驅動
複用的多進程I/O結構:啓動多個(m)進程,每個進程響應n個請求;
3.處理了請求:對請求報文進行分析,並獲取請求的資源以及請求的方法相關信息
元數據:請求報文首部
<method><URL><VERSION>
Host:www.a.com 請求的主機名稱
Connection:
4.訪問資源:獲取請求報文中請求的資源
web服務器,既存放了web資源的服務器,負責向請求者提供對方請求的靜態資源,或動態運行後生成的資源,這些資源放在本地某個路徑下,此路徑稱爲DocRoot
/var/www/html/image/Log.jpg
web服務器資源路徑映射方式:
DocRoot
Alias
虛擬主機DocRoot
用戶家目錄DocRoot
5.創建響應報文
資源MIME類型:
顯示分類:
魔法分類:
協商分類:
重定向:
web服務器構建響應並非客戶端請求的資源,而是資源另外一個訪問路徑
6.發送響應報文
7.記錄日誌
http服務器程序:
httpd(apache)
Nginx
應用程序服務器:
IIS
Tomcat,jetty
httpd的特性:
高度模塊化:core+modules
DSO:dynamic shared o'bject
MPM:多線程處理模塊
Prefork:多進程模型,每個進程響應一個請求:
一個主進程,負責生成n個子進程,子進程也成爲工作進程,每個子進程處理一個用戶請求,即使沒有用戶請求,也會預先生成多個空閒進程,隨時等待請求到達,最大不會超過1024個。
Worker:多線程模型,每個線程響應一個請求;
一個主進程:生成多個子進程,每個子進程負責生成多個線程,每個線程響應一個請求;
m進程,n線程:m*n
Event:事件驅動模型,每個線程響應n個請求:(httpd-2.4)
一個主進程:生成n個子進程,每個子進程直接n個請求;
m*n
httpd的功能特性:
虛擬主機
Ip,port,FQDN
CGI:通用網關接口 實在動態頁面的技術。
反向代理
負載均衡
路徑別名
豐富的認證機制:basic,digest
支持第三方模塊