一篇搞懂TCP、HTTP、Socket、Socket連接池
點(diǎn)擊關(guān)注公眾號,回復(fù)“2T”獲取2TB學(xué)習(xí)資源!
互聯(lián)網(wǎng)架構(gòu)師后臺回復(fù) 2T 有特別禮包
作者:數(shù)瀾科技
鏈接:https://www.jianshu.com/p/e47a766e03da
七層網(wǎng)絡(luò)模型

TCP和UDP連接

可以看到一次tcp請求的建立及關(guān)閉至少進(jìn)行7次通信,這還不包過數(shù)據(jù)的通信,而UDP不需3次握手和4次分手。
TCP和UDP的區(qū)別
TCP是面向鏈接的,雖然說網(wǎng)絡(luò)的不安全不穩(wěn)定特性決定了多少次握手都不能保證連接的可靠性,但TCP的三次握手在最低限度上(實(shí)際上也很大程度上保證了)保證了連接的可靠性;而UDP不是面向連接的,UDP傳送數(shù)據(jù)前并不與對方建立連接,對接收到的數(shù)據(jù)也不發(fā)送確認(rèn)信號,發(fā)送端不知道數(shù)據(jù)是否會正確接收,當(dāng)然也不用重發(fā),所以說UDP是無連接的、不可靠的一種數(shù)據(jù)傳輸協(xié)議。 也正由于1所說的特點(diǎn),使得UDP的開銷更小數(shù)據(jù)傳輸速率更高,因?yàn)椴槐剡M(jìn)行收發(fā)數(shù)據(jù)的確認(rèn),所以UDP的實(shí)時性更好。知道了TCP和UDP的區(qū)別,就不難理解為何采用TCP傳輸協(xié)議的MSN比采用UDP的QQ傳輸文件慢了,但并不能說QQ的通信是不安全的,因?yàn)槌绦騿T可以手動對UDP的數(shù)據(jù)收發(fā)進(jìn)行驗(yàn)證,比如發(fā)送方對每個數(shù)據(jù)包進(jìn)行編號然后由接收方進(jìn)行驗(yàn)證啊什么的,即使是這樣,UDP因?yàn)樵诘讓訁f(xié)議的封裝上沒有采用類似TCP的“三次握手”而實(shí)現(xiàn)了TCP所無法達(dá)到的傳輸效率。
問題


編輯文件,加入以下內(nèi)容:

net.ipv4.tcp_fin_timeout 修改系統(tǒng)默認(rèn)的TIMEOUT時間。
Socket長連接
什么時候用長連接,短連接?
什么是心跳包為什么需要:
服務(wù)端:


客戶端代碼:

客戶端輸出結(jié)果:

定義自己的協(xié)議
心跳包格式的定義及處理 報文頭的定義,就是你發(fā)送數(shù)據(jù)的時候需要先發(fā)送報文頭,報文里面能解析出你將要發(fā)送的數(shù)據(jù)長度 你發(fā)送數(shù)據(jù)包的格式,是json的還是其他序列化的方式

日志打印:

客戶端

日志打?。?/span>

Socket連接池
空閑可使用的長連接隊(duì)列 正在運(yùn)行的通信的長連接隊(duì)列 等待去獲取一個空閑長連接的請求的隊(duì)列 無效長連接的剔除功能 長連接資源池的數(shù)量配置 長連接資源的新建功能

初始化連接池

使用連接池
下面連接池的使用,使用的協(xié)議是我們之前自定義的協(xié)議。

日志打?。?/span>

源碼分析
構(gòu)造函數(shù):lib/Pool.js




上面的代碼就按種情況一直走下到最終獲取到長連接的資源,其他更多代碼大家可以自己去深入了解。
-End-
正文結(jié)束
1.心態(tài)崩了!稅前2萬4,到手1萬4,年終獎扣稅方式1月1日起施行~
2.深圳一普通中學(xué)老師工資單曝光,秒殺程序員,網(wǎng)友:敢問是哪個學(xué)校畢業(yè)的?
3.從零開始搭建創(chuàng)業(yè)公司后臺技術(shù)棧

