16、局域網LAN(local area network) 8
16、局域網LAN(local area network) 8
1、網絡介紹:
vpn虛擬的網絡
(1)計算機網絡:把各種網絡設備,通過某種媒介連接起來,通過某種規則網絡規則進行通信。
把網絡設備關聯起來,通過某種網絡規則。
- 資源共享的優點特點:
數據和應用程序,資源共享,網絡存儲,備份設備。
(3)常見網絡物理組件:交換機、路由器、RJ-45連接器、網絡接口卡、pc機。
2、網絡應用程序
Web瀏覽器(Chrome,IE,Firefox等)
及時消息:(QQ,微信,釘釘)
電子郵件(Outlook,foxmail等)
協作(視頻會議,VNC,Netmeeting,webex)
Web網絡服務(apache,nginx,IIS)
文件網絡服務(ftp,nfs(Unix下),Samba)
數據庫服務(MySQL,MariaDB,mongodb)
中間件服務(Tomcat,Jboss)
安全服務(netfilter)
3、用戶應用程序對網絡的影響
批處理應用程序
ftp、TFTP、庫存更新
無需人工交互
帶寬很重要,但非關鍵性因素
交互式應用程序
庫存查詢、數據更新
人機交互
因為用戶需等待響應,所以響應時間很重要,但并非關鍵性因素,除非要等待很長時間
實時應用程序
VoIP、視頻
人與人的交互
端到端的延時至關重要
4、網絡的特征
速度
成本
安全性
可用性
可拓展性
可靠性
拓撲
5、帶寬
單位不一樣:帶寬100M位: ????下載10M是字節:
對應的是八個位。
下載速度較慢的可能是下載的資源的服務器較慢。
6、物理拓撲分類
總線拓撲:有線電視,兩端50Ω的電阻。
環狀拓撲:
星型:教室用的。
網狀拓撲:成本較高。關鍵的業務。避免單點失敗。
邏輯拓撲:數據流動的方式,物理上是星型,傳輸數據是環狀。描述了信息在網絡中的流動的方式。Msau
邏輯和物理的并不同一。
7、主機到主機通信
舊模型
專有產品
由一個廠商控制應用程序和嵌入的軟件
基于標準的模型(現在是基于標準的)
多廠商軟件
分層方法
8、網絡模型分層
七層模型:
ISO國際標準化組織。推出OSI標準
應用層
表示層
會話層
傳輸層
網絡層
數據鏈層
物理層
特點:降低了復雜性、標準化接口、簡化模塊化設計、確保技術的互操作性、加快發展速度、簡化教學
9、OSI模型的七層結構
(1)物理層:物理連接的問題,bit(位)概念,二進制。
(2)數據鏈路層:訪問介質,定義如何格式化數據以便進行運輸以及如何控制對網絡的控制。frame幀,檢查錯誤的功能。物理地址MAC地址。(與或非:)
(3)網絡層:數據傳輸,邏輯地址,路由數據包,選擇最佳的路徑。
(4)傳輸層:數據可靠傳輸,檢查錯誤的功能,
(5)會話層:建立和管理、終止會話。
(6)表示層:數據表示,確保接受系統可以讀出該數據,ASCII是7位。
(7)應用層:為應用程序進程,提供身份驗證,網絡過程訪問應用層。
下層都是為上次提供服務的。
10、數據封裝
數據從上層到下層層層打包(應用層到物理層),HDR=報頭
12、數據解封
從下層到上層解包(從物理層到應用層),有地址,表示上層是誰。下層帶有上層服務的標記。
14、PDU
PDU:protocol Data Unit,協議數據單元是指對等層次之間傳遞的數據單位。
物理層的PDU是數據位bit
數據連層的PDU是數據幀frame
網絡層的PDU是數據包packet
傳輸層的PDU是數據段segment
其他更高層次的PDU是消息message
mtu表示幀frame的大小。
15、三種通訊模式
廣播:發送的數據的是所有用戶設備
組播(多播):部分特定的計算機
單播:一對一的,接受數據的是一臺主機,但是別的主機也會聽到此消息。
16、局域網LAN(local area network)
LAN的組成:
Computers:pcs、servers
Interconnections:nics、media
Network ?devices:hubs、switches、routers
Protocols:Ethern、ip、arp、dhcp
17、網絡線纜和接口
Twisted—pair:10baset ??Unshielded (UTP) ?????Shielded (ST) 教室用的網線等
Coaxial: 10base2,10base5 ??thinet、thicknet ??以前電視機利用的等
Fiber–optic:光纖
網絡線纜和接口:UTP 非屏蔽 ?????STP屏蔽 ?加一層金屬薄膜
10baset ??100米傳輸距離。雙絞線。
傳輸距離較大利用中繼器:
UTP:T568B標準。
(ethtool eth0)查看網絡傳輸速度。
單工(一個方向傳輸)
半雙工(輪流雙向傳輸)half
全雙工:同時雙向傳遞。Full
UTP直通線和交叉線:10M以下的利用的都是12/36線。 ?12發送數據,36接收數據。
計算機和交換機是直連的,交換機上面做了交叉,不需要網線上做交叉了。
企業的路由器類似交換機的功能。Tx ??rx
以太網:DIX
802.3ae國際標準。
BI=雙向數據 ??RX=接收數據receive data ?TX=傳輸數據。TRansmit data
1000BASE-T GBICGBIC是Giga Bitrate Interface Converter的縮寫,是將千兆位電信號轉換為光信號的接口器。
19、Ethernet frame結構
目標地址,原地址。46-1500,之間mtu。Ipx/spx ?novell ?netware
tcp/ip
II ?代:
以太網最大幀1526,最小72. ???1514是去掉頭和尾部。
ethtool ?eth2 ?查看網絡情況。
20、數據鏈路層
17、Mac地址
48位組成。前24bits生產廠家的編號,后面24bits是廠家的編號,世界唯一。
18、沖突檢測的載波幀聽多路訪問csma/cd
19、hub集線器
Hub:多端口中繼器
Hub并不記憶該信息包是由哪個MAC地址發出,哪個MAC地址在hub的哪個端口。
Hub特點:
共享帶寬
半雙工
沖突域:一個設備發送數據,另一個設備也同時發,發生了沖突,同一個沖突域。
廣播域:當一個設備發廣播,另一個主機設備收到了,兩個設備在一個廣播域中。
基于廣播域的,泛紅。
集線器hub在物理層。
網橋和交換機在數據鏈層。
20、以太網橋
交換式以太網的優勢
拓展了網絡帶寬
隔斷了沖突域,提高了效率,使網絡沖突被現在在最先的范圍內
交換機作為更加智能的交換設備,能夠提供更多用戶所要求的功能:優先級,虛擬網、遠程檢測。
學習的是學習的源地址,轉發的是目標地址。
交換機不能隔斷廣播。
改變方法就是路由器。隔斷廣播域的作用,交換器做不到。
ARP基于廣播機制的。
以太網橋的工作原理:
以太網橋監聽數據幀中源MAC地址,學習MAC,建立MAC表
對于未知MAC地址,網橋將轉發到除接受該幀的端口之外的所有端口
當網橋接收到一個數據幀時候,如果該幀的目的位于接收端口所在網段上,他就過濾掉該數據幀,如果目的的MAC地址在位于另外一個端口,網橋就將該幀轉發到該端口。
當網橋接收到廣播幀時候,他會立即轉發到除接收端口之外的所有其他端口。
21、hub和交換機
集線器屬于OSI的第一層物理層設備,而網橋屬于OSI的第二層數據鏈路層設備
從工作方式來看,集線器就是一種廣播模式,所有端口在一個沖突域中,網橋的可以通過端口格力沖突。
Hub是所有共享貢獻和共享號帶寬,網橋每個端口占用一個帶寬。
22、路由器
Rzp協議:選擇路由組少的。
Dspe協議:選擇合適的。
路由表。Route -u查看路由信息。
廣域網設備
分隔廣播域
選擇路由表中到大目標最好的路徑
維護和檢查路由信息
路由:把一個數據包從一個設備發送到不同的網絡里的另一個設備上去,這些工作依靠理由器來完成。路由器只關心網絡中的狀態和決定網絡中最佳路徑,路由的實現依靠路由中的路由表來完成。
23、VLAN技術
交換機的隔斷廣播域功能。
安全
靈活管理
不能實現VLAN域VLAN之間的通信的,通訊的話還是要采用路由。
VLAN = 廣播域=邏輯網絡(subnet)
Trank協議:802.1Q
23、分層網絡架構
核心層 core layer: ??企業級應用快速轉發。
分布層:distribution layer,廣播域,路由,安全,遠程接入,訪問層匯聚。
訪問層accesslayer:終端接入
24、TCP/IP協議棧
Transmission Control Protocol
/Internet Protocol
傳輸控制協議/因特網互聯協議u
TCP/IP是一個Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等許多協議u
最早發源于美國國防部(縮寫為DoD)的因特網的前身ARPA網項目,1983年1月1日,TCP/IP取代了舊的網絡控制協議NCP,成為今天的互聯網和局域網的基石和標準,由互聯網工程任務組負責維護u
共定義了四層u
和ISO參考模型的分層有對應
應用層
傳輸層
Internet層
網絡訪問層
WLAN:
WiFi
wapi中國
對應關系::::
應用層: ??????????????????應用層:
表示層:
會話層:
傳輸層: 傳輸層:
Internet層: ???? 網絡層:
網絡訪問層:
(數據鏈路層) ? 數據鏈路層:
(物理層) ??????????????????物理層:
網卡是數據鏈路層。
WiFi是數據鏈和物理層。
25、應用層:
26、傳輸層:
27、可靠性vs高效性(TCP ??vs ?UDP)
28、TCP協議特性
工作在傳輸層
面向連接協議
全雙工協議
半關閉
錯誤檢查
將數據打包成段,排序
確認機制
數據恢復,重傳。
流量控制,滑動窗口
擁塞控制,慢啟動和擁塞避免算法
29、TCP包頭
端口和目標端口各是六萬多個。65535個 ??ss-ntul
源端口、目標端口:計算機上的進程要和其他進程通信是要通過計算機端口的,而一個計算機端口某個時刻只能被一個進程占用,所以通過指定源端口和目標端口,就可以知道是哪兩個進程需要通信。源端口、目標端口是用16位表示的,可推算計算機的端口個數為2^16個u
序列號:表示本報文段所發送數據的第一個字節的編號。在TCP連接中所傳送的字節流的每一個字節都會按順序編號。由于序列號由32位表示,所以每2^32個字節,就會出現序列號回繞,再次從 0 開始u
確認號:表示接收方期望收到發送方下一個報文段的第一個字節數據的編號。也就是告訴發送發:我希望你(指發送方)下次發送的數據的第一個字節數據的編號是這個確認號u
數據偏移:表示TCP報文段的首部長度,共4位,由于TCP首部包含一個長度可變的選項部分,需要指定這個TCP報文段到底有多長。它指出 TCP 報文段的數據起始處距離 TCP 報文段的起始處有多遠。該字段的單位是32位(即4個字節為計算單位),4位二進制最大表示15,所以數據偏移也就是TCP首部最大60
u URG:表示本報文段中發送的數據是否包含緊急數據。后面的緊急指針字段(urgent
pointer)只有當URG=1時才有效
u ACK:表示是否前面的確認號字段是否有效。ACK=1,表示有效。只有當ACK=1時,前面的確認號字段才有效。TCP規定,連接建立后,ACK必須為1,帶ACK標志的TCP報文段稱為確認報文段
u PSH:提示接收端應用程序應該立即從TCP接收緩沖區中讀走數據,為接收后續數據騰出空間。如果為1,則表示對方應當立即把數據提交給上層應用,而不是緩存起來,如果應用程序不將接收到的數據讀走,就會一直停留在TCP接收緩沖區中
u RST:如果收到一個RST=1的報文,說明與主機的連接出現了嚴重錯誤(如主機崩潰),必須釋放連接,然后再重新建立連接?;蛘哒f明上次發送給主機的數據有問題,主機拒絕響應,帶RST標志的TCP報文段稱為復位報文段
uSYN:在建立連接時使用,用來同步序號。當SYN=1,ACK=0時,表示這是一個請求建立連接的報文段;當SYN=1,ACK=1時,表示對方同意建立連接。SYN=1,說明這是一個請求建立連接或同意建立連接的報文。只有在前兩次握手中SYN才置為1,帶SYN標志的TCP報文段稱為同步報文段
u FIN:表示通知對方本端要關閉連接了,標記數據是否發送完畢。如果FIN=1,即告訴對方:“我的數據已經發送完畢,你可以釋放連接了”,帶FIN標志的TCP報文段稱為結束報文段
窗口大小:表示現在允許對方發送的數據量,也就是告訴對方,從本報文段的確認號開始允許對方發送的數據量
校驗和:提供額外的可靠性
緊急指針:標記緊急數據在數據字段中的位置
選項部分:其最大長度可根據TCP首部長度進行推算。TCP首部長度用4位表示,選項部分最長為:(2^4-1)*4-20=40字節
常見選項:
?最大報文段長度:Maxium Segment Size,MSS
?窗口擴大:Windows Scaling
?時間戳: Timestamps
30、TCP包頭選項
u1 最大報文段長度
指明自己期望對方發送TCP報文段時那個數據字段的長度。默認是536字節。數據
字段的長度加上TCP首部的長度才等于整個TCP報文段的長度。MSS不宜設的太大
也不宜設的太小。若選擇太小,極端情況下,TCP報文段只含有1字節數據,在IP
層傳輸的數據報的開銷至少有40字節(包括TCP報文段的首部和IP數據報的首部)。
這樣,網絡的利用率就不會超過1/41。若TCP報文段非常長,那么在IP層傳輸時就
有可能要分解成多個短數據報片。在終點要把收到的各個短數據報片裝配成原來的
TCP報文段。當傳輸出錯時還要進行重傳,這些也都會使開銷增大。因此MSS應盡
可能大,只要在IP層傳輸時不需要再分片就行。在連接建立過程中,雙方都把自己
能夠支持的MSS寫入這一字段。 MSS只出現在SYN報文中。即:MSS出現在
SYN=1的報文段中
2 窗口擴大
為了擴大窗口,由于TCP首部的窗口大小字段長度是16位,所以其表示的最大數是
65535。但是隨著時延和帶寬比較大的通信產生(如衛星通信),需要更大的窗口
來滿足性能和吞吐率,所以產生了這個窗口擴大選項
u3 時間戳
可以用來計算RTT(往返時間),發送方發送TCP報文時,把當前的時間值放入時間
戳字段,接收方收到后發送確認報文時,把這個時間戳字段的值復制到確認報文中,
當發送方收到確認報文后即可計算出RTT。也可以用來防止回繞序號PAWS,也可
以說可以用來區分相同序列號的不同報文。因為序列號用32為表示,每2^32個序
列號就會產生回繞,那么使用時間戳字段就很容易區分相同序列號的不同報文
31、映射第四層到應用程序
32、TCP協議PORT
/etc/sercives查看端口占用情況: ?grep xxxx /etc/services創建。
tcp:
udp:
tasklist
(ping -a 解析ip)
u 傳輸層通過port號,確定應用層協議u
Port number:u
tcp:傳輸控制協議,面向連接的協議;通信前需要建立虛擬鏈路;結束后拆除鏈路0-65535
udp:User Datagram Protocol,無連接的協議0-65535u
IANA:互聯網數字分配機構(負責域名,數字資源,協議分配)
0-1023:系統端口或特權端口(僅管理員可用) ,眾所周知,永久的分配給固定的系統應用使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)
1024-49151:用戶端口或注冊端口,但要求并不嚴格,分配給程序注冊為某應用使用,1433/tcp(SqlServer),1521/tcp(oracle),3306/tcp(mysql),11211/tcp/udp (memcached)
49152-65535:動態端口或私有端口,客戶端程序隨機使用的端口其范圍的定義:
/proc/sys/net/ipv4/ip_local_port_ran
建立連接:
源端口:
目的端口:
序列號:
確認號:
數據偏移:ack ????syn ????fin
33、TCP三次握手
- 主動發送請求,syn。
- 服務器回復,ack,syn。
- 客戶
狀態:netstat -nta
34、TCP四次揮手
不一定是客戶或者服務器提出分手,
- 發送fin
- 回復ack
- 回復fin,ack
- 最終的Ack。 ??一個分手包,一個斷開連接包,終止。
35、有限狀態機FSM
CLOSED 沒有任何連接狀態
u LISTEN 偵聽狀態,等待來自遠方TCP端口的連接請求
u SYN-SENT 在發送連接請求后,等待對方確認
u SYN-RECEIVED 在收到和發送一個連接請求后,等待對方確認
u ESTABLISHED 代表傳輸連接建立,雙方進入數據傳送狀態
u FIN-WAIT-1 主動關閉,主機已發送關閉連接請求,等待對方確認
u FIN-WAIT-2 主動關閉,主機已收到對方關閉傳輸連接確認,等待對方發送關閉傳輸
連接請求
u TIME-WAIT 完成雙向傳輸連接關閉,等待所有分組消失
u CLOSE-WAIT 被動關閉,收到對方發來的關閉連接請求,并已確認
u LAST-ACK 被動關閉,等待最后一個關閉傳輸連接確認,并等待所有分組消失
u CLOSING 雙方同時嘗試關閉傳輸連接,等待對方確認
客戶端先發送一個FIN給服務端,自己進入了FIN_WAIT_1狀態,這時等待接收服務端
的報文,該報文會有三種可能:
? 只有服務端的ACK
? 只有服務端的FIN
? 基于服務端的ACK,又有FIN
u 1、只收到服務器的ACK,客戶端會進入FIN_WAIT_2狀態,后續當收到服務端的FIN
時,回應發送一個ACK,會進入到TIME_WAIT狀態,這個狀態會持續2MSL(TCP報文段
在網絡中的最大生存時間, RFC 1122標準的建議值是2min).客戶端等待2MSL,是為了
當最后一個ACK丟失時,可以再發送一次。因為服務端在等待超時后會再發送一個FIN
給客戶端,進而客戶端知道ACK已丟失
u 2、只有服務端的FIN時,回應一個ACK給服務端,進入CLOSING狀態,然后接收到服
務端的ACK時,進入TIME_WAIT狀態
u 3、同時收到服務端的ACK和FIN,直接進入TIME_WAIT狀態
36、TCP端口號
如果第一次傳輸三個,對方確認號為3,那么也就是成功傳輸2個,下個從新在3開始傳輸。
擁塞控制:
u網絡中的帶寬、交換結點中的緩存和處理機等,都是網絡的資源。在某段時間,
若對網絡中某一資源的需求超過了該資源所能提供的可承受的能力,網絡的性
能就會變壞。這種情況就叫做擁塞
uTCP為提高網絡利用率,降低丟包率,并保證網絡資源對每條數據流的公平性。
即所謂的擁塞控制
uTCP擁塞控制的標準文檔是RFC 5681,其中詳細介紹了擁塞控制的四個部分:
慢啟動(slow start)、擁塞避免(congestion avoidance)、快速重傳(fast
retransmit)和快速恢復(fast recovery)。擁塞控制算法在Linux下有多種實
現,比如reno算法、vegas算法和cubic算法等。它們或者部分或者全部實現了
上述四個部分
u當前所使用的擁塞控制算法
/proc/sys/net/ipv4/tcp_congestion_control
37、UDP特性
u工作在傳輸層
u提供不可靠的網絡訪問
u非面向連接協議
u有限的錯誤檢查
u傳輸性能高
u無數據恢復特性
UDP報頭:沒有編號,
38、Internet層
ttl: time to live。路由器的值是64減去顯示的值。默認是64 ttl。
ttl 默認的數值。報文的數值64。
Ping -f ip地址。
Ping ?-s 報文的值。
禁止ping的文件; ?cat /pro/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /pro/sys/net/ipv4/icmp_echo_ignore_all
ARP表
[root@centos7 ~]#ip neigh
192.168.74.1 dev eth0 lladdr 00:50:56:c0:00:01 REACHABLE
192.168.74.254 dev eth0 lladdr 00:50:56:e3:29:de STALE
192.168.199.1 dev eth1 lladdr d4:ee:07:52:3a:46 STALE
192.168.199.207 dev eth1 lladdr ac:c1:ee:7b:a3:5b STALE
[root@centos7 ~]#arp -n
Address HWtype HWaddress Flags Mask Iface
192.168.74.1 ether 00:50:56:c0:00:01 C eth0
192.168.74.254 ether 00:50:56:e3:29:de C eth0
192.168.199.1 ether d4:ee:07:52:3a:46 C eth1
192.168.199.207 ether ac:c1:ee:7b:a3:5b C et
arp協議:address resolution protocol 地址解析協議。
ARP緩存:
arp -a
跨路由實現arp
39、Internet協議特征
u運行于 OSI 網絡層
u面向無連接的協議
u獨立處理數據包
u分層編址
u盡力而為傳輸
u無數據恢復功能
ip PDU報頭
Ipv4
Ipv6是128位。
Ipv9:
u 版本:占4位,指 IP 協議的版本目前的IP協議版本號為4
u 首部長度:占4位,可表示的最大數值是15個單位,一個單位為4字節,因此IP 的首部
長度的最大值是60字節
u 區分服務:占8位,用來獲得更好的服務,在舊標準中叫做服務類型,但實際上一直未被使
用過.后改名為區分服務.只有在使用區分服務(DiffServ)時,這個字段才起作用.一般的
情況下都不使用
u 總長度:占16位,指首部和數據之和的長度,單位為字節,因此數據報的最大長度為
65535 字節.總長度必須不超過最大傳送單元 MTU
u 標識:占16位,它是一個計數器,通常,每發送一個報文,該值會加1, 也用于數據包
分片,在同一個包的若干分片中,該值是相同的
u 標志(flag):占3位,目前只有后兩位有意義
u DF: Don‘t Fragment,中間的一位,只有當 DF=0 時才允許分片
u MF: More Fragment,最高位,MF=1表示后面還有分片。MF=0 表示最后一個
分片
片偏移:占12位,指較長的分組在分片后,該分片在原分組中的相對位置.片偏移
以8個字節為偏移單位
u生存時間:占8位,記為TTL (Time To Live) 數據報在網絡中可通過的路由器數的
最大值,TTL 字段是由發送端初始設置一個 8 bit字段.推薦的初始值由分配數字
RFC 指定,當前值為 64.發送 ICMP 回顯應答時經常把 TTL 設為最大值 255
u協議:占8位,指出此數據報攜帶的數據使用何種協議以便目的主機的IP層將數據
部分上交給哪個處理過程, 1表示為 ICMP 協議, 2表示為 IGMP 協議, 6表示為
TCP 協議, 17表示為 UDP 協議
u首部檢驗和:占16位,只檢驗數據報的首部不檢驗數據部分.這里不采用 CRC 檢驗
碼而采用簡單的計算方法
u源地址和目的地址:都各占4字節,分別記錄源地址和目的地址
40、IP地址
Ip地址起到管理作用。
它們可唯一標識 IP 網絡中的每臺設備u
每臺主機(計算機、網絡設備、外圍設備)必須具有唯一的
Ip地址由兩個部分組成:
網絡ID:標識網絡
每個網段分配一個網絡ID
主機ID:
標識單個主機 ?2^24-2個ip。
由組織分配給各設備。
一個網絡主機數=2^主機ID-2
IPv4地址格式:點分十進制:
41、IP地址分類
uA類:
0 000 0000 – 0 111 1111: 1-127
網絡數:126, 127
每個網絡中的主機數:2^24-2
默認子網掩碼:255.0.0.0
私網地址:10.0.0.0
8網絡id ?????????????24主機id
uB類:
10 00 0000 – 10 11 1111:128-191
網絡數:2^14
每個網絡中的主機數:2^16-2
默認子網掩碼:255.255.0.0
私網地址:172.16.0.0-172.31.0.0
16 網絡id ???????????16主機id
C類:
110 0 0000 – 110 1 1111: 192-223
網絡數:2^21
每個網絡中的主機數:2^8-2
默認子網掩碼:255.255.255.0
私網地址:192.168.0.0-192.168.255.0
24 ?網絡id ???????????8主機id
uD類:組播
1110 0000 – 1110 1111: 224-239
uE類:
240-255
42、公共IP
類 | 公共IP地址范圍 |
A | 1.0.0.0到9.255.255.255
11.0.0.0到126.255.255.255 |
B | 128.0.0.0到172.15.255.255
172.32.0.0到191.255.255.255 |
C | 192.0.0.0到192.167.255.255
192.169.0.0到223.255.255.255 |
43、私有ip
類 | 私有地址范圍 |
A | 10.0.0.0到10.255.255.255 ????10.0.0.0/8 |
B | 172.16.0.0到172.31.255.255 ????172.16.0.0/16 |
C | 192.168.0.0到192.168.255.255 ??192.168.0.0/24 |
44、保留地址
45、子網掩碼
CIDR類:無類域間路由
根據情況靈活調整。
CIDR:表示法。 ??IP/網絡ID位數。
Netmask:32bit,對應網絡id位位1,對應主機id為0。
子網掩碼:
A類:255.0.0.0
B類:255.255.0.0
C類:255.255.255.0
都可能成為子網掩碼:
00000000 | 0 |
10000000 | 128 |
11000000 | 192 |
11100000 | 224 |
11110000 | 240 |
11111000 | 248 |
11111100 | 252 |
11111110 | 254 |
11111111 | 255 |
網絡id的位數要查詢前面的多少個1 ,多少個1,所以就是網絡id就是多少位。
主機id是32-主機id的個數。2^差數-2.
現在的ip地址和子網掩碼都是配合使用的。
思考題:200.201.164.100/26
子網掩碼:255.255.255.192
網絡主機數: 2^6-2=62
和0與的都為0
與1與的都為1
200.201.164.100
255.255.255.192
200.201.164.64
與后:
200 201.164.64網絡id,只看網絡id位。
A:192.168.1.100 ???255.255.255.0
B:192.168.1.200 ???255.255.255.0
判斷A和B是否在一個網段,比較子網掩碼,只是比較前24位,如果一致就在一個網段。
如果是192.168.1.100和192.168.2.200那么就不在一個網段。比較的還是網絡id位數。網絡id位數為1,主機id為0.
查看兩個網絡是否在一個網段呢?
A要與B之間通信:A的ip地址先與自己的子網掩碼與,然后利用自己的子網掩碼和B的IP地址與。
如果A的子網掩碼為255.255.0.0 ?B的子網掩碼為255.255.255.0.A與B通信的話,A認為與B在一個網段,B與A通信的話B認為和A不在一個網段。如果沒有網關的話,ApingB是超時,BpingA是不可到達。
這就是網關作用和別的網段通信的機制。
自己和網關必須在一個網段。有了網段才可以和別的網段通信。
劃分子網:將一個大網分割成多個小網,主機ID的位變少,網絡ID變多,網絡ID向主機借位N,將劃分為2^N 個子網(公式)。
10.0.0.0
10.00000000.0.0
10.10000000.0.0
優化IP地址分配:
劃分超網:路由記錄,多個子網和成一個大網,把多個記錄合并為小的條目。方便查找。
優化路由器的容量。
主機id向網絡id借位:借幾位網絡id減少幾位。前五位是一樣的,后面是借位。
優化網絡速度。
Network:網絡id位
Subnet:借位。
Host:主機數
46、特殊地址
u?0.0.0.0
0.0.0.0不是一個真正意義上的IP地址。它表示一個集合:所有不清楚的主機和目的網絡。
u 255.255.255.255
限制廣播地址。對本機來說,這個地址指本網段內(同一廣播域)的所有主機
u 127.0.0.1~127.255.255.254
本機回環地址,主要用于測試。在傳輸介質上永遠不應該出現目的地址為“127.0.0.1”的數據包。
u 224.0.0.0到239.255.255.255
組播地址,224.0.0.1特指所有主機,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址
多用于一些特定的程序以及多媒體程序
u 169.254.x.x
如果Windows主機使用了DHCP自動分配IP地址,而又無法從DHCP服務器獲取地址,系統會為主機分配這樣地址。
47、跨網絡通信
接口:本路由器出口
網關:
直接相連:0.0.0.0
非直接相連:下一個路由器的接口。
跨網絡:路由
路由分類:主機路由 ??網絡路由 ??默認路由;默認路由。
路由表不只是跨網絡需要的。機器通訊的也需要。
優先級:精度越高,優先級越高。
route -n ??Linux里面的路由信息。
48、動態主機配置協議DHCP
discover:請求
offer:通知
request:廣播
ack:確認
49、基本網絡配置
一般包括如下內容:
主機名
IP/masknet
路由:默認網關
DNS服務器
主DNS服務器
次DNS服務器
第三DNS服務器
50、Centos6 網卡名稱
接口命名方式:CentOS 6
以太網:eth[0,1,2,…]ppp:
ppp[0,1,2,…]u
網絡接口識別并命名相關的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rulesu
查看網卡:dmesg |grep –i
ethethtool -i eth0u
卸載網卡驅動:modprobe -r e1000rmmod e1000u
裝載網卡驅動:modprobe e10
?
51、網絡配置方式
靜態指定:ifconfig ??route ?netstat
Ip:object{link,addr,route},ss,tc
System-config-network-tui,setup
配置文件
動態分配:
DHCP:Dynamic Host Configuration Protoco
52、配置網絡接口
ifconfig命令
ifconfig [interface]
ifconfig -a
ifconfig IFACE [up|down]
ifconfig interface [aftype] options | address …
ifconfig IFACE IP/netmask [up]
ifconfig IFACE IP netmask NETMASK
注意:立即生效
啟用混雜模式:[-]promisc
53、route命令
路由管理命令。
查看route -n
添加:route add
u路由管理命令
u查看:route -n
u添加:route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
u目標:192.168.1.3 網關:172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
u目標:192.168.0.0 網關:172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
u默認路由,網關:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
route add default gw 172.16.0.1
u刪除:route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
u目標:192.168.1.3 網關:172.16.0.1
route del -host 192.168.1.3
u目標:192.168.0.0 網關:172.16.0.1
route del -net 192.168.0.0 netmask 255.255.255.0
兩臺機器不在一個網段,增加一條路由記錄,路由記錄是指向自己,或者是默認的都可以,然后之間可以通信。
54、配置動態路由
通過守護進程獲取動態路由
- 安裝quagga包
- 支持多種路由協議:RIP、OSPF和BGP
- 命令vtysh配置
55、netstat命令
unetstat – Print network connections, routing tables, interface statistics, masquerade
connections, and multicast memberships
u顯示網絡連接:
netstat [–tcp|-t] [–udp|-u] [–raw|-w] [–listening|-l] [–all|-a] [–
numeric|-n] [–extend|-e[–extend|-e]] [–program|-p]
-t: tcp協議相關
-u: udp協議相關
-w: raw socket相關
-l: 處于監聽狀態
-a: 所有狀態
-n: 以數字顯示IP和端口;
-e:擴展格式
-p: 顯示相關進程及PID
常用組合:
-tan, -uan, -tnl, -unl
u顯示路由表:
netstat {–route|-r} [–numeric|-n]
-r: 顯示內核路由表
-n: 數字格式
u顯示接口統計數據:
netstat {–interfaces|-I|-i} [iface] [–all|-a] [–extend|-e] [–program|-p]
[–numeric|-n]
netstat -i
netstat –I=IFACE
ifconfig -s eth0
配置文件信息:
56、ip命令
配置Linux網絡屬性:ip命令
uip – show / manipulate routing, devices, policy routing and tunnels
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
ip link – network device configuration
set dev IFACE
可設置屬性:
up and down:激活或禁用指定接口
ifup/ifdown
show [dev IFACE]:指定接口
[up]:僅顯示處于激活狀態的接口
ip addr { add | del } IFADDR dev STRING
[label LABEL]:添加地址時指明網卡別名
[scope {global|link|host}]:指明作用域
global: 全局可用
link: 僅鏈接可用
host: 本機可用
[broadcast ADDRESS]:指明廣播地址
u ip address show – look at protocol addresses
[dev DEVICE]
[label PATTERN]
[primary and secondary]
u ip address flush – 使用格式同show
ip addr add 172.16.100.100/16 dev eth0 label eth0:0
ip addr del 172.16.100.100/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
u ip route – routing table management
添加路由:ip route add
ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET:
主機路由:IP
網絡路由:NETWORK/MASK
ip route add 192.168.0.0/24 via 172.16.0.1
ip route add 192.168.1.13 via 172.16.0.1
添加網關:ip route add default via GW dev IFACE
ip route add default via 172.16.0.1
刪除路由:ip route delete
ip route del TARGET
顯示路由:ip route show|list
清空路由表:ip route flush [dev IFACE] [via PREFIX]
ip route flush dev eth0
格式:ss [OPTION]… [FILTER]
u netstat通過遍歷proc來獲取socket信息,ss使用netlink與內核tcp_diag模塊通信獲取socket信
息。
u選項:
-t: tcp協議相關
-u: udp協議相關
-w: 裸套接字相關
-x:unix sock相關
-l: listen狀態的連接
-a: 所有
-n: 數字格式
-p: 相關的程序及PID
-e: 擴展的信息
-m:內存用量
-o:計時器信息
56、ss命令
FILTER : [ state TCP-STATE ] [ EXPRESSION ]
u TCP的常見狀態:
tcp finite state machine:
LISTEN: 監聽
ESTABLISHED:已建立的連接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
u EXPRESSION:
dport =
sport =
示例:’( dport = :ssh or sport = :ssh )’
u 常用組合:
-tan, -tanl, -tanlp, -uan
uss -l 顯示本地打開的所有端口uss -pl 顯示每個進程具體打開的socketuss -t -a 顯示所有tcp socketuss -u -a 顯示所有的UDP Socektuss -o state established ‘( dport = :ssh or sport = :ssh )’ 顯示所有已建立的ssh連接uss -o state established ‘( dport = :http or sport = :http )’ 顯示所有已建立的HTTP連接uss -s 列出當前socket詳細
57、網絡配置文件
IP、MASK、GW、DNS相關配置文件:/etc/sysconfig/networkscripts/ifcfg-IFACE
u路由相關的配置文件:
/etc/sysconfig/network-scripts/route-IFACE
u/etc/sysconfig/network-scripts/ifcfg-IFACE:
說明參考/usr/share/doc/initscripts-9.49.30/sysconfig.txt
DEVICE:此配置文件應用到的設備
HWADDR:對應的設備的MAC地址
BOOTPROTO:激活此設備時使用的地址配置協議,常用的dhcp, static,
none, bootp
NM_CONTROLLED:NM是NetworkManager的簡寫,此網卡是否接受
NM控制;建議CentOS6為“no”
uONBOOT:在系統引導時是否激活此設備
uTYPE:接口類型;常見有的Ethernet, Bridge
uUUID:設備的惟一標識
uIPADDR:指明IP地址
uNETMASK:子網掩碼
uGATEWAY: 默認網關
uDNS1:第一個DNS服務器指向
uDNS2:第二個DNS服務器指向
uUSERCTL:普通用戶是否可控制此設備
uPEERDNS:如果BOOTPROTO的值為“dhcp”,是否允許dhcp server分配的
dns服務器指向信息直接覆蓋至/etc/resolv.conf文件中
58、主機名和本地解析器
配置當前主機的主機名:
hostname [HOSTNAME]
/etc/sysconfig/network
HOSTNAME=
u解析器執行正向和逆向查詢
u/etc/hosts
- 本地主機名數據庫和IP地址的映像
- 對小型獨立網絡有用
- 通常,在使用DNS前檢查
- getent hosts 查看/etc/hosts 內容
59、dns名字解析
u /etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
search magedu.com
u /etc/nsswitch.conf
與/etc/hosts相比優先于DNS
u 正向解析:FQDN–>IP
dig -t A FQDN
host -t A FQDN
u 反向解析:IP–>FQDN
dig -x IP
host -t PTR IP
60、網絡配置文件
/etc/sysconfig/network-scripts/route-IFACE
- 注意:需service network restart生效
- 兩種風格:
(1) TARGET via GW
如:10.0.0.0/8 via 172.16.0.1
(2) 每三行定義一條路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
61、設備別名
u為每個設備別名生成獨立的接口配置文件
- 關閉NetworkManager服務
- ifcfg-ethX:xxx
- 必須使用靜態聯網DEVICE=eth0:0IPADDR=10.10.10.10NETMASK=255.0.0.0ONPARENT=yes
注意:service network restart 生效u
參考/usr/share/doc/initscripts-*/sysconfig.t
主機名和主機頭:
配置文件需要寫到文件中去。
一個網卡上可以設置多個網卡名。
62、centos7網絡屬性配置
Centos7更改網卡名稱
針對不同的環境,提前制作多個配置文件。針對環境進行處理。
u CentOS 6之前,網絡接口使用連續號碼命名:eth0、eth1等,當增加或刪除網卡時,名
稱可能會發生變化
u CentOS 7使用基于硬件,設備拓撲和設置類型命名:
u (1) 網卡命名機制
systemd對網絡設備的命名方式
(a) 如果Firmware或BIOS為主板上集成的設備提供的索引信息可用,且可預測則
根據此索引進行命名,例如eno1
(b) 如果Firmware或BIOS為PCI-E擴展槽所提供的索引信息可用,且可預測,則根
據此索引進行命名,例如ens1
(c) 如果硬件接口的物理位置信息可用,則根據此信息進行命名,例如enp2s0
(d) 如果用戶顯式啟動,也可根據MAC地址進行命名,enx2387a1dc56
(e) 上述均不可用時,則使用傳統命名機制
63、網卡名稱
u基于BIOS支持啟用biosdevname軟件
內置網卡:em1,em2
pci卡:pYpX Y:slot ,X:port
u(2) 名稱組成格式
en: Ethernet 有線局域網
wl: wlan 無線局域網
ww: wwan無線廣域網
名稱類型:
o<index>: 集成設備的設備索引號
s<slot>: 擴展槽的索引號
x<MAC>: 基于MAC地址的命名
p<bus>s<slot>: enp2s1
采用傳統命名方式
u使用傳統命名方式:u
(1)編輯/etc/default/grub配置文件GRUB_CMDLINE_LINUX=”rhgb quiet net.ifnames=0或:修改/boot/grub2/grub.cfgu
(2)為grub2生成其配置文件grub2-mkconfig -o /etc/grub2.cfgu 或者/boot/grub/grub2.cfg ?第一個linux16尾部加上 net.ifnames=0
(3)重啟
64、centos7網絡配置工具
CentOS7主機名
? 配置文件:/etc/hostname ,默認沒有此文件,通過DNS反向解析獲取主機名,主機名
默認為:localhost.localdomain
? 顯示主機名信息
hostname
hostnamectl status
? 設置主機名
hostnamectl set-hostname centos7.magedu.com
? 刪除文件/etc/hostname,恢復主機名localhost.localdomain
u CentOS 7網絡配置工具
? 圖形工具:nm-connection-editor
? 字符配置tui工具:nmtui
? 命令行工具:nmcli
地址配置工具:nmcli
u nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device – show and manage network interfaces
nmcli device help
connection – start, stop, and manage network connections
nmcli connection help
u 修改IP地址等屬性:
nmcli connection modify IFACE [+|-]setting.property value
setting.property:
ipv4.addresses ipv4.gateway
ipv4.dns1 ipv4.method manual | auto
u 修改配置文件執行生效:systemctl restart network
nmcli con reload
u nmcli命令生效: nmcli con down eth0 ;nmcli con up eth0
使用nmcli配置網絡
uNeworkManager是管理和監控網絡設置的守護進程
u設備即網絡接口,連接是對網絡接口的配置。一個網絡接口可有多個連接配置,
但同時只有一個連接配置生效
u顯示所有包括不活動連接
nmcli con show
u顯示所有活動連接
nmcli con show –active
u顯示網絡連接配置
nmcli con show “System eth0“
u顯示設備狀態
nmcli dev status
顯示網絡接口屬性
nmcli dev show eth0
u創建新連接default,IP自動通過dhcp獲取
nmcli con add con-name default type Ethernet ifname eth0
u刪除連接
nmcli con del default
u創建新連接static ,指定靜態IP,不自動連接
nmcti con add con-name static ifname eth0 autoconnect no type
Ethernet ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254
使用nmcli配置:
啟用static連接配置
nmcli con up static
u啟用default連接配置
nmcli con up default
u查看幫助
nmcli con add help
使用nmcli配置網絡
修改連接設置
nmcli con mod“static” connection.autoconnect no
nmcli con mod “static” ipv4.dns 172.25.X.254
nmcli con mod “static” +ipv4.dns 8.8.8.8
nmcli con mod “static” -ipv4.dns 8.8.8.8
nmcli con mod “static” ipv4.addresses “172.25.X.10/24 172.25.X.254”
nmcli con mod “static” +ipv4.addresses 10.10.10.10/16
uDNS設置,存放在/etc/resolv.conf文件中
PEERDNS=no 表示當IP通過dhcp自動獲取時,dns仍是手動設置,不自動獲取。等價于下
面命令:
nmcli con mod “system eth0” ipv4.ignore-auto-dns yes
nmcli命令:
網絡配置文件:
設備配置被保存在文本文件中
- /etc/sysconfig/network-scripts/ifcfg-<name>
- 幫助文檔列出完整選項列表:/usr/share/doc/initcripts-
*/sysconfig.txt
動態配置: ???????????????????????????????????????靜態配置:
TYPE=Ethernet ?????????????????????????????????????ip直接進行制定等
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=ffb3a88d-21ba-4897-aede-98a6a7d19c1e
DEVICE=ens33
ONBOOT=no
~
nmcli命令:
修改連接配置后,需要重新加載配置
nmcli con reload
nmcli con down “system eth0” 可被自動激活
nmcli con up “system eth0”
nmcli dev dis eth0 禁用網卡,訪止被自動激活
u圖形工具
nm-connection-editor
u字符工具
nmtui
nmtui-connect
nmtui-edit
nmtui-hostname
網絡工具:
在命令行下測試網絡的連通性
? 顯示主機名
hostname
? 測試網絡連通性
ping
mtr
? 顯示正確的路由表
ip route
u 確定名稱服務器使用:
? nslookup
? host
? dig
u 跟蹤路由
- traceroute
- tracepath
網絡客戶端工具:
uftp,lftp:子命令:get、mget、ls、help
lftp [-p port] [-u user[,password]] SERVER
ulftpget URL
uwget [option]… [URL]…
-q: 靜默模式
-c: 斷點續傳
-P:保存在指定目錄
-O: 保存為指定的文件名
–limit-rate=: 指定傳輸速率,單位K,M等
ulinks URL
–dump
–source
Ipv4.method manual
一個網卡設置多套配置,方便操作。
靜態動態:bootproto=dhcp。
links ?–dumps ?xxxxx.com抓取網頁文字;
二、HTTP服務和Apache
1、Internet與中國的服務
uInternet最早來源于美國國防部高級研究計劃局ARPA建立的ARPANet,1969年投入運行。1983年,ARPAnet分裂為兩部分:ARPAnet和純軍事用的MILNET。當年1月,ARPA把TCP/IP協議作為ARPAnet的標準協議,這個以ARPAnet為主干網的網際互聯網便被稱為Internet。1986年,美國國家科學基金會建立計算機通信網絡NSFnet。此后,NSFNet逐漸取代ARPANet在Internet的地位。1990年,ARPANet正式關閉
u北京時間1987年9月20日,錢天白建立起一個網絡節點,通過電話撥號連接到國際互聯網,向他的德國朋友發出來自中國的第一封電子郵件:Across the Great Wall we can reach every corner in the world,自此,中國與國際計算機網絡開始連接在一起
1990年10月錢天白教授代表中國正式在國際互聯網絡信息中心的前身DDN-NIC注冊登記了我國的頂級域名CN,并且從此開通了使用中國頂級域名CN的國際電子郵件服務。由于當時中國尚未正式連入Internet,所以委托德國卡爾斯魯厄大學運行CN域名服務器
u 1993年3月2日中國科學院高能物理研究所租用AT&T公司的國際衛星信道接入美國斯坦福線性加速器中心(SLAC)的64K專線正式開通,專線開通后,美國政府以Internet上有許多科技信息和其它各種資源,不能讓社會主義國家接入為由,只允許這條專線進入美國能源網而不能連接到其它地方。盡管如此,這條專線仍是我國部分連入Internet的第一根專線
u 1994年4月20日
中國實現與互聯網的全功能連接,被國際上正式承認為有互聯網的國家
u 1994年5月21日
在錢天白教授和德國卡爾斯魯厄大學的協助下,中國科學院計算機網絡信息中心完成了中國國家頂級域名(CN)服務器的設置,改變了中國的CN頂級域名服務器一直放在國外的歷史
u 1996年1月
中國互聯網全國骨干網建成并正式開通,開始提供服務
1995年4月
馬云湊了兩萬塊錢,成立杭州海博網絡公司,專門給企業做主頁
u 1997年5月
丁磊創立網易
u 1998年
張朝陽創立搜狐。
u 1998年6月18日
劉強東在中關村創辦京東公司,代理銷售光磁產品
u 1998年11月
馬化騰和張志東成立深圳市騰訊計算機系統有限公司,OICQ開通
u 1998年12月
新浪網成立,關鍵人物:王志東
u 2000年1月
李彥宏創建了百度
u 2003年5月
阿里巴巴集團在創立淘寶網
u 2003年10月
淘寶網首次推出支付寶服務
u 2004年1月
京東多媒體網正式開通,啟用域名www.jdlaser.com
u 2010年4月
雷軍創辦小米
u 2011年1月21日
騰訊公司推出微信 (WeChat)
u 2012年7月10日
北京小桔科技有限公司成立,滴滴司機端3個月后北京上線
u 2016年4月
摩拜單車在上海上線
2、中國互聯網連接世界
1885年臺灣建省,首任巡撫劉銘傳派人與福州船政聯系,使用船政電報學堂畢
業生為技術人員,于1887年鋪設成功臺灣淡水至福州川石海底電纜,全長117
海里。這是我國自行設計安裝的第一條海底電纜。此電纜毀于第二次世界大戰
u我國于1989年開始投入到全球海底光纜的投資與建設中來,并于1993年實現了
首條國際海底光纜的登陸(中日之間C-J海底光纜系統);隨后在1997年,我國
參與建設的全球海底光纜系統(FLAG)建成并投入運營,這也是第一條在我國
登陸的洲際海底光纜
u中國連接世界目前共有8條光纜,四個登陸站允許入境,目前我國的登陸站設立
在三個城市的四個地區,分別是山東青島登陸站(隸屬中國聯通)、上海崇明
登陸站(隸屬中國電信)、上海南匯登陸站(隸屬中國聯通)和廣東汕頭登陸
站(隸屬中國電信)
3、TCP/IP協議
4、跨Internet的主機間的通訊
在建立通信連接的每一端,進程間的傳輸要有兩個標志:
uIP地址和端口號,合稱為套接字地址 socket address
u客戶機套接字地址定義了一個唯一的客戶進程
u服務器套接字地址定義了一個唯一的服務器進程
5、Socket套接字
Socket:套接字,進程間通信IPC的一種實現,允許位于不同主機(或同一主機)
上不同進程之間進行通信和數據交換,SocketAPI出現于1983年,4.2 BSD實現
u Socket API:封裝了內核中所提供的socket通信相關的系統調用
u Socket Domain:根據其所使用的地址
AF_INET:Address Family,IPv4
AF_INET6:IPv6
AF_UNIX:同一主機上不同進程之間通信時使用
u Socket Type:根據使用的傳輸層協議
SOCK_STREAM:流,tcp套接字,可靠地傳遞、面向連接
SOCK_DGRAM:數據報,udp套接字,不可靠地傳遞、無連接
SOCK_RAW: 裸套接字,無須tcp或tdp,APP直接通過IP包通信
系統調用u
套接字相關的系統調用:
socket(): 創建一個套接字
bind():綁定IP和端口
listen():監聽
accept():接收請求
connect():請求連接建立
write():發送
read():接收
close():關閉
Socket通信示例:服務器端tcpserver.py
Import?socket
HOST=’127.0.0.1′
PORT=9527
BUFFER=4096
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind((HOST,PORT))
sock.listen(3)
print(‘tcpServer listen at: %s:%s\n\r’ %(HOST,PORT))
while True:
client_sock,client_addr=sock.accept()
print(‘%s:%s connect’ %client_addr)
while True:
recv=client_sock.recv(BUFFER)
if not recv:
client_sock.close()
break
print(‘[Client %s:%s said]:%s’ %(client_addr[0],client_addr[1],recv)) ? client_sock.send(‘tcpServer has received your message’)
sock.close
Socket通信示例:服務器端tcpclient.py
Import?socket
HOST=’127.0.0.1′
PORT=9527
BUFFER=4096
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect((HOST,PORT))
sock.send(‘hello, tcpServer!’)
recv=sock.recv(BUFFER)
print(‘[tcpServer said]: %s’ % recv)
sock.close
6、http服務通信過程
7、http相關術語
http: Hyper Text Transfer Protocol, 80/tcp
u html: Hyper Text Markup Language 超文本標記語言,編程語言
u 示例:
<html>
<head>
<title>html語言</title>
</head>
<body>
<h1>標題1</h1>
<p><a href=http://www.magedu.com>馬哥教育</a>歡迎你</p>
<h2>標題2</h2>
</body>
</html>
u CSS: Cascading Style Sheet 層疊樣式表
u js: javascript
uMIME: Multipurpose Internet Mail Extensions
多用途互聯網郵件擴展 /etc/mime.types
u格式:major/minor
text/plain
text/html
text/css
image/jpeg
image/png
video/mp4
application/javascript
u參考:http://www.w3school.com.cn/media/media_mimeref.asp
8、http協議介紹
uhttp/0.9:1991,原型版本,功能簡陋,只有一個命令GET。GET
/index.html ,服務器只能回應HTML格式字符串,不能回應別的格式
uhttp/1.0: 1996年5月,支持cache, MIME, method
每個TCP連接只能發送一個請求,發送數據完畢,連接就關閉,如果還要請求其
他資源,就必須再新建一個連接
引入了POST命令和HEAD命令
頭信息是 ASCII 碼,后面數據可為任何格式。服務器回應時會告訴客戶端,數
據是什么格式,即Content-Type字段的作用。這些數據類型總稱為MIME 多用途
互聯網郵件擴展,每個值包括一級類型和二級類型,預定義的類型,也可自定義類
型。
常見Content-Type值:text/xml image/jpeg audio/mp3
http/1.1:1997年1月
? 引入了持久連接(persistent connection),即TCP連接默認不關閉,可以被多個請求
復用,不用聲明Connection: keep-alive。對于同一個域名,大多數瀏覽器允許同時建
立6個持久連接
? 引入了管道機制(pipelining),即在同一個TCP連接里,客戶端可以同時發送多個請
求,進一步改進了HTTP協議的效率
? 新增方法:PUT、PATCH、OPTIONS、DELETE
? 同一個TCP連接里面,所有的數據通信是按次序進行的。服務器只能順序處理回應,
前面的回應慢,會有許多請求排隊,造成”隊頭堵塞”(Head-of-line blocking)
? 為避免上述問題兩種方法:一是減少請求數,二是同時多開持久連接。網頁優化技
巧,比如合并腳本和樣式表、將圖片嵌入CSS代碼、域名分片(domain sharding)等
? HTTP 協議不帶有狀態,每次請求都必須附上所有信息。請求的很多字段都是重復的,
浪費帶寬,影響速度
Spdy:2009年,谷歌研發,解決 HTTP/1.1 效率不高問題
u
http/2.0:2015年
? 頭信息和數據體都是二進制,稱為頭信息幀和數據幀
? 復用TCP連接,在一個連接里,客戶端和瀏覽器都可以同時發送多個請求或回
應,且不用按順序一一對應,避免了“隊頭堵塞“,此雙向的實時通信稱為多工
(Multiplexing)
? 引入頭信息壓縮機制(header compression),頭信息使用gzip或compress壓縮
后再發送;客戶端和服務器同時維護一張頭信息表,所有字段都會存入這個
表,生成一個索引號,不發送同樣字段,只發送索引號,提高速度
? HTTP/2 允許服務器未經請求,主動向客戶端發送資源,即服務器推送
(server push)
9、http工作機制
u工作機制:
http請求:http request
http響應:http response
一次http事務:請求<–>響應
uWeb資源:web resource
一個網頁由多個資源構成,打開一個頁面,會有多個資源展示出來,但是每個資
源都要單獨請求。因此,一個“Web 頁面”通常并不是單個資源,而是一組資源
的集合
?靜態文件:無需服務端做出額外處理
文件后綴:.jpg, .html, .txt, .js, .css, .mp3, .avi
?動態文件:服務端執行程序,返回執行的結果
文件后綴:.asp, .php, .jsp
u提高HTTP連接性能
?并行連接:通過多條TCP連接發起并發的HTTP請求
?持久連接:keep-alive,長連接,重用TCP連接,以消除連接和關閉的時延,以事
務個數和時間來決定是否關閉連接
?管道化連接:通過共享TCP連接發起并發的HTTP請求
?復用的連接:交替傳送請求和響應報文(實驗階段)
工作機制:http請求,多個請求。
一個網頁由多個資源構成,打開一個頁面,會有多個資源,每個資源都要單獨請求。
串行,持久連接和管道。
URI:統一資源標識,分類。
URL:同一資源定位符。
10、http連接請求
?
11、串行和并行連接
12、URI
uURI: Uniform Resource Identifier 統一資源標識,分為URL和URN
?URN: Uniform Resource Naming,統一資源命名
示例: P2P下載使用的磁力鏈接是URN的一種實現
magnet:?xt=urn:btih:660557A6890EF888666
?URL: Uniform Resorce Locator,統一資源定位符,用于描述某服務器某特定資
源位置
?兩者區別:URN如同一個人的名稱,而URL代表一個人的住址。換言之,URN定義某事物的身份,而URL提供查找該事物的方法。URN僅用于命名,而不指定地址
13、URL組成
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag
>
u schame:方案,訪問服務器以獲取資源時要使用哪種協議
u user:用戶,某些方案訪問資源時需要的用戶名
u password:密碼,用戶對應的密碼,中間用:分隔
u Host:主機,資源宿主服務器的主機名或IP地址
u port:端口,資源宿主服務器正在監聽的端口號,很多方案有默認端口號
u path:路徑,服務器資源的本地名,由一個/將其與前面的URL組件分隔
u params:參數,指定輸入的參數,參數為名/值對,多個參數,用;分隔
u query:查詢,傳遞參數給程序,如數據庫,用?分隔,多個查詢用&分隔
u frag:片段,一小片或一部分資源的名字,此組件在客戶端使用,用#分隔
URL示例
uhttp://www.magedu.com:8080/images/logo.jpg
uftp://mage:password@172.16.0.1/pub/linux.ppt
urtsp://videoserver/video_demo/
Real Time Streaming Protocol
uhttp://www.magedu.com/bbs/hello;gender=f/send;type=title
uhttps://list.jd.com/list.html?cat=670,671,672&ev=149_2992&sort=sort_t
otalsales15_desc&trans=1
uhttp://apache.org/index.html#projects-list
?
14、網站訪問量查詢
uIP(獨立IP):即Internet Protocol,指獨立IP數。一天內來自相同客戶機IP地址只
計算一次,記錄遠程客戶機IP地址的計算機訪問網站的次數,是衡量網站流量
的重要指標
uPV(訪問量): 即Page View, 頁面瀏覽量或點擊量,用戶每次刷新即被計算一
次,PV反映的是瀏覽某網站的頁面數,PV與來訪者的數量成正比,PV并不是頁
面的來訪者數量,而是網站被訪問的頁面數量
uUV(獨立訪客):即Unique Visitor,訪問網站的一臺電腦為一個訪客。一天內相
同的客戶端只被計算一次??梢岳斫獬稍L問某網站的電腦的數量。網站判斷來
訪電腦的身份是通過來訪電腦的cookies實現的。如果更換了IP后但不清除
cookies,再訪問相同網站,該網站的統計中UV數是不變的
u網站統計:http://www.alexa.cn/rank/
u示例:
u甲乙丙三人在同一臺通過ADSL上網的電腦上(中間沒有斷網),分別訪問
www.magedu.com網站,并且每人各瀏覽了2個頁面,那么網站的流量統計是:
IP: 1 PV:6 UV:1
u若三人都是ADSL重新撥號后,各瀏覽了2個頁面,則
IP: 3 PV:6 UV:1
15、Web服務一次完整的http請求處理過程
七個步驟。
1)建立連接:接受或拒絕連接請求。
2)接受請求:接收客戶端請求報文中對某資源的一次清理過程。
u Web訪問響應模型(Web I/O)
單進程I/O模型:啟動一個進程處理用戶請求,而且一次只處理一個,
多個請求被串行響應
多進程I/O模型:并行啟動多個進程,每個進程響應一個連接請求
復用I/O結構:啟動一個進程,同時響應N個連接請求
實現方法:多線程模型和事件驅動
多線程模型:一個進程生成N個線程,每線程響應一個連接請求
事件驅動:一個進程處理N個請求
復用的多進程I/O模型:啟動M個進程,每個進程響應N個連接請求,
同時接收M*N個請求
3)處理請求:服務器對請求報文進行分析,并獲取請求的資源及請求方法等相關信息。
元數據:請求報文首部<method> <URL> <VERSIONHEADERS 格式 name:value<request body>示例:Host: www.magedu.com 請求的主機名稱Server: Apache/2.4.7? HTTP常用請求方式,Method GET、POST、HEAD、PUT、DELETE、TRACE、OPTIO
4)資源訪問:路徑映射等方式。
服務器獲取請求報文中請求的資源web服務器,即存放了web資源的服務器負責向請求者提供對方請求的靜態資源,或動態運行后生成的資源資源放置于本地文件系統特定的路徑:DocRootDocRoot è /var/www/html/var/www/html/images/logo.jpghttp://www.magedu.com/images/logo.jpg? web服務器資源路徑映射方式:(a) docroot(b) alias(c) 虛擬主機docroot(d) 用戶家目錄docro
5)構建響應報文:MIME類型。
一旦Web服務器識別除了資源,就執行請求方法中描述的動作,并返回響應報文。響應報文中 包含有響應狀態碼、響應首部,如果生成了響應主體的話,還包括響應主體
(1)響應實體:如果事務處理產生了響應主體,就將內容放在響應報文中回送過去。響應報文中通常包括: 描述了響應主體MIME類型的Content-Type首部 描述了響應主體長度的Content-Length 實際報文的主體內容
(2)URL重定向:web服務構建的響應并非客戶端請求的資源,而是資源另外一個訪問路徑永久重定向:http://www.360buy.com臨時重定向:http://www.taobao.com
(3)MIME類型:
Web服務器要負責確定響應主體的MIME類型。多種配置服務器的方法可將
MIME類型與資源管理起來
魔法分類:Apache web服務器可以掃描每個資源的內容,并將其與一個已知模
式表(被稱為魔法文件)進行匹配,以決定每個文件的MIME類型。這樣做可能比較
慢,但很方便,尤其是文件沒有標準擴展名時
顯式分類:可以對Web服務器進行配置,使其不考慮文件的擴展名或內容,強
制特定文件或目錄內容擁有某個MIME類型
類型協商: 有些Web服務器經過配置,可以以多種文檔格式來存儲資源。在這
種情況下,可以配置Web服務器,使其可以通過與用戶的協商來決定使用哪種格
式(及相關的MIME類型)”最好
u6)發送響應報文
Web服務器通過連接發送數據時也會面臨與接收數據一樣的問題。服務器
可能有很多條到各個客戶端的連接,有些是空閑的,有些在向服務器發送數據,還
有一些在向客戶端回送響應數據。服務器要記錄連接的狀態,還要特別注意對持久
連接的處理。對非持久連接而言,服務器應該在發送了整條報文之后,關閉自己這
一端的連接。對持久連接來說,連接可能仍保持打開狀態,在這種情況下,服務器
要正確地計算Content-Length首部,不然客戶端就無法知道響應什么時候結束了
u7)記錄日志
最后,當事務結束時,Web服務器會在日志文件中添加一個條目,來描述
已執行的事務
訪問網址的過程:路由>>arp>>tcp三次握手>>詳細的七次過程。
16、http服務器應用
http服務器程序,httpd ?apache ?nginx ???lighttpd
應用程序服務器:IIS ?.asp ???tomcat.jsp ???jetty 開源的servlet容器,基于Java的web容器。Resin CAUCHO公司,支持servlets和jsp的引擎webshpere(IBM), weblogic(BEA), jboss,oc4j(Oracl
市場占有率統計:www.netcraft.com
Httpd介紹
uhttpd
20世紀90年代初,國家超級計算機應用中心NCSA開發
1995年開源社區發布apache(a patchy server)
ASF: apache software foundation
FSF:Free Software Foundation
u特性:
? 高度模塊化:core + modules
? DSO: Dynamic Shared Object 動態加/卸載
? MPM:multi-processing module多路處理模塊
查詢httpd的版本:rpm -qi httpd
查詢信息:yum info httpd
查詢配置信息:rpm -ql httpd
開啟服務:centos6,service httpd restart
Centos7:systemctl ?httpd restart
檢查語法:service httpd configtest
Centos6關閉防火墻:service iptables stop
進程查看:ps axu
17、MPM工作模式
u prefork:多進程I/O模型,每個進程響應一個請求,默認模型
一個主進程:生成和回收n個子進程,創建套接字,不響應請求
多個子進程:工作work進程,每個子進程處理一個請求;系統初始時,預先生成多個
空閑進程,等待請求,最大不超過1024個
uworker:復用的多進程I/O模型,多進程多線程,IIS使用此模型
一個主進程:生成m個子進程,每個子進程負責生個n個線程,每個線程響應一個請
求,并發響應請求:m*n
u?event:事件驅動模型(worker模型的變種)
一個主進程:生成m個子進程,每個進程直接響應n個請求,并發響應請求:m*n,
有專門的線程來管理這些keep-alive類型的線程,當有真實請求時,將請求傳遞給服務
線程,執行完畢后,又允許釋放。這樣增強了高并發場景下的請求處理能力
httpd-2.2: event 測試版,centos6默認
httpd-2.4:event 穩定版,centos7默認
18、Httpd功能特性
虛擬主機:
IP、port、fqdn
CGI:common gateway interface,通用網關接口
反向代理
負載均衡
路徑別名
豐富的用戶認證機制
Basic
Digest
支持第三方模塊
19、httpd安裝
u版本:CentOS 6: 2.2CentOS 7: 2.4u
安裝方式:rpm:centos發行版,穩定,建議使用編譯:定制或特殊需求u
CentOS 6程序環境:httpd-2.2
配置文件:/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
檢查配置語法:httpd –tservice httpd configte
CentOS 6 httpd程序環境
u服務腳本:/etc/rc.d/init.d/httpd
腳本配置文件:/etc/sysconfig/httpd
u服務控制和啟動:
chkconfig httpd on|off
service {start|stop|restart|status|configtest|reload} httpd
u站點網頁文檔根目錄:
/var/www/html
u模塊文件路徑:
/etc/httpd/modules
/usr/lib64/httpd/modules
CentOS 6 httpd程序環境
u主程序文件:
/usr/sbin/httpd
/usr/sbin/httpd.worker
/usr/sbin/httpd.event
u主進程文件:
/etc/httpd/run/httpd.pid
u日志文件目錄:
/var/log/httpd
access_log: 訪問日志
error_log:錯誤日志
u幫助文檔包:
httpd-manual
Httpd 2.2常見配置uhttpd配置文件的組成:u # grep “Section” /etc/httpd/conf/httpd.conf
### Section 1: Global Environment### Section 2: ‘Main’ server configuration### Section 3: Virtual Hostsu配置格式:directive valuedirective: 不區分字符大小寫value: 為路徑時,是否區分大小寫,取決于文件
Httpd 2.2常見配置u
1)、顯示服務器版本信息ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|FullServerTokens Prod[uctOnly] :Server: ApacheServerTokens Major: Server: Apache/2ServerTokens Minor: Server: Apache/2.0ServerTokens Min[imal]: Server: Apache/2.0.41ServerTokens OS: Server: Apache/2.0.41 (Unix)ServerTokens Full (or not specified): Server: Apache/2.0.41 (Unix)
PHP/4.2.2 MyMod/1.2This setting applies to the entire server and cannot be enabled or disabled
on a virtualhost-by-virtualhost basis.After version 2.0.44, this directive also controls the information presented
by the ServerSignature directive. 建議使用:ServerTokens P
Httpd 2.2常見配置u
2)、修改監聽的IP和PortListen [IP:]PORT(1) 省略IP表示為本機所有IP(2) Listen指令至少一個,可重復出現多次Listen 80Listen 8080
示例:Listen 192.168.1.100:8080
Lsten 80
Httpd 2.2常見配置
u 3)、持久連接
Persistent Connection:連接建立,每個資源獲取完成后不會斷開連接,而是繼
續等待其它的請求完成,默認關閉持久連接
斷開條件:數量限制:100
時間限制:以秒為單位, httpd-2.4 支持毫秒級
副作用:對并發訪問量較大的服務器,持久連接功能會使用有些請求得不到響應
折衷:使用較短的持久連接時間
設置: KeepAlive On|Off
KeepAliveTimeout 15
MaxKeepAliveRequests 100
測試: telnet WEB_SERVER_IP PORT
GET /URL HTTP/1.1
Host: WEB_SERVER_IP
Httpd 2.2常見配置u
4)、MPM( Multi-Processing Module)多路處理模塊prefork, worker, event(試驗階段)httpd-2.2不支持同時編譯多個模塊,所以只能編譯時選定一個;rpm安裝的包提供三個二進制程序文件,分別用于實現對不同MPM機制的支持確認方法:ps aux | grep httpd默認為/usr/sbin/httpd, 即prefork
Httpd 2.2常見配置u查看模塊列表u查看靜態編譯的模塊httpd -lu查看靜態編譯及動態裝載的模塊httpd –Mu動態模塊加載:不需重啟即生效u動態模塊路徑 /usr/lib64/httpd/module
Httpd 2.2常見配置
u更換使用的httpd程序:
u/etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.worker
重啟服務生效
pstree -p|grep httpd 查看進程和線程
uHttpd 2.4 與之不同
以動態模塊方式提供
配置文件:/etc/httpd/conf.modules.d/00-mpm.conf
httpd –M |grep mpm
重啟服務生效
pstree -p|grep httpd 查看進程和線程
Httpd 2.2常見配置uprefork的默認配置:<IfModule prefork.c>StartServers 8MinSpareServers 5MaxSpareServers 20ServerLimit 256 最多進程數,最大20000MaxClients 256 最大并發MaxRequestsPerChild 4000 子進程最多能處理的請求數量。在處理MaxRequestsPerChild 個請求之后,子進程將會被父進程終止,這時候子進程占用的內存就會釋放(為0時永遠不釋放)</IfModul
uworker的默認配置:
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0 無限制
</IfModule>
5)、DSO: Dynamic Shared Object
u加載動態模塊配置
/etc/httpd/conf/httpd.conf
配置指定實現模塊加載格式:
LoadModule <mod_name> <mod_path>
模塊文件路徑可使用相對路徑:
相對于ServerRoot(默認/etc/httpd)
示例:
LoadModule auth_basic_module
modules/mod_auth_basic.so
6)、定義’Main’ server的文檔頁面路徑
DocumentRoot “/path”
文檔路徑映射:
DocumentRoot指向的路徑為URL路徑的起始位置
示例:
DocumentRoot “/app/data“
http://HOST:PORT/test/index.html
–> /app/data/test/index.html
注意:SELinux和iptables的狀態
u7)、定義站點主頁面
DirectoryIndex index.html index.html.var
8)、站點訪問控制常見機制
可基于兩種機制指明對哪些資源進行何種訪問控制
訪問控制機制有兩種:客戶端來源地址,用戶賬號
? 文件系統路徑:
<Directory “/path”>
…
</Directory>
<File “/path/file”>
…
</File>
<FileMatch “PATTERN”>
…
</FileMatch>
?URL路徑:<Location “”>…</Location><LocationMatch “”>…</LocationMatch>u示例:<FilesMatch “\.(gif|jpe?g|png)$”<Files “?at.*”> 通配符<Location /status><LocationMatch “/(extra|special)/data
針對路徑、文件和正則表達式匹配。
9)、<Directory>中“基于源地址”實現訪問控制
? (1) Options:后跟1個或多個以空白字符分隔的選項列表
在選項前的+,- 表示增加或刪除指定選項
常見選項:
Indexes:指明的URL路徑下不存在與定義的主頁面資源相符
的資源文件時,返回索引列表給用戶
FollowSymLinks:允許訪問符號鏈接文件所指向的源文件
None:全部禁用
All: 全部允許
示例:
u<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options FollowSymLinks
</Directory>
u<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options +Includes -Indexes
</Directory>
u(2) AllowOverride
與訪問控制相關的哪些指令可以放在指定目錄下的.htaccess(由
AccessFileName指定)文件中,覆蓋之前的配置指令
只對<directory>語句有效
AllowOverride All: 所有指令都有效
AllowOverride None:.htaccess 文件無效
AllowOverride AuthConfig Indexes 除了AuthConfig 和Indexes的其它指令都無法
覆蓋
u(3) order和allow、deny
放在directory, .htaccess中
order:定義生效次序;寫在后面的表示默認法則
Order allow,deny ???放在后面的優先級更高 ?默認設置最后的優先生效,控制遠程主機的訪問。
Order deny,allow
Allow from和Deny from:定義客戶端地址
客戶端地址:
IP
網絡: 172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
u示例:
<files “*.txt”>
order deny,allow
deny from 172.16. 100.100
allow from 172.16
</files>
<files “*.txt”>
order allow,deny
deny from 172.16.100.100
allow from 172.16
</files>
10)、日志設定
日志類型:
訪問日志
錯誤日志
錯誤日志:
ErrorLog logs/error_log
LogLevel warn
LogLevel 可選值:
debug, info, notice, warn,error
crit, alert, emerg
訪問日志:
? 定義日志格式:LogFormat format strings
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\””
combined
? 使用日志格式:
CustomLog logs/access_log combined
參考幫助:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
? %h 客戶端IP地址
? %l 遠程用戶,啟用mod_ident才有效,通常為減號“-”
? %u 驗證(basic,digest)遠程用戶,非登錄訪問時,為一個減號“-”
- %t 服務器收到請求時的時間
- %r First line of request,即表示請求報文的首行;記錄了此次請求的“方法”,
“URL”以及協議版本
- %>s 響應狀態碼
- %b 響應報文的大小,單位是字節;不包括響應報文http首部
- %{Referer}i 請求報文中首部“referer”的值;即從哪個頁面中的超鏈接跳轉至
當前頁面的
- %{User-Agent}i 請求報文中首部“User-Agent”的值;即發出請求的應用程
序
11)、設定默認字符集
AddDefaultCharset UTF-8
中文字符集:GBK, GB2312, GB18030
u 12)、定義路徑別名
格式: Alias /URL/ “/PATH/”
DocumentRoot “/www/htdocs”
http://www.magedu.com/download/bash.rpm
==>/www/htdocs/download/bash.rpm
Alias /download/ “/rpms/pub/”
http://www.magedu.com/download/bash.rpm
==>/rpms/pub/bash.rpm
http://www.magedu.com/images/logo.png
==>/www/htdocs/images/logo.png
u 13)、基于用戶的訪問控制
? 認證質詢:WWW-Authenticate:響應碼為401,拒絕客戶端請求,并說明要求客戶
端提供賬號和密碼
? 認證:Authorization:客戶端用戶填入賬號和密碼后再次發送請求報文;認證通過時,
則服務器發送響應的資源
? 認證方式兩種:
basic:明文
digest:消息摘要認證,兼容性差
? 安全域:需要用戶認證后方能訪問的路徑;應該通過名稱對其進行標識,以便于告
知用戶認證的原因
? 用戶的賬號和密碼
虛擬賬號:僅用于訪問某服務時用到的認證標識
存儲:文本文件,SQL數據庫,ldap目錄存儲,nis等
ubasic認證配置示例:
(1) 定義安全域
<Directory “/path”>
Options None
AllowOverride None
AuthType Basic
AuthName “String“
AuthUserFile “/PATH/HTTPD_USER_PASSWD_FILE”
Require user username1 username2 …
</Directory>
允許賬號文件中的所有用戶登錄訪問:
Require valid-user
u(2) 提供賬號和密碼存儲(文本文件)
使用專用命令完成此類文件的創建及用戶管理
htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
-c:自動創建文件,僅應該在文件不存在時使用
-m:md5格式加密,默認方式
-s: sha格式加密
-D:刪除指定用戶
u 基于組賬號進行認證
? (1) 定義安全域
<Directory “/path”>
AuthType Basic
AuthName “String”
AuthUserFile “/PATH/HTTPD_USER_PASSWD_FILE”
AuthGroupFile “/PATH/HTTPD_GROUP_FILE”
Require group grpname1 grpname2 …
</Directory>
? (2) 創建用戶賬號和組賬號文件;
組文件:每一行定義一個組
GRP_NAME: username1 username2 …
u示例:
<Directory “/www/htdocs/admin”>
Options None
AllowOverride None
AuthType Basic
AuthName “Administator private”
AuthUserFile “/etc/httpd/conf.d/.htpasswd”
AuthGroupFile “/etc/httpd/conf.d/.htgroup”
Require group webadmins
</Directory>
vim /etc/httpd/conf.d/.htgroup
webadmins:wang mage
遠程客戶端和用戶驗證的控制
uSatisfy ALL|Any
ALL 客戶機IP和用戶驗證都需要通過才可以
Any客戶機IP和用戶驗證,有一個滿足即可
u示例:
Require valid-user
Order allow,deny
Allow from 192.168.1
Satisfy Any
u14)、ServerSignature On | Off | EMail
當客戶請求的網頁并不存在時,服務器將產生錯誤文檔,缺省情況下由于打開
了 ServerSignature選項,錯誤文檔的最后一行將包含服務器的名字、Apache的版
本等信息
如果不對外顯示這些信息,就可以將這個參數設置為Off
設置為Email,將顯示ServerAdmin 的Email提示
u15)、status頁面
LoadModule status_module modules/mod_status.so
<Location /server-status>
SetHandler server-status
Order allow,deny
Allow from 172.16
</Location>
ExtendedStatus On 顯示擴展信息
16)、虛擬主機
u 站點標識: socket
IP相同,但端口不同
IP不同,但端口均為默認端口
FQDN不同:
請求報文中首部
Host: www.magedu.com
u 有三種實現方案:
基于ip:為每個虛擬主機準備至少一個ip地址
基于port:為每個虛擬主機使用至少一個獨立的port
基于FQDN:為每個虛擬主機使用至少一個FQDN
u 注意:一般虛擬機不要與main主機混用;因此,要使用虛擬主機,
一般先禁用main主機
禁用方法:注釋中心主機的DocumentRoot指令即可
虛擬主機的配置方法:
<VirtualHost IP:PORT>
ServerName FQDN
DocumentRoot “/path”
</VirtualHost>
建議:上述配置存放在獨立的配置文件中
u其它可用指令:
ServerAlias:虛擬主機的別名;可多次使用
ErrorLog: 錯誤日志
CustomLog:訪問日志
<Directory “/path”> </Directory>
Alias
u基于IP的虛擬主機示例:
<VirtualHost 172.16.100.6:80>
ServerName www.a.com
DocumentRoot “/www/a.com/htdocs”
</VirtualHost>
<VirtualHost 172.16.100.7:80>
ServerName www.b.net
DocumentRoot “/www/b.net/htdocs”
</VirtualHost>
<VirtualHost 172.16.100.8:80>
ServerName www.c.org
DocumentRoot “/www/c.org/htdocs”
</VirtualHost>
基于FQDN的虛擬主機:
NameVirtualHost *:80 httpd2.4不需要此指令
<VirtualHost *:80>
ServerName www.a.com
DocumentRoot “/www/a.com/htdocs”
</VirtualHost>
<VirtualHost *:80>
ServerName www.b.net
DocumentRoot “/www/b.net/htdocs”
</VirtualHost>
<VirtualHost *:80>
ServerName www.c.org
DocumentRoot “/www/c.org/htdocs”
</VirtualHost>
uhttp協議
http/0.9, http/1.0, http/1.1, http/2.0
uhttp協議:stateless 無狀態
服務器無法持續追蹤訪問者來源
u解決http協議無狀態方法
cookie 客戶端存放
session 服務端存放
uhttp事務:一次訪問的過程
請求:request
響應:response
20、http響應報文
響應報文的開始行是狀態行。
狀態行包括三項內容:即HTTP對的版本,狀態碼。
以及解釋狀態碼的簡單短語。
報文語法格式:
urequest報文
<method> <request-URL> <version>
<headers>
<entity-body>
uresponse報文
<version> <status> <reason-phrase>
<headers>
<entity-body>
umethod: 請求方法,標明客戶端希望服務器對資源執行的動作
GET、HEAD、POST等
version:
HTTP/<major>.<minor>
ustatus:
三位數字,如200,301, 302, 404, 502; 標記請求處理過程中發生的情況
ureason-phrase:
狀態碼所標記的狀態的簡要描述
uheaders:
每個請求或響應報文可包含任意個首部;每個首部都有首部名稱,后面跟一
個冒號,而后跟一個可選空格,接著是一個值
uentity-body:請求時附加的數據或響應時附加的數據
uMethod 方法:
GET:從服務器獲取一個資源
HEAD:只從服務器獲取文檔的響應首部
POST:向服務器輸入數據,通常會再由網關程序繼續處理
PUT:將請求的主體部分存儲在服務器中,如上傳文件
DELETE:請求刪除服務器上指定的文檔
TRACE:追蹤請求到達服務器中間經過的代理服務器
OPTIONS:請求服務器返回對指定資源支持使用的請求方法
u協議查看或分析的工具:
tcpdump, wireshark,tshark
Httpd2.2常見連接配置:
持久連接。
業務量不大,非持久連接:
游戲網站,長期和服務器連接的,采用持久性連接。
默認的主頁面文件。
頁面跳轉命令:
日志頁面:
Curl -I ?向遠程服務器訪問,查看報文頭部。
不顯示版本信息;prod
21、http協議狀態碼分類
1)狀態碼分類:
Status(狀態碼):
100-101:信息提示
200-206成功
300-305 重定向
400-415錯誤信息,客戶端錯誤
500-505:錯誤類信息,服務器端錯誤
2)http協議的常用狀態碼
200:成功。請求數據通過響應報文的entity-body部分發送;OK
301:永久重定向。 ??域名不用了,域名會淘汰。請求的URL指向的資源已經被刪除;但在響應報文中通過首部
Location指明了資源現在所處的新位置;Moved Permanently
302:臨時重定向。 ?舊的域名還會使用,只是臨時跳轉。響應報文Location指明資源臨時新位置 Moved Temporarily
304:訪問過,本機有緩存??蛻舳税l出了條件式請求,但服務器上的資源未曾發生改變,則通過響應此響應狀態碼通知客戶端;Not Modified
401:需要輸入賬號和密碼。
403:請求被禁止
404:訪問的資源不存在
500:服務器內部錯誤:
502:后端服務器:代理服務器從后端服務器收到了一條偽響應,如無法連接到網關;Bad
Gateway
503:服務不可用,臨時服務器維護或過載,服務器無法處理請求
504:網關
22、首部字段
HTTP 首部字段包含的信息最為豐富。首部字段同時存在于請求和響應報文內,并涵蓋 HTTP 報文相關的內容信息。使用首部字段是為了給客服端和服務器端提供報文主體大小、所使用的語言、認證信息等內容
首部字段結構HTTP 首部字段是由首部字段名和字段值構成的,中間用冒號“:”
分隔
u 字段值對應單個 HTTP 首部字段可以有多個值
u 報文首部中出現了兩個或以上具有相同首部字段名的首部字段時,在規范內尚未明確,根據瀏覽器內部處理邏輯的不同,優先處理的順序可能不同,結果可能并不一致
u headers:
u 格式:
u Name: Value
Request URL:http://www.magedu.com/
Request Method:GET
Status Code:200 OK
Remote Address:101.200.188.230:80
Response Headers
view source
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=UTF-8
Date:Sun, 29 Jan 2017 14:32:30 GMT
Server:Tengine
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Pingback:http://www.magedu.com/xmlrpc.php
Request Headers
view source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0Connection:keep-aliveCookie:53gid2=10104634518015; 53gid0=10104634518015; 53gid1=10104634518015; 53revisit=1485699843851; 53uvid=1;
onliner_zdfq72145423=0; CNZZDATA1260642320=1664910013-1485697454-%7C1485697454; visitor_type=old;
53kf_72145423_keyword=; kf_72145423_keyword_ok=1; Hm_lvt_4a78dc1643884da1c990c4c878832e70=1485699844;
Hm_lpvt_4a78dc1643884da1c990c4c878832e70=1485700088Host:www.magedu.comUpgrade-Insecure-Requests:1User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.76
Safari/537.
23、http協議首部
首部的分類:
?通用首部:請求報文和響應報文兩方都會使用的首部
?請求首部:從客戶端向服務器端發送請求報文時使用的首部。補充了請求的附
加內容、客戶端信息、請求內容相關優先級等信息
?響應首部:從服務器端向客戶端返回響應報文時使用的首部。補充了響應的
附加內容,也會要求客戶端附加額外的內容信息
?實體首部:針對請求報文和響應報文的實體部分使用的首部。補充了資源內
容更新時間等與實體有關的的信息
?擴展首部
u通用首部:
Date: 報文的創建時間
Connection:連接狀態,如keep-alive, close
Via:顯示報文經過的中間節點(代理,網關)
Cache-Control:控制緩存,如緩存時長
MIME-Version:發送端使用的MIME版本
Warning:錯誤通知
請求首部:
Accept:通知服務器自己可接受的媒體類型
Accept-Charset: 客戶端可接受的字符集
Accept-Encoding:客戶端可接受編碼格式,如gzip
Accept-Language:客戶端可接受的語言
Client-IP: 請求的客戶端IP
Host: 請求的服務器名稱和端口號
Referer:跳轉至當前URI的前一個URL
User-Agent:客戶端代理,瀏覽器版本
條件式請求首部:
Expect:允許客戶端列出某請求所要求的服務器行為
If-Modified-Since:自從指定的時間之后,請求的資源是否發生過修改
If-Unmodified-Since:與上面相反
If-None-Match:本地緩存中存儲的文檔的ETag標簽是否與服務器文檔的Etag不
匹配
If-Match:與上面相反
u 安全請求首部:
Authorization:向服務器發送認證信息,如賬號和密碼
Cookie: 客戶端向服務器發送cookie
u 代理請求首部:
Proxy-Authorization: 向代理服務器認證
u響應首部:
?信息性:
Age:從最初創建開始,響應持續時長
Server:服務器程序軟件名稱和版本
?協商首部:某資源有多種表示方法時使用
Accept-Ranges:服務器可接受的請求范圍類型
Vary:服務器查看的其它首部列表
?安全響應首部:
Set-Cookie:向客戶端設置cookie
WWW-Authenticate:來自服務器對客戶端的質詢列表
實體首部:
Allow: 列出對此資源實體可使用的請求方法
Location:告訴客戶端真正的實體位于何處
Content-Encoding:對主體執行的編碼
Content-Language:理解主體時最適合的語言
Content-Length: 主體的長度
Content-Location: 實體真正所處位置
Content-Type:主體的對象類型,如text
緩存相關:
ETag:實體的擴展標簽
Expires:實體的過期時間
Last-Modified:最后一次修改的時間
24、Cookie
uHTTP 是一種無狀態協議。協議自身不對請求和響應之間的通信狀態進行保存。
也就是說在 HTTP 這個級別,協議對于發送過的請求或響應都不做持久化處理。
這是為了更快地處理大量事務,確保協議的可伸縮性,而特意把 HTTP 協議設
計成如此簡單的??墒请S著 Web 的不斷發展,很多業務都需要對通信狀態進行
保存。于是引入了 Cookie 技術。使用 Cookie 的狀態管理Cookie 技術通過在
請求和響應報文中寫入 Cookie 信息來控制客戶端的狀態。Cookie 會根據從服
務器端發送的響應報文內的一個叫做 Set-Cookie 的首部字段信息,通知客戶端
保存Cookie。當下次客戶端再往該服務器發送請求時,客戶端會自動在請求報
文中加入 Cookie 值后發送出去。服務器端發現客戶端發送過來的 Cookie 后,
會去檢查究竟是從哪一個客戶端發來的連接請求,然后對比服務器上的記錄,
最后得到之前的狀態信息
Set-Cookie首部
uSet-cookie首部字段示例:
Set-Cookie: status=enable; expires=Fri, 24 Nov 2017 20:30:02 GMT;
path=/;
uNAME=VALUE 賦予 Cookie 的名稱和其值,此為必需項
uexpires=DATE Cookie 的有效期,若不明確指定則默認為瀏覽器關閉前為止
upath=PATH 將服務器上的文件目錄作為Cookie的適用對象,若不指定則
默認為文檔所在的文件目錄
udomain=域名 作為 Cookie 適用對象的域名,若不指定則默認為創建
Cookie的服務器的域名
uSecure 僅在 HTTPS 安全通信時才會發送 Cookie
uHttpOnly 加以限制使 Cookie 不能被 JavaScript 腳本訪問
?
25、curl工具
curl工具
curl是基于URL語法在命令行方式下工作的文件傳輸工具,它支持FTP, FTPS,
HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等協議。curl支持HTTPS認
證,并且支持HTTP的POST、PUT等方法, FTP上傳, kerberos認證,HTTP上
傳,代理服務器,cookies,用戶名/密碼認證, 下載文件斷點續傳,上載文件斷
點續傳, http代理服務器管道( proxy tunneling),還支持IPv6,socks5代理服
務器,通過http代理服務器上傳文件到FTP服務器等,功能十分強大
ucurl [options] [URL…]
-A/–user-agent <string> 設置用戶代理發送給服務器
-e/–referer <URL> 來源網址
–cacert <file> CA證書 (SSL)
-k/–insecure 允許忽略證書進行 SSL 連接
curl工具常用選項
–compressed 要求返回是壓縮的格式
-H/–header <line>自定義首部信息傳遞給服務器
-i 顯示頁面內容,包括報文首部信息
-I/–head 只顯示響應報文首部信息
-D/–dump-header <file>將url的header信息存放在指定文件中
–limit-rate <rate> 設置傳輸速度
–basic 使用HTTP基本認證
-u/–user <user[:password]>設置服務器的用戶和密碼
-L 如果有3xx響應碼,重新發請求到新位置
-o <file> 將網絡文件保存為指定的文件中
-O 使用URL中默認的文件名保存文件到本地
-0/–http1.0 使用HTTP 1.0
curl工具常用選項
-C – 選項可對文件使用斷點續傳功能
-c/–cookie-jar <file name> 將url中cookie存放在指定文件中
-x/–proxy <proxyhost[:port]> 指定代理服務器地址
-X/–request <command> 向服務器發送指定請求方法
-U/–proxy-user <user:password> 代理服務器用戶和密碼
-T 選項可將指定的本地文件上傳到FTP服務器上
–data/-d 方式指定使用POST方式傳遞數據
-b name=data 從服務器響應set-cookie得到值,返回給服務器
26、mod_deflate模塊
使用mod_deflate模塊壓縮頁面優化傳輸能力。
指定壓縮比。
適用場景:
(1) 節約帶寬,額外消耗CPU;同時,可能有些較老瀏覽器不支持
(2) 壓縮適于壓縮的資源,例如文本文件
LoadModule deflate_module modules/mod_deflate.so SetOutputFilter DEFLATE
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
uLevel of compression (Highest 9 – Lowest 1)
uDeflateCompressionLevel 9
u排除特定舊版本的瀏覽器,不支持壓縮
Netscape 4.x 只壓縮text/html
BrowserMatch ^Mozilla/4 gzip-only-text/html
Netscape 4.06-08三個版本 不壓縮
BrowserMatch ^Mozilla/4\.0[678] no-gzip
Internet Explorer標識本身為“Mozilla / 4”,但實際上是能夠處理請求的壓縮。
如果用戶代理首部匹配字符串“MSIE”(“B”為單詞邊界”),就關閉之前定
義的限制
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
27、https
u https:http over ssl
u SSL會話的簡化過程
(1) 客戶端發送可供選擇的加密方式,并向服務器請求證書
(2) 服務器端發送證書以及選定的加密方式給客戶端
(3) 客戶端取得證書并進行證書驗證
如果信任給其發證書的CA
(a) 驗證證書來源的合法性;用CA的公鑰解密證書上數字簽名
(b) 驗證證書的內容的合法性:完整性驗證
(c) 檢查證書的有效期限
(d) 檢查證書是否被吊銷
(e) 證書中擁有者的名字,與訪問的目標主機要一致
(4) 客戶端生成臨時會話密鑰(對稱密鑰),并使用服務器端的公鑰加密此數據發送給服務器,
完成密鑰交換
(5) 服務用此密鑰加密用戶請求的資源,響應給客戶端
u 注意:SSL是基于IP地址實現,單IP的主機僅可以使用一個https虛擬主機
28、https實現
(1) 為服務器申請數字證書
測試:通過私建CA發證書
(a) 創建私有CA
(b) 在服務器創建證書簽署請求
(c) CA簽證
u (2) 配置httpd支持使用ssl,及使用的證書
yum -y install mod_ssl
配置文件:/etc/httpd/conf.d/ssl.conf
DocumentRoot
ServerName
SSLCertificateFile
SSLCertificateKeyFile
u (3) 測試基于https訪問相應的主機
openssl s_client [-connect host:port] [-cert filename] [-CApath directory] [-CAfile
filename]
29、http重定向https
u將http請求轉發至https的URLu
重定向Redirect [status] URL-path URLu
status狀態:?Permanent:Returns a permanent redirect status (301) indicating that the resource
has moved permanently?Temp:Returns a temporary redirect status (302). This is the defaultu示例:Redirect temp / https://www.magedu.co
http over ssl
https的實現:
yum install mod_ssl ??安裝證書模塊。
30、HSHS
HSTS:HTTP Strict Transport Security
服務器端配置支持HSTS后,會在給瀏覽器返回的HTTP首部中攜帶
HSTS字段。瀏覽器獲取到該信息后,會將所有HTTP訪問請求在內部
做307跳轉到HTTPS。而無需任何網絡過程
u HSTS preload list
是Chrome瀏覽器中的HSTS預載入列表,在該列表中的網站,使用
Chrome瀏覽器訪問時,會自動轉換成HTTPS。Firefox、Safari、
Edge瀏覽器也會采用這個列表
u 實現HSTS示例:
vim /etc/httpd/conf/httpd.conf
Header always set Strict-Transport-Security “max-age=15768000”
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
31、httpd自帶的工具程序
uhttpd自帶的工具程序
htpasswd:basic認證基于文件實現時,用到的賬號密碼文件生成工具
apachectl:httpd自帶的服務控制腳本,支持start和stop
rotatelogs:日志滾動工具
access.log –>
access.log, access.1.log –>
access.log, acccess.1.log, access.2.log
32、httpd的壓力測試工具
httpd的壓力測試工具
?ab, webbench, http_load, seige
?Jmeter 開源
?Loadrunner 商業,有相關認證
?tcpcopy:網易,復制生產環境中的真實請求,并將之保存
?ab [OPTIONS] URL
來自httpd-tools包
-n:總請求數
-c:模擬的并行數
-k:以持久連接模式測試
ulimit –n # 調整能打開的文件數
Ssl會話的簡化過程:
私鑰和公鑰是成對使用的。
CA:整數信任機構。
33、httpd-2.4
u新特性
? MPM支持運行為DSO機制;以模塊形式按需加載
?event MPM生產環境可用
?異步讀寫機制
?支持每模塊及每目錄的單獨日志級別定義
?每請求相關的專用配置
?增強版的表達式分析式
?毫秒級持久連接時長定義
?基于FQDN的虛擬主機不需要NameVirutalHost指令
?新指令,AllowOverrideList
?支持用戶自定義變量
?更低的內存消耗
u修改了一些配置機制
不再支持使用Order, Deny, Allow來做基于IP的訪問控制
u新模塊
?(1) mod_proxy_fcgi
FastCGI Protocol backend for mod_proxy
?(2) mod_remoteip
Replaces the apparent client remote IP address and hostname for the request
with the IP address list presented by a proxies or a load balancer via the request
headers.
?(3) mod_ratelimit
Provides Bandwidth Rate Limiting for Clients
34、centos7httpd程序環境
CentOS 7:httpd-2.4
u 安裝方法:rpm,編譯安裝
u Rpm安裝程序環境:
? 配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
? 模塊相關的配置文件:
/etc/httpd/conf.modules.d/*.conf
? systemd unit file:
/usr/lib/systemd/system/httpd.service
? 主程序文件:
/usr/sbin/httpd
httpd-2.4支持MPM的動態切換
日志文件:
/var/log/httpd
access_log:訪問日志
error_log:錯誤日志
u站點文檔:
/var/www/html
u模塊文件路徑:
/usr/lib64/httpd/modules
u服務控制:
systemctl enable|disable httpd.service
systemctl {start|stop|restart|status} httpd.service
httpd-2.4配置u配置應用:u
(1) 切換使用的MPM? Centos 7:/etc/httpd/conf.modules.d/00-mpm.conf
啟用要啟用的MPM相關的LoadModule指令即可?
centos6編譯安裝: vim /etc/httpd24/httpd.conf
Include /etc/httpd24/extra/httpd-mpm.conf
LoadModule mpm_event_module modules/mod_mpm_event.sou
(2)主目錄: DocumentRoot /pa
u(3) 基于IP的訪問控制:
無明確授權的目錄,默認拒絕
允許所有主機訪問:Require all granted
拒絕所有主機訪問:Require all denied
控制特定的IP訪問:
Require ip IPADDR:授權指定來源的IP訪問
Require not ip IPADDR:拒絕特定的IP訪問
控制特定的主機訪問:
Require host HOSTNAME:授權特定主機訪問
Require not host HOSTNAME:拒絕
HOSTNAME:
FQDN:特定主機
domin.tld:指定域名下的所有主機
u不能有失敗,至少有一個成功匹配才成功,即失敗優先
<RequireAll>
Require all granted
Require not ip 172.16.1.1 拒絕特定IP
</RequireAll>
u多個語句有一個成功,則成功,即成功優先
<RequireAny>
Require all denied
require ip 172.16.1.1 允許特定IP
</RequireAny>
u(4) 虛擬主機
基于FQDN的虛擬主機不再需要NameVirutalHost指令
<VirtualHost *:80>
ServerName www.b.net
DocumentRoot “/apps/b.net/htdocs”
<Directory “/apps/b.net/htdocs”>
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
注意:任意目錄下的頁面只有顯式授權才能被訪問
u(4) ssl:安裝mod_ssl,和httpd-2.2相同配置
u(5) KeepAlive on
KeepAliveTimeout #ms
MaxKeepAliveRequests 100
毫秒級持久連接時長定義
35、APR
uAPR(Apache portable Run-time libraries,Apache可移植運行庫) 主要為上
層的應用程序提供一個可以跨越多操作系統平臺使用的底層支持接口庫。在早
期的Apache版本中,應用程序本身必須能夠處理各種具體操作系統平臺的細節,
并針對不同的平臺調用不同的處理函數
u隨著Apache的進一步開發,Apache組織決定將這些通用的函數獨立出來并發
展成為一個新的項目。這樣,APR的開發就從Apache中獨立出來,Apache僅
僅是使用 APR而已。目前APR主要還是由Apache使用,由于APR的較好的移植
性,因此一些需要進行移植的C程序也開始使用APR,開源項目比如用于服務器
壓力測試的Flood loader tester,該項目不僅僅適用于Apache,
http://httpd.apache.org/test/flood
36、centos6編譯安裝httpd-2.4
u安裝httpd-2.4
?依賴于apr-1.4+, apr-util-1.4+, [apr-iconv]
?apr: apache portable runtime,解決跨平臺實現
?CentOS 6:默認:apr-1.3.9, apr-util-1.3.9
u安裝前準備開發包:
?開發環境包組:
Development Tools,Server
相關包:pcre-devel,openssl-devel expat-devel
u下載源代碼并解壓縮:
httpd-2.4.27.tar.bz2
apr-1.6.2.tar.bz2
apr-util-1.6.0.tar.bz2
方法一:
u安裝apr-1.4+cd apr-1.6.2./configure –prefix=/app/aprmake && make installu安裝apr-util-1.4+cd ../apr-util-1.6.0./configure –prefix=/app/apr-util –with-apr=/app/apr/make -j 2 && make insta
u編譯安裝httpd-2.4cd ../httpd-2.4.27./configure –prefix=/app/httpd24 –enable-so –enable-ssl –enable-cgi –enablerewrite –with-zlib –with-pcre –with-apr=/app/apr/ –with-apr-util=/app/apr-util/ –enable-modules=most –enable-mpms-shared=all –with-mpm=preforkmake -j 4 && make insta
方法二:
ucp -av apr-1.6.2 httpd-2.4.27/srclib/aprucp -av apr-util-1.6.0 httpd-2.4.27/srclib/apr-utilucd httpd-2.4.27/
./configure –prefix=/app/httpd24 –enable-so –enable-ssl –enable-cgi –enable-rewrite –with-zlib –with-pcre –with-includedapr –enable-modules=most –enable-mpms-shared=all –withmpm=prefork
make && make installuHttpd編譯過程:/usr/local/apache24/build/config.niceu自帶的服務控制腳本:/usr/local/httpd24/bin/apachec
vim /etc/profile.d/httpd24.sh
export PATH=/app/http24/bin:$PATH
u vim /etc/man.config
MANPATH /usr/local/apache24/man
u 自定義啟動腳本(參考httpd-2.2的服務腳本)
cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24
vim /etc/rc.d/init.d/httpd24
apachectl=/usr/local/httpd24/bin/apachectl
httpd=${HTTPD-/usr/local/httpd24/bin/httpd}
pidfile=${PIDFILE-/usr/local/httpd24/logs/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
chkconfig –add httpd24 ;chkconfig –list httpd24
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/100243