網路中程序如何通訊?
首要解決的問題是如何唯一標識乙個程序,否則通訊無從談起!
在本地可以通過程序pid來唯一標識乙個程序,但是在網路中這是行不通的。
其實tcp/ip協議族已經幫我們解決了這個問題,網路層的「ip位址」可以唯一標識網路中的主機,而傳輸層的「協議+埠」可以唯一標識主機中的應用程式(程序)。
這樣利用三元組(ip位址,協議,埠)就可以標識網路的程序了,網路中的程序通訊就可以利用這個標誌與其它程序進行互動。
什麼是socket?
unix/linux基本哲學之一就是「一切皆檔案」,都可以用「開啟open –> 讀寫write/read –> 關閉close」模式來操作。
我的理解就是socket就是該模式的乙個實現,socket即是一種特殊的檔案,一些socket函式就是對其進行的操作(讀/寫io、開啟、關閉)
socket基本操作
socket是「open—write/read—close」模式的一種實現。
socket()方法:對應於普通檔案的開啟操作。
listen()方法:來監聽這個socket。如果客戶端這時呼叫connect()發出連線請求,伺服器端就會接收到這個請求。
connect()方法:客戶端通過呼叫connect函式來建立與tcp伺服器的連線。
accept()方法:tcp伺服器監聽到這個請求之後,就會呼叫accept()函式取接收請求,這樣連線就建立好了。之後就可以開始網路i/o操作了,即類同於普通檔案的讀寫i/o操作。
read() write()方法:萬事具備只欠東風,至此伺服器與客戶已經建立好連線了。可以呼叫網路i/o進行讀寫操作了,即實現了網咯中不同程序之間的通訊!
close()方法:完成了讀寫操作就要關閉相應的socket描述字,好比操作完開啟的檔案要呼叫fclose關閉開啟的檔案。
tcp的三次握手就發生在 connect()---accept()-----connect()-----accept()方法中!!!!!!
四次揮手是close()---- read()---- close()
web相關知識
1.rel canonical link的乙個屬性canonical,其目的是幫助 管理員們,解決 內容存在多個版本時,指定規範鏈結,幫助解決內容重複收錄問題。如 2.json ld標記 更好的讓谷歌記錄 資料。詳細描述可以看下面這個 3.itemprop name itemprop name 屬於...
web相關知識
servlet生命週期 servelt是乙個單例項多執行緒的動態web技術。預設情況下,第一次訪問時呼叫init方法初始化。每當接受乙個請求,就建立乙個執行緒,並呼叫對應的service方法。最後,當此servlet被移除或者伺服器正常關閉的時候,呼叫用destroy方法銷毀。session生命週期...
HTTP協議相關知識
所有http響應的第一行都是狀態行,依次是當前http版本號,3位數字組成的狀態 以及描述狀態的短語,彼此由空格分隔。狀態 的第乙個數字代表當前響應的型別 1xx訊息 請求已被伺服器接收,繼續處理 2xx成功 請求已成功被伺服器接收 理解 並接受 3xx重定向 需要後續操作才能完成這一請求 4xx請...