日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

socket和http协议

發布時間:2024/4/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 socket和http协议 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

web? service? 之http基礎原理

web?? service

mac:設備與設備之間的通信,主機與路由器,路由器與路由器

ip:主機與主機

tcp/utp:傳輸層:提供進程地址

tcp:傳輸控制協議,面向連接的協議,通信前需要建立虛擬鏈路,建立三次握手

utp:無連接的協議:

socket:套接字:IPC的一種實現通信,允許位于同一主機或不同主機間進程之間進行通信,數據交換,socket? api

SOCK_SITEAM:tcp套接字

SOCK_DGRAM:udp套接字

SOCK_RAW:裸套接字

0-1023:永久的分配給固定的應用使用,22/tcp(ssh),只能使用root來啟動

1024-41951:為注冊端口,要求不嚴格,分配給程序注冊為某應用使用

41951+:客戶端程序隨機端口:動態端口,私有端口

?/proc/sys/net/ipv4/ip_local_port_range?? --用于向外連接的端口范圍

socket? Domain(根據其所使用的 地址):

????? AF_INET:address? Family,IPv4

????? AF_unix:同一個主機間的通信(客戶機和主機在同一主機)不同進程

每類套接字都至少提供了兩種socket:流(tcp),數據報(utp)

流:可靠地傳遞,面向連接,無邊界

數據報:不可靠地傳遞,有邊界,無連接

套接字相關的系統調用:

?????? socket(0:創建一個套接字

?????? bind():綁定

?????? listen():監聽

?????? accept():接收請求

?????? connect():請求連接建立

?????? write():發動

?????? read():接收


http協議

http:hyper? text? transfer protocol??? 超文本標記語言

?????? html:編程語言,超文本標記語言

?????? css:Cascading?? Style? sheet

?????? js:javascript(在瀏覽器執行的腳本)

????? MIME:多用途互聯網擴展----實現通過文本格式發送非文本格式數據

web資源:web? resource

???? 靜態文件:jpg,.gif,.html,.txt,.js,.css,mp3,

???? 動態文件:-php,jsp

???? 媒體:

????????? 媒體類型(MIME類型):maior/minor

URL:是Uniform Resoure Locator(統一資源定位器)的縮寫。就是WWW頁的地址。

其URL地址格式排列為:scheme://host:Port/path
一次完整的http請求過程:

??? (1):建立連接服務端接收客戶端請求:

??? (2):接收請求:接收來自于網絡的請求報文中對某資源的一次請求的過程

???????? 并發訪問響應模型(web? I/O)

??????? 單進程I/0結構:啟動一個進程處理用戶請求,而且一次只處理一個,多個請求被串行響應

???????? 多進程I/0結構,并行多啟動多個進程,每個進程響應一個請求

???????? 復用I/O結構:一個進程處理多個用戶請求

???????????????????? 多線程模型: 一個進程生成多個線程,線程處理用戶請求

????????? 復用的多進程I/O結構,生成多個進程,每個進程生成線程處理多個請求??????????

??? (3):處理請求:對請求的資源進程解析,并獲取請求的資源以及請求方法等相關信息

????????????????????? 元數據;請求報文首部

???????????????????????????????? <methed>? <URL> <version>

???????????????????????????????? host:www.baidu.com? 請求的主機名稱

??? (4):獲取資源(訪問資源):獲取請求報文中請求的資源

???????????????????? web服務器:即存放了web資源的服務器,負責向請求者提供對方請求的靜態資源

???????????????????? 或動態運行后生成的資源,這些資源放置于本地文件系統某路徑下,,


? ? (5):構建相應報文

? ? (6):發送響應報文

? ? (7):記錄日志

?

httpd:apache

httpd
centos 6? yum包 2.2
centos 7? yum包? 2.4
安裝方式:
rpm和編譯安裝
centos 6 :
程序環境
配置文件:/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、修改監聽的ip和Port
?????? Listen [ip:port]
2、持久連接
??? Persistent? Conection:連接建立,每個資源獲取完成后不會斷開連接,而是繼續等待其它的資源請求
???? 斷開:
???????? KeepAlive Off是否持續連接
???????? KeepAliveTimeout 15? 斷開連接前的時間
?? ??? ?測試:
???????????? telnet? HOST port
???????????? get? hhtP/1.1
???????????? host:hostname or? ip
3、MPM
?? ?httpd2.2默認事prefork,?? ? 查看靜態默認的模塊
?? ?httpd? -l
?? ?查看靜態編譯以及動態裝載的模塊
?? ?httpd? -M
?? ?更改模塊的文件/etc/sysconfig/httpd/
PV:page? view? 頁面
UV:user? view? 用戶

4、DSO? 動態共享對象
路徑/usr/lib64/httpd/modules
配置指令實現模塊加載
LoadModule? <mod_name>?? <mod_path>?? 路徑可用于相對路徑/etc/httpd/co

5、定義'Main'? server的文檔頁面路徑
DocumentRoot
文檔路徑映射:
DocumentRoot? 指向路徑為URL路徑的起始位置
DocumentRoot "/var/www/html"


6、站點訪問控制
可基于兩種類型的路徑指明對哪些資源進行訪問控制
?文件系統路徑:
????? <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: 客戶端用戶填入賬號和密碼后再次發送請求報文,認證通過,則服務器響應的資源
認證類型:
??? 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、內置的status頁面





?? ?

轉載于:https://blog.51cto.com/10744927/1884881

總結

以上是生活随笔為你收集整理的socket和http协议的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。