http協議
--------------------------------------------------
實驗:
Yum install httpd php php-mysql mariadb-server //安裝相關文件
啟動httpd以及mariadb服務,並關閉防火牆以及selinux;
Systemctl start httpd
Systemctl start mariadb
Iptables -F
Systemctl stop firewalld
Seteforce 0
測試是否安裝成功
Vim /var/www/html/index.php
<?php
Phpinfo();
?>
訪問,能夠看到php的測試主頁面即可
http://192.168.94.130
vim /var/www/html/index.php
<?php
$conn=mysql_connect(‘127.0.0.1’,’root’);
If ($conn)
Echo “ok”;
Else
Echo “false”;
Mysql_close();
?>
訪問,能夠看到php的測試數據顯示ok則表示正確;
在數據庫上創建用戶;
Mysql
Grant all on wpdb.* to ‘wpuser’@’localhost’ identified by ‘wppasswd’;
Grant all on wpdb.* to ‘wpuser’@’127.0.0.1’ identified by ‘wppasswd’;
Create database wpdb;
Flush privileges;
Exit
查看用戶是否添加成功
Mysql -uwpuser -pwppasswd
Show databases;
修改wordpress的配置文件
Unzip workpress-4.3.1-zh_CN.zip
Cp -a wordpress /var/www/html/
Cd /var/www/html/wardpress
Cp wp-config-sample.php wp-config.php
添加數據庫,用戶,以及密碼
Vim wp-config.php
Define(‘DB_NAME’, ‘wpdb’);
Define(‘DB_USER’, ‘wpuser’);
Define(‘DB_PASSWORD’, ‘wppasswd’);
訪問測試:
在流量器上訪問:http://192.168.94.130/wdpress
---------------------------------------------------------------------------------------
1、套接字 (進程間通訊)
tcp/ip -- osi
應用層 --> 資源子網 (提供正真客戶所需要的資源信息 -- 應用層!)
--------
傳輸層 --> tcp udp
網絡層 --> 通訊子網 (內核提供)
主機到主機層
套接字概念:關聯應用層資源與底層的網絡;使得,不同主機之間能夠實現應用數據的交互;
所有進程間通訊的機制,我們都叫做IPC機制(進程間通訊);套接字只是 IPC 機制中的一種而已;
常見的IPC通訊機制:
1、MQ -- 消息隊列
2、socker 套接字
3、single 信號
4、共享內存
分類:
根據數據包封裝的情況分類:
1、SOCK_STREAM tcp的套接字
2、SOCK_DGRAM udp的套接字
3、SOCK_RAM 裸套接字
地址簇來進行分類:
1、IPV6的套接字
2、IPV4的套接字
3、UNIX的套接字
我們也可以將套接字理解為內核的系統調用 -- system call(C語言開發相關的底層代碼 -- 類似於函數):
編譯型(面向過程的)的編譯語言的調用 -- 函數
解釋型(面向對象的)的編程語言的調用 -- 類
套接字相關的應用:
socket() 創建套接字
listen() 監聽
accept() 接受請求
connect() 請求連接建立
write() 發送數據
read() 從緩存中接受數據
我們http協議,使用B/S架構(瀏覽器與服務器架構)就需要通過套接字的方式進行數據傳輸!!!
http://www.baidu.com/... -- URL
/... --> 指定資源 URI
http --> 協議
www --> 提供指定服務的主機的主機名
baidu.com --> 域名
2、http協議基礎
超文本傳輸協議
默認情況下,http協議就是用來實現客戶端與服務端的數據傳輸(文本);
【流浪器必須安裝插件】
<html>
<head>
<title>Title</title>
</head>
<body>
<h1></h1>
<p> 內容 <a href="http://www.magedu.com/log.jpg"> 內容 </a> </p>
<h2></h2>
</body>
</html>
http默認只能傳輸文本文件 數據流
|
html css javascriptes //標簽語言 -- 更好的規划文本格式! ,xml注入攻擊
|
MIME
Multipurpose Internet Mail Extensions : 多用途互聯網郵件擴展類型
用來展示圖片以及視頻數據;
默認情況下,在傳輸的過程中,依然文本流量;
MIME只用作將文本與視頻及圖片進行轉換;
工作機制
首先會建立TCP連接,http tcp80端口;C -- > S:80
http請求
http響應
注意:請求是有很多的,(前端語言將很多的資源進行划分,而固定的服務器,只提供固定資源)
所以,有可能請求了一次,但是實際上生成了很多的進程;
http支持MPM (多處理模塊)
因為http提供的訪問進程數量有限,所以,我們需要啟用一些訪問機制,能夠處理高並發流量;
MPM模塊支持三種模式:
prefork -- 默認模式,隊列模式
worker -- 多線程模式
event -- 多線程並發處理模式
每一個請求,我都叫一個IO;
修改MPM模式:
特性:http服務的MPM模式是在服務啟動的那一刻加載進來的。
目錄:/etc/sysconfig/httpd -- http -2.2
-- http -2.4
#HTTPD=/usr/sbin/httpd.worker
去掉 # 即可;
必須重新加載配置,這樣才能生效;
ps aux | grep httpd //查看當前所起的進程
【注意:web服務是不能隨便重啟!!!】
相關的配置文件可以在 /etc/httpd/conf/httpd.conf 文件中去設置;
除了event模式沒有--因為這種並不穩定,不建議使用;
請求資源
首先明白:如何識別這些資源 -- 文件后綴來識別;
靜態資源 -- 圖片 jpg png 、文字 .txt .doc 、視屏 avi mp4 rmvd flv
*動態資源 -- .php ... *
LAMP / LNMP / LAMMP / LNMMP -- memcache
php -- 加速器
httpd優化 -- 權限限制、MPM的訪問模式、虛擬主機搭建。。。
http的版本 -- (不加密)
HTTP協議版本:
HTTP/0.9 最早的被廣泛采用的版本 原型版本,不支持多媒體內容
HTTP/1.0 第一個廣泛使用的版本,現在依然被使用,能支持多媒體,但是緩存機制不行
*HTTP/1.1 增強了緩存功能*當前使用的版本;
HTTP/2.0 2001年就出來了,現在基於web的應用多數使用HTTP/2.0版本(新版本),它參考了谷歌的spdy協議,所以我們有理由相信HTTP/2.0會被廣泛使用
默認安裝的都是2.0版本;
---------------------------------------------------------------
HTTP協議:
TCP 80 http://192.168.94.128 - URL
URL介紹
URL的完整格式:
協議類型://用戶名,密碼@hostname:port/URI;參數值?查詢請求#標記
示例:https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1
URL包含URI,由URI來定義所要訪問資源的具體位置;
URN和URL是一個並列的東西(不做了解)
*cookie機制
cookie分類:
永久cookie -- 把cookie值存在硬盤上(這里需要指定cookie的保存時間)
臨時cookie -- 把cookie值保存在內存上(重啟流量器即失效)
cookie非常不安全
HTTP事務
請求 request 和相應 replay,一個請求和一個相應合起來,我們叫做一個HTTP事務;
(事務:一次完整的會話,或者工作,才能被稱為一個事務;)
mysql
A ---------------------> B
1000 500
1000-300=700 ----------> 500+300=800
mysql -- 事務回滾
報文格式 -- http的請求報文 http的應答報文
http 請求報文:
首行信息: 模式 URI 版本信息
頭部信息: 頭部
請求主體: 實體信息
http 應答報文:
首行信息: 版本信息 狀態碼 原因短語
200 OK
頭部信息:
應答主體:
method(模式):
GET 普通的請求
HEAD 之請求網站的頭部信息
POST 推送用戶名或密碼的時候使用的
PUT 推送比較大的資源的時候使用的
DELETE 發起刪除對應資源的命令
TARCE 容許客戶端查看,被修改后的http請求報文(因為中間通過了代理服務器,而代理服務器會修改我們的請求表文)
OPTIONS 客戶端去咨詢服務器端所能支持模式;
還有其他很多的擴展模式 -- 例如:MOVE LOCK 等等。
version:http的版本
常見使用的版本為 1.1
status:相應狀態碼,例如200,301,302,404,502
100-199 表示服務器信息回應 100 101
200-299 表示成功的請求
常見的--200 ok 201 create
300-399 表示重定向
301 請求的URL指向的資源已經被刪除:但在響應報文中通過首部Location指明了資源現在所處的新位置;這個是永久重定向:Moved Permently
302 與301相似,但是在響應報文中,通過Location指明了資源現在所處的臨時新位置;Found
304 客戶端發出了條件式請求,但是服務器發現客戶端的緩存資源未曾發生改變,則通過響應狀態碼通知客戶端:Not Modified
400-499 客戶端錯誤狀態碼
401 需要輸入賬號和密碼認證方能訪問資源,Unauthorizad
403 請求被禁止:forbidden
404 服務器無法找到客戶端請求的資源:Not Found
500-599 服務器端錯誤
500 服務器內部錯誤:Internal Server Error
502 代理服務器從后端服務器收到一條偽響應,Bad Gatway
reason-phrase(原因短語):狀態碼說明
如上