1. 首先,不論是服務器程序仍是客戶端程序,在程序工程上分爲兩大類:html
1)和本身本地通訊:就是調用本地宿主機的資源:CPU、存儲、內存、傳感設備等等java
2)和別分遠程通訊:就是經過網絡(有線網絡和無線網絡)【路】去別人家的主機訪問他們的資源!這個網絡能夠是以太網絡、藍牙網絡、紅外線網絡、射頻網絡等等...web
咱們知道使用各個網絡有各個網絡的協議,咱們在藍牙網絡的時候須要遵循藍牙的協議...在以太網的時候咱們要遵循以太網的協議。就是TCP/IP協議編程
3)而目前影響力最廣、網絡地域最廣、最普及、用戶最多的當屬以太網構建的全球性互聯網!小程序
4)在以太網中咱們主要遵循TCP/IP協議簇瀏覽器
5)在TCP/IP五層模型中。從應用層的數據通過傳輸層的TCP/UDP協議的封裝以後,下達到網絡層的IP協議,而後繼續通過了數據鏈路層協議,最後經過以太網網口把數據報文給發送出去!接收則反之。這是咱們一般在寫以太網通訊軟件的通訊路程。服務器
6)咱們看到在以太網的傳輸層,就只要兩個協議,TCP/UDP協議。全部上層應用層都須要傳輸層的TCP和服務器創建鏈接(三次握手以後),把數據封裝成各類各樣的協議格式(HTML/XML/簡單文本/圖片/視頻/音頻/郵件/等等),交個一個【套接字:socket】的載體,而後給到TCP進行繼續封裝下去。微信
應用層 | XML | HTML |
txt | ||
圖片 | 視頻 | |
音頻 | 密文等等 | |
下傳 | ||
socket套接字 | ||
傳輸層 | TCP | UDP |
7)咱們卡住一個套接字socket。而後回想一下,好像咱們學過的C/C++/C#/java也好,都有一個socket網路編程的概念,而後咱們知道socket分爲ClientSocket【C】和Serversocket!在此就產生了C/S架構的概念!最開始咱們還沒那麼發達的時候,各自都是孤零零的客戶端和服務器,且不少仍是嵌入式式產品的客戶端。獨立運營。再到後來,有了操做系統的技術以後,即是一個平臺化技術的開始!!全部的客戶端能夠所有丟到一個硬件設備【的操做系統】平臺上運行,固然服務器程序也是。可是網絡編程的客戶端仍是發socket,可是統一由平臺幫忙管理的收發!你只須要去特定的端口提交你的需求和接收你的信息。端口的誕生也是覺得操做系統平臺化產生的,由於一個硬件設備只有一個真實的以太網端口,可是這個設備上有不少的不用的客戶端,怎麼辦?操做系統OS就爲沒一個程序(進程)劃分各自的虛擬端口!因此你用IP【設備】+端口。就能找到特定的進程通訊!!這是平臺化的第一層。客戶端不須要本身去製造硬件設備!網絡
8)再接着,有些客戶端不斷的壯大,本身的用戶愈來愈多。從流量經濟和分流的角度,它能夠分發給各個代理商來利用流量經濟,從而從中獲取利益。瀏覽器這個有專門學術名稱的客戶端(仍是socket客戶端)就誕生了!瀏覽器把本身的搭建成一個C/S平臺。讓你們把本身的想法和業務功能以一個更加簡單的方式【HTML】直接丟到本身的平臺上,就能完成和單獨寫socket客戶端同樣的功能!這是平臺化的第二層。客戶不須要本身實現socket客戶端程序了!只要你的內容遵循行業協會的標準便可:HTTP。架構
9)另一邊,服務器那端也是,Apache這個服務器廠商也在服務端那用ServerSocket搭建了一個平臺:Tomcat。也讓開發者們不須要親自寫服務器端的socket程序也能和本身的客戶端通訊服!又節省了成本!!只要你寫好一個叫作servlet的東西,並遵循其標準丟到這個平臺上來!這樣一個Tomcat平臺就的實現不少個服務器服務了!Tomcat也即被稱爲servlet的容器!!
8)和9)的技術結合起來就是今天的B/S架構。B是Browser瀏覽器的意思。S就是server的意思!!html*Browser/Tomcat*servlet
B/S | |||
應用層 | html*Browser | HTTP | Tomcat*servlet |
ClientSocket | socket | ServerSocket | |
C/S | |||
傳輸層 | TCP/IP |
10)咱們看下以下瀏覽器內核webkit的技術原理
11)咱們看下以下Tomcat內核的技術原理
12)咱們看到以上瀏覽器內核和Tomcat都有socket和TCP的身影!都是須要創建TCP鏈接和socket收發管理。
13)現在平臺技術發展愈來愈好。好比,再由微信平臺承載的小程序、公衆號和天貓平臺承載的各個電商的產品售賣服務!平臺化技術能發展得愈來愈好不輕易到的緣由是:雙贏模式,我讓你們都賺錢了,我不可能倒,覺得你們的力量不可能讓我倒下的!這就是爲何每一個公司作到必定程度以後,都想往平臺化發展的緣由!