這個題目不好回答,因為他牽扯東西比較多,問的方向比較廣,我盡量發(fā)散說,如果里面遇到你不知道知識點,那么你需要自己查閱里面你不清楚點。
Socket是什么?
· TPC/IP協(xié)議是傳輸層協(xié)議,主要解決數據如何在網絡中傳輸;
· Socket是對TCP/IP協(xié)議的封裝和應用(程序員層面上);
· 而HTTP是應用層協(xié)議,主要解決如何包裝數據。
TCP/IP和HTTP協(xié)議的關系是:“我們在傳輸數據時,可以只使用(傳輸層)TCP/IP協(xié)議,但是那樣的話,如果沒有應用層,便無法識別數據內容。如果想要使傳輸的數據有意義,則必須使用到應用層協(xié)議。應用層協(xié)議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用層協(xié)議。WEB使用HTTP協(xié)議作應用層協(xié)議,以封裝HTTP文本信息,然后使用TCP/IP做傳輸層協(xié)議將它發(fā)到網絡上。”
Socket是什么呢,實際上socket是對TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議,而是一個調用接口(API)。通過Socket,我們才能使用TCP/IP協(xié)議。
Socket跟TCP/IP協(xié)議關系是:“TCP/IP只是一個協(xié)議棧,就像操作系統(tǒng)的運行機制一樣,必須要具體實現(xiàn),同時還要提供對外的操作接口。這個就像操作系統(tǒng)會提供標準的編程接口,比如win32編程接口一樣,TCP/IP也要提供可供程序員做網絡開發(fā)所用的接口,這就是Socket編程接口。”
這樣回答肯定不行:你肯定說說建立socket的基本流程
可以看到本質上,socket是對tcp連接(當然也有可能是udp等其他連接)協(xié)議,在編程層面上的簡化和抽象。
要想深刻理解socket必須要有:網絡七層,每一層有一個了解,在應用層,傳輸層,網絡層這三層要熟悉不是了解了。
下面這些也了解一下:
1、單向通信
2、雙向通信
3、同時實現(xiàn)消息的發(fā)送與接收
4、使用線程池優(yōu)化服務端并發(fā)能力
5、連接保活(心跳包,斷開時重連)
6、三次握手,四次揮手過程描述
更多關于“Java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓經驗,課程大綱更科學更專業(yè),有針對零基礎的就業(yè)班,有針對想提升技術的好程序員班,高品質課程助理你實現(xiàn)java程序員夢想。