socket

網(wǎng)絡(luò)模型

OSI:

應(yīng)用層:主要是一些終端應(yīng)用

表示層:對接受的數(shù)據(jù)進(jìn)行解釋,加密,壓縮與解壓縮

會話層:通過傳輸層數(shù)據(jù)傳輸?shù)耐?/p>

傳輸層:定義了傳輸數(shù)據(jù)的協(xié)議與端口號

網(wǎng)絡(luò)層:設(shè)備是路由器,主要將從下層接收到的數(shù)據(jù)進(jìn)行IP地址的封裝與解封

數(shù)據(jù)鏈路層:設(shè)備是交換機(jī)

物理層:定義物理設(shè)備標(biāo)準(zhǔn),如:網(wǎng)線的接口類型,光纖的接口類型,各種傳輸介質(zhì)的傳輸速率

TCP/IP:應(yīng)用層,傳輸層,網(wǎng)際層,主機(jī)至網(wǎng)絡(luò)層

網(wǎng)絡(luò)通信的三要素:

IP地址:主機(jī)的唯一標(biāo)識

端口號:正在運(yùn)行程序的標(biāo)識

傳輸協(xié)議:TCP,UDP

Socket

1.什么是 Socket?

(IP地址與端口號組合在一起)Socket 主要是用來網(wǎng)絡(luò)中兩個進(jìn)程的通信,我們需要考慮 2 個問題,第一是在網(wǎng)絡(luò)中如何定位到一臺主機(jī)并且能找到相應(yīng)的服務(wù)(因為一臺主機(jī)上可能運(yùn)行多個服務(wù)或者進(jìn)程),第二是如何可靠高效的傳輸數(shù)據(jù)。在本地可以通過進(jìn)程 PID 來唯一標(biāo)識一個進(jìn)程,但是在網(wǎng)絡(luò)中這是行不通的。其實 TCP/IP 協(xié)議族已經(jīng)幫我們解決了這個問題,網(wǎng)絡(luò)層的“ip 地址”可以唯一標(biāo)識網(wǎng)絡(luò)中的主機(jī),而傳輸層的“協(xié)議+端口”可以唯一標(biāo)識主機(jī)中的應(yīng)用程序(進(jìn)程)。這樣利用三元組(ip 地址,協(xié)議,端口)就可以標(biāo)識網(wǎng)絡(luò)的進(jìn)程了,網(wǎng)絡(luò)中的進(jìn)程通信就可以利用這個標(biāo)志與其它進(jìn)程進(jìn)行交互。網(wǎng)絡(luò)上的兩個程序通過一個雙向的通信連接實現(xiàn)數(shù)據(jù)的交換,這個連接的一端稱為一個 socket。Socket 本質(zhì)是編程接口(API),對 TCP/IP 的封裝,Socket通常用來實現(xiàn)客戶方和服務(wù)方的連接。Socket 是 TCP/IP 協(xié)議的一個十分流行的編程實現(xiàn),一個 Socket 由一個 IP 地址和一個端口號唯一確定。但是,Socket所支持的協(xié)議種類也不光 TCP/IP 一種,因此兩者之間是沒有必然聯(lián)系的。

2 socket 的通信過程

Server 端 Listener(監(jiān)聽)某個端口是否有連接請求,Client 端向 Server 端發(fā)出Connect(連接)請求,Server 端向 Client 端發(fā)回 Accept(接受)消息。一個連接就建立起來了。Server 端和 Client 端都可以通過 Send,Write 等方法與對方通信。最后關(guān)閉 Socket。

3.TCP,UDP

UDP ,用戶數(shù)據(jù)報協(xié)議,計算機(jī)之間不必建立連接,數(shù)據(jù)打包發(fā)送,每包最多發(fā)送64K數(shù)據(jù),因為不需要建立連接,所以不安全,效率高,是不可靠協(xié)議。

TCP,傳輸控制協(xié)議,通過三次握手建立連接,通過IO流傳輸數(shù)據(jù),對數(shù)據(jù)大小沒有限制,因為建立好了連接,數(shù)據(jù)傳輸過程是安全的,是一個可靠協(xié)議,傳輸速度慢,效率低

區(qū)別

1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接

2、TCP提供可靠的服務(wù)。也就是說,通過TCP連接傳送的數(shù)據(jù),無差錯,不丟失,不重復(fù),且按序到達(dá);

UDP盡最大努力交付,即不保證可靠交付

Tcp通過校驗和,重傳控制,序號標(biāo)識,滑動窗口、確認(rèn)應(yīng)答實現(xiàn)可靠傳輸。

如丟包時的重發(fā)控制,還可以對次序亂掉的分包進(jìn)行順序控制。

3、UDP具有較好的實時性,工作效率比TCP高,適用于對高速傳輸和實時性有較高的通信或廣播通信。

4.每一條TCP連接只能是點(diǎn)到點(diǎn)的;UDP支持一對一,一對多,多對一和多對多的交互通信

5、TCP對系統(tǒng)資源要求較多,UDP對系統(tǒng)資源要求較少。

線程

1.實現(xiàn)線程的方法:

a.繼承Thread類,實現(xiàn)run方法

b.繼承runnable接口

2.簡單方法:

sleep:線程休眠

join:線程搶占

yield:線程禮讓,暫停片刻,讓CPU先執(zhí)行其他線程

setDaemon:守護(hù)線程

stop:終止線程

interrupt:中斷線程

2、Thread類的sleep()方法和對象的wait()方法都可以讓線程暫停執(zhí)行,它們有什么區(qū)別?

sleep()方法(休眠)是線程類(Thread)的靜態(tài)方法,調(diào)用此方法會讓當(dāng)前線程暫停執(zhí)行指定的時間,將執(zhí)行機(jī)會(CPU)讓給其他線程,但是對象的鎖依然保持,因此休眠時間結(jié)束后會自動恢復(fù)

wait()是Object類的方法,調(diào)用對象的wait()方法導(dǎo)致當(dāng)前線程放棄對象的鎖(線程暫停執(zhí)行),進(jìn)入對象的等待池(wait pool),只有調(diào)用對象的notify()方法(或notifyAll()方法)時才能喚醒等待池中的線程進(jìn)入等鎖池(lockpool),如果線程重新獲得對象的鎖就可以進(jìn)入就緒狀態(tài)

3、線程的sleep()方法和yield()方法有什么區(qū)別?

① sleep()方法給其他線程運(yùn)行機(jī)會時不考慮線程的優(yōu)先級,因此會給低優(yōu)先級的線程以運(yùn)行的機(jī)會;yield()方法只會給相同優(yōu)先級或更高優(yōu)先級的線程以運(yùn)行的機(jī)會;

② 線程執(zhí)行sleep()方法后轉(zhuǎn)入阻塞(blocked)狀態(tài),而執(zhí)行yield()方法后轉(zhuǎn)入就緒(ready)狀態(tài);

③ sleep()方法聲明拋出InterruptedException,而yield()方法沒有聲明任何異常;

④ sleep()方法比yield()方法(跟操作系統(tǒng)CPU調(diào)度相關(guān))具有更好的可移植性。

4、請說出與線程同步以及線程調(diào)度相關(guān)的方法?

wait():使一個線程處于等待(阻塞)狀態(tài),并且釋放所持有的對象的鎖;

sleep():使一個正在運(yùn)行的線程處于睡眠狀態(tài),是一個靜態(tài)方法,調(diào)用此方法要處理InterruptedException異常;

notify():喚醒一個處于等待狀態(tài)的線程,當(dāng)然在調(diào)用此方法的時候,并不能確切的喚醒某一個等待狀態(tài)的線程,而是由JVM確定喚醒哪個線程,而且與優(yōu)先級無關(guān);

notityAll():喚醒所有處于等待狀態(tài)的線程,該方法并不是將對象的鎖給所有線程,而是讓它們競爭,只有獲得鎖的線程才能進(jìn)入就緒狀態(tài);

線程池:

1.優(yōu)點(diǎn):

1)避免線程的創(chuàng)建和銷毀帶來性能消耗 ?

2)避免大量的線程間因互相搶占系統(tǒng)資源導(dǎo)致的阻塞現(xiàn)象?

3)能夠?qū)€程進(jìn)行簡單的管理并提供定時執(zhí)行,間隔執(zhí)行等功能

2.線程池包括

corePoolSize:線程池核心線程數(shù)量maximumPoolSize:線程池最大線程數(shù)量

keepAliverTime:當(dāng)活躍線程數(shù)大于核心線程數(shù)時,空閑的多余線程最大存活時間

unit:存活時間的單位

workQueue:存放任務(wù)的隊列

handler:超出線程范圍和隊列容量的任務(wù)的處理程序

3.線程池的實現(xiàn)原理

a、判斷線程池里的核心線程是否都在執(zhí)行任務(wù),如果不是(核心線程空閑或者還有核心線程沒有被創(chuàng)建)則創(chuàng)建一個新的工作線程來執(zhí)行任務(wù)。如果核心線程都在執(zhí)行任務(wù),則進(jìn)入下個流程。

b、線程池判斷工作隊列是否已滿,如果工作隊列沒有滿,則將新提交的任務(wù)存儲在這個工作隊列里。如果工作隊列滿了,則進(jìn)入下個流程。

c、判斷線程池里的線程是否都處于工作狀態(tài),如果沒有,則創(chuàng)建一個新的工作線程來執(zhí)行任務(wù)。如果已經(jīng)滿了,則交給飽和策略來處理這個任務(wù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.1 TCP/IP協(xié)議組 TCP/IP協(xié)議(傳輸控制協(xié)議)由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成 IP層負(fù)責(zé)...
    F麥子閱讀 2,922評論 0 25
  • 一: 網(wǎng)絡(luò)各個協(xié)議:TCP/IP、SOCKET、HTTP 網(wǎng)絡(luò)七層由下往上分別為物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層...
    iYeso閱讀 1,510評論 0 13
  • 轉(zhuǎn)。。。。。。。。 SOCKET,TCP/UDP,HTTP,FTP (一)TCP/UDP,SOCKET,HTTP,...
    zeqinjie閱讀 3,386評論 1 53
  • 提問話術(shù)列表 1.在成就事件梳理里面,你都遇到了哪些事情? 忘記了自己做過的事。 2.在一開始你看到這個活動通知和...
    阿怪lm閱讀 1,100評論 1 2
  • 簡靜/文 愛如煙花般絢爛,亦如煙花般轉(zhuǎn)瞬即逝! 我們看的是電影《煙花》,醒悟的卻是生命中的愛。 有多少人不知道愛是...
    洛凡晨閱讀 575評論 0 3

友情鏈接更多精彩內(nèi)容