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