socket和http协议
web? service? 之http基礎原理
web?? service
mac:設備與設備之間的通信,主機與路由器,路由器與路由器
ip:主機與主機
tcp/utp:傳輸層:提供進程地址
tcp:傳輸控制協(xié)議,面向連接的協(xié)議,通信前需要建立虛擬鏈路,建立三次握手
utp:無連接的協(xié)議:
socket:套接字:IPC的一種實現(xiàn)通信,允許位于同一主機或不同主機間進程之間進行通信,數(shù)據(jù)交換,socket? api
SOCK_SITEAM:tcp套接字
SOCK_DGRAM:udp套接字
SOCK_RAW:裸套接字
0-1023:永久的分配給固定的應用使用,22/tcp(ssh),只能使用root來啟動
1024-41951:為注冊端口,要求不嚴格,分配給程序注冊為某應用使用
41951+:客戶端程序隨機端口:動態(tài)端口,私有端口
?/proc/sys/net/ipv4/ip_local_port_range?? --用于向外連接的端口范圍
socket? Domain(根據(jù)其所使用的 地址):
????? AF_INET:address? Family,IPv4
????? AF_unix:同一個主機間的通信(客戶機和主機在同一主機)不同進程
每類套接字都至少提供了兩種socket:流(tcp),數(shù)據(jù)報(utp)
流:可靠地傳遞,面向連接,無邊界
數(shù)據(jù)報:不可靠地傳遞,有邊界,無連接
套接字相關的系統(tǒng)調(diào)用:
?????? socket(0:創(chuàng)建一個套接字
?????? bind():綁定
?????? listen():監(jiān)聽
?????? accept():接收請求
?????? connect():請求連接建立
?????? write():發(fā)動
?????? read():接收
http協(xié)議
http:hyper? text? transfer protocol??? 超文本標記語言
?????? html:編程語言,超文本標記語言
?????? css:Cascading?? Style? sheet
?????? js:javascript(在瀏覽器執(zhí)行的腳本)
????? MIME:多用途互聯(lián)網(wǎng)擴展----實現(xiàn)通過文本格式發(fā)送非文本格式數(shù)據(jù)
web資源:web? resource
???? 靜態(tài)文件:jpg,.gif,.html,.txt,.js,.css,mp3,
???? 動態(tài)文件:-php,jsp
???? 媒體:
????????? 媒體類型(MIME類型):maior/minor
URL:是Uniform Resoure Locator(統(tǒng)一資源定位器)的縮寫。就是WWW頁的地址。
其URL地址格式排列為:scheme://host:Port/path
一次完整的http請求過程:
??? (1):建立連接服務端接收客戶端請求:
??? (2):接收請求:接收來自于網(wǎng)絡的請求報文中對某資源的一次請求的過程
???????? 并發(fā)訪問響應模型(web? I/O)
??????? 單進程I/0結(jié)構(gòu):啟動一個進程處理用戶請求,而且一次只處理一個,多個請求被串行響應
???????? 多進程I/0結(jié)構(gòu),并行多啟動多個進程,每個進程響應一個請求
???????? 復用I/O結(jié)構(gòu):一個進程處理多個用戶請求
???????????????????? 多線程模型: 一個進程生成多個線程,線程處理用戶請求
????????? 復用的多進程I/O結(jié)構(gòu),生成多個進程,每個進程生成線程處理多個請求?????????? 
??? (3):處理請求:對請求的資源進程解析,并獲取請求的資源以及請求方法等相關信息
????????????????????? 元數(shù)據(jù);請求報文首部
???????????????????????????????? <methed>? <URL> <version>
???????????????????????????????? host:www.baidu.com? 請求的主機名稱 
??? (4):獲取資源(訪問資源):獲取請求報文中請求的資源
???????????????????? web服務器:即存放了web資源的服務器,負責向請求者提供對方請求的靜態(tài)資源
???????????????????? 或動態(tài)運行后生成的資源,這些資源放置于本地文件系統(tǒng)某路徑下,,
? ? (5):構(gòu)建相應報文
? ? (6):發(fā)送響應報文
? ? (7):記錄日志
? 
httpd:apache
httpd
centos 6? yum包 2.2
centos 7? yum包? 2.4
安裝方式:
rpm和編譯安裝
centos 6 :
程序環(huán)境
配置文件:/etc/httpd/conf/httpd.conf/httpd 
????????? /etc/httpd/conf/http.d/*.conf
服務腳本: /etc/init.d/httpd/
????????? 配置文件:/etc/sysconfig/httpd/
主程序文件:
????????? /usr/sbin/httpd
?? ??? ?? /usr/sbin/httpd.event
?? ??? ?? /usr/sbin/httpd.worker
日志文件目錄:
????????? /var/log/httpd 
?? ??? ???????? access_log:訪問日志
?? ??? ??? ??? ?error_log:錯誤日志
站點文檔目錄:
?????????? /var/www/html
[root@servername1 yum.repos.d]# grep? "Section"?? /etc/httpd/conf/httpd.conf 
### Section 1: Global Environment
### Section 2: 'Main' server configuration
### Section 3: Virtual Hosts
常用配置:
1、修改監(jiān)聽的ip和Port
?????? Listen [ip:port]
2、持久連接
??? Persistent? Conection:連接建立,每個資源獲取完成后不會斷開連接,而是繼續(xù)等待其它的資源請求
???? 斷開:
???????? KeepAlive Off是否持續(xù)連接
???????? KeepAliveTimeout 15? 斷開連接前的時間
?? ??? ?測試:
???????????? telnet? HOST port
???????????? get? hhtP/1.1
???????????? host:hostname or? ip
3、MPM
?? ?httpd2.2默認事prefork,?? ? 查看靜態(tài)默認的模塊
?? ?httpd? -l
?? ?查看靜態(tài)編譯以及動態(tài)裝載的模塊
?? ?httpd? -M
?? ?更改模塊的文件/etc/sysconfig/httpd/
PV:page? view? 頁面
UV:user? view? 用戶
4、DSO? 動態(tài)共享對象
路徑/usr/lib64/httpd/modules
配置指令實現(xiàn)模塊加載
LoadModule? <mod_name>?? <mod_path>?? 路徑可用于相對路徑/etc/httpd/co
5、定義'Main'? server的文檔頁面路徑
DocumentRoot
文檔路徑映射:
DocumentRoot? 指向路徑為URL路徑的起始位置
DocumentRoot "/var/www/html"
6、站點訪問控制
可基于兩種類型的路徑指明對哪些資源進行訪問控制
?文件系統(tǒng)路徑:
????? <Directort? "">? </Directort
? URl路徑:
????? <Location? "">?? </Location>
訪問控制機制:
?? 基于來源地址
??? 基于賬號
7、定義默認主頁面
? DirectoryIndex index.html index.html.var?? ?
?Options Indexes 通過索引來獲取頁面
? FollowSymLinks? 允許跟蹤符號連接文件;
8、日志設定
錯誤日志路徑: /etc/httpd/logs/error_log
錯誤日志的級別:
???? debug,info,notice,warn,error,crit,alert,emerg
訪問日志路徑?? /etc/httpd/logs/access_log
日志格式:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
%h:客戶端地址
9、基于用戶的訪問控制
認證機制:WWW-Authenticate:響應嗎為401,拒絕客戶端請求,并要求用戶提供賬號和密碼
認證:Authorization: 客戶端用戶填入賬號和密碼后再次發(fā)送請求報文,認證通過,則服務器響應的資源
認證類型:
??? basic:明文
?? ?digest:消息摘要
10、虛擬主機
有三種方式:
??? 基于IP:
????????? 為每個虛擬主機準備至少一個ip地址:
??? 基于port:
????????? 為每個虛擬機主機準備至少一個專用port,實踐中很少使用
??? 基于hostnaem:
????????? 為每個虛擬主機準備至少一個專用hostname
注意:一般使用虛擬主機,先禁用中心主機,
?禁用中心主機:注釋DocumentRoot
每個虛擬主機都有專用配置:
?<VirtuaHost "IP:PORT">
?????? ServerName
?? ??? DocumentRoot""
?<VirtuaHost>
?ServerAlias:虛擬主機的別名:
?Errorlog
?CustomLog
?<Directory "">
?</Directory>
?基于IP 的虛擬主機:
?1、注釋中心主機的頁面
?2、
?<VirtualHost 192.168.1.221:80>
?? ServerName?? server1
?? DocumentRoot? "/vhosts/web1/htdocs"
</VirtualHost>
<VirtualHost 192.168.1.222:80>
?? ServerName?? server1
?? DocumentRoot? "/vhosts/web2/htdocs"
</VirtualHost>
基于端口的虛擬主機:
1、注釋中心主機的頁面
2、
<VirtualHost 192.168.1.221:80>
?? ServerName?? server1
?? DocumentRoot? "/vhosts/web1/htdocs"
</VirtualHost>
<VirtualHost 192.168.1.221:8080>
?? ServerName?? server1
?? DocumentRoot? "/vhosts/web2/htdocs"
</VirtualHost>
基于主機名的虛擬主機
1、開啟NameVirtualHost *:80 ?
2、<VirtualHost 192.168.1.221:80>
?? ServerName???? web1.magedu.com
?? DocumentRoot? "/vhosts/web1/htdocs"
</VirtualHost>
<VirtualHost 192.168.1.221:80>
?? ServerName???? web2.magedu.com
?? DocumentRoot? "/vhosts/web2/htdocs"
</VirtualHost>
11、內(nèi)置的status頁面
?? ? 
轉(zhuǎn)載于:https://blog.51cto.com/10744927/1884881
總結(jié)
以上是生活随笔為你收集整理的socket和http协议的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 切换控制器的三种手段push modal
- 下一篇: EF错误记录
