整理了一些關於PHP相關的基礎。請你們隨意摘看。php
網絡通訊協議是一種網絡通用語言,爲鏈接不一樣操做系統和不一樣硬件體系結構的互聯網絡引提供通訊支持,是一種網絡通用語言。
名稱 | 註釋 |
---|---|
HTTP | Hypertext Transfer Protocol 超文本傳輸協議,顯示網頁 |
DNS | Domain Name System 域名系統 |
FTP | File Transfer Protocol 文件傳輸協議 |
SFTP | SSH File Transfer Protocol 安全文件傳送協議 |
SSH | Secure Shell |
名稱 | 註釋 |
---|---|
TCP | Transmission Control Protocol 三次握手傳輸協議 |
UDP |
名稱 | 註釋 |
---|---|
IP | Internet Protocol |
ICMP | Internet Control Message Protocol,主要用於路由發送錯誤報告 |
HTTP是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫。它的發展是萬維網協會(World Wide Web Consortium)和Internet工做小組IETF(Internet Engineering Task Force)合做的結果,(他們)最終發佈了一系列的RFC,RFC 1945定義了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定義了今天廣泛使用的一個版本——HTTP 1.1。html
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它可使瀏覽器更加高效,使網絡傳輸減小。它不只保證計算機正確快速地傳輸超文本文檔,還肯定傳輸文檔中的哪一部分,以及哪部份內容首先顯示(如文本先於圖形)等。nginx
HTTP是一個應用層協議,由請求和響應構成,是一個標準的客戶端服務器模型。HTTP是一個無狀態的協議。程序員
HTTP協議一般承載於TCP協議之上,有時也承載於TLS或SSL協議層之上,這個時候,就成了咱們常說的HTTPS。以下圖所示web
默認HTTP的端口號爲80,HTTPS的端口號爲443。apache
HTTP協議永遠都是客戶端發起請求,服務器回送響應。見下圖編程
這樣就限制了使用HTTP協議,沒法實如今客戶端沒有發起請求的時候,服務器將消息推送給客戶端。
HTTP協議是一個無狀態的協議,同一個客戶端的此次請求和上次請求是沒有對應關係。瀏覽器
客戶端發送一個HTTP請求到服務器的請求消息包括如下格式安全
Get請求例子服務器
GET /562f25980001b1b106000338.jpg HTTP/1.1Host img.mukewang.comUser-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36Accept image/webp,image/*,*/*;q=0.8Referer http://www.imooc.com/Accept-Encoding gzip, deflate, sdchAccept-Language zh-CN,zh;q=0.8
POST請求例子
POST / HTTP1.1Host:www.wrox.comUser-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)Content-Type:application/x-www-form-urlencodedContent-Length:40Connection: Keep-Alivename=Professional%20Ajax&publisher=Wiley
第一部分:請求行,第一行顯示請求類型,以及http1.1版本。
第二部分:請求頭部,第二行至第六行。
第三部分:空行,第七行的空行。
第四部分:請求數據,第八行。
通常狀況下,服務器接收並處理客戶端發過來的請求後會返回一個HTTP的響應消息。
HTTP響應也由四個部分組成
HTTP/1.1 200 OKDate: Fri, 22 May 2009 06:07:21 GMTContent-Type: text/html; charset=UTF-8<html><head></head><body><!--body goes here--></body></html>
第一部分狀態行 : 由HTTP協議版本號、狀態碼、狀態消息三部分組成。
第二部分消息報頭 : 用來講明客戶端要使用的一些附加信息
第三部分空行 : 消息報頭後面的空行是必須的
第四部分響應正文 : 服務器返回給客戶端的文本信息。
狀態代碼有三位數字組成,第一個數字定義了響應的類別,共分五種類別
狀態 | 註釋 |
---|---|
1xx | 指示信息--表示請求已接收,繼續處理 |
2xx | 成功--表示請求已被成功接收、理解、接受 |
3xx | 重定向--要完成請求必須進行更進一步的操做 |
4xx | 客戶端錯誤--請求有語法錯誤或請求沒法實現 |
5xx | 服務器端錯誤--服務器未能實現合法的請求 |
進程的概念是操做系統的結構的基礎。Multics的設計者在20世紀60年代首次使用了這個技術詞語,它比做業更通用一些。關於進程的定義,以下所示
設計出一個可以協調各類不一樣活動的系統軟件是很是困難的。
在任什麼時候刻都有許多做業在運行中,每一個做業都包括要求按照順序執行的不少步驟,所以分析時間的序列組合是不可的。因爲缺少可以在全部活動中進行協調和合做的系統級的方法,程序員只能基於他們對操做系統所控制的環境的理解,採用本身的特殊方法。然而這種方法是很脆弱的,尤爲對於一些程序設計中的小錯誤,由於這些錯誤只有在不多見的時間序列發生時纔會出現。
因爲須要從應用程序軟件錯誤和硬件錯誤中區分出這些錯誤,於是診斷工做是很困難的。及時檢測出錯誤,也很難肯定緣由,由於很難在線錯誤產生的精確場景。通常而言,產生這類錯誤的4個主要緣由以下:
解決這些問題須要一種系統級別的方法監控處理器中不一樣程序的執行。進程的概念爲此提供了基礎。
所以進程能夠看作是由三部分組成的
傳統地,操做系統建立進程的方式對用戶和應用程序都是透明的,這在當代操做系統中也很廣泛。可是容許一個進程引起另外一個進程的建立將是頗有用的。
例如一個程序進程能夠產生另外一個進程,以接受應用程序產生的數據,並將數據組織成適合之後分析的格式。新進程與應用程序並行的運行,並當獲得新的數據時被激活。
這個方案對於構造應用程序是很是有用的,例如,服務器進程(如打印服務器、文件服務器)能夠爲它處理的每一個請求產生一個新進程。當操做系統爲另外一個進程的顯式請求產生一個新進程時,這個動做稱爲進程派生。
當一個進程派生另外一個進程時,前一個稱做父進程,被派生的進程稱做子進程。在典型的狀況下,相關進程須要像話之間通訊和合做。對程序員來講,合做是一個很是困難的任務。
線程是進程的一個執行流,線程不能分配系統資源,它是進程的一部分,比進程更小的獨立運行的單位
進程就像地主,有土地(系統資源),線程就像佃戶(線程,執行種地流程)。每一個地主(進程)只要有一個幹活的佃戶(線程)。
進程-資源分配的最小單位,相對健壯,崩潰通常不影響其餘進程,可是切換進程時耗費資源,效率差些。
線程-程序執行的最小單位,沒有獨立的地址空間,一個線程死掉可能整個進程就死掉,可是節省資源,切換效率高。
感謝你看到這裏,有時一些底層的知識會對平常開發起到很大的做用,去理解它,並不是完全瞭解它。有什麼問題可在評論區留言,謝謝