機(jī)器學(xué)習(xí)面試

面試的是BAT某家機(jī)器學(xué)習(xí)崗

1.可以用于任務(wù)分配的算法

貪心,動(dòng)態(tài)規(guī)劃,分支限界法,拍賣算法以及一些人工智能算法(蟻群,遺傳等)

特點(diǎn)是什么?有什么優(yōu)缺點(diǎn)?

2.回歸分析有哪些?說一下他們的原理以及特點(diǎn),優(yōu)缺點(diǎn)。

1, 線性回歸?

線性回歸的因變量是連續(xù)變量,自變量可以是連續(xù)變量,也可以是分類變量。如果只有一個(gè)自變量,且只有兩類,那這個(gè)回歸就等同于t檢驗(yàn)。如果只有一個(gè)自變量,且有三類或更多類,那這個(gè)回歸就等同于方差分析。如果有2個(gè)自變量,一個(gè)是連續(xù)變量,一個(gè)是分類變量,那這個(gè)回歸就等同于協(xié)方差分析。所以線性回歸一定要認(rèn)準(zhǔn)一點(diǎn),因變量一定要是連續(xù)變量。當(dāng)然還有其它條件,比如獨(dú)立性、線性、等方差性、正態(tài)性。。


2, logistic回歸,與線性回歸并成為兩大回歸,應(yīng)用范圍一點(diǎn)不亞于線性回歸,甚至有青出于藍(lán)之勢。因?yàn)閘ogistic回歸太好用了,而且太有實(shí)際意義了。解釋起來直接就可以說,如果具有某個(gè)危險(xiǎn)因素,發(fā)病風(fēng)險(xiǎn)增加2.3倍,聽起來多么地讓人通俗易懂。線性回歸相比之下其實(shí)際意義就弱了。logistic回歸與線性回歸恰好相反,因變量一定要是分類變量,不可能是連續(xù)變量。分類變量既可以是二分類,也可以是多分類,多分類中既可以是有序,也可以是無序。二分類logistic回歸有時(shí)候根據(jù)研究目的又分為條件logistic回歸和非條件logistic回歸。條件logistic回歸用于配對資料的分析,非條件logistic回歸用于非配對資料的分析,也就是直接隨機(jī)抽樣的資料。無序多分類logistic回歸有時(shí)候也成為多項(xiàng)logit模型,有序logistic回歸有時(shí)也稱為累積比數(shù)logit模型。?


3, cox回歸,cox回歸的因變量就有些特殊,因?yàn)樗囊蜃兞勘仨毻瑫r(shí)有2個(gè),一個(gè)代表狀態(tài),必須是分類變量,一個(gè)代表時(shí)間,應(yīng)該是連續(xù)變量。只有同時(shí)具有這兩個(gè)變量,才能用cox回歸分析。cox回歸主要用于生存資料的分析,生存資料至少有兩個(gè)結(jié)局變量,一是死亡狀態(tài),是活著還是死亡?二是死亡時(shí)間,如果死亡,什么時(shí)間死亡?如果活著,從開始觀察到結(jié)束時(shí)有多久了?所以有了這兩個(gè)變量,就可以考慮用cox回歸分析。


4, poisson回歸,poisson回歸相比就不如前三個(gè)用的廣泛了。但實(shí)際上,如果你能用logistic回歸,通常也可以用poission回歸,poisson回歸的因變量是個(gè)數(shù),也就是觀察一段時(shí)間后,發(fā)病了多少人?或者死亡了多少人?等等。其實(shí)跟logistic回歸差不多,因?yàn)閘ogistic回歸的結(jié)局是是否發(fā)病,是否死亡,也需要用到發(fā)病例數(shù)、死亡例數(shù)。大家仔細(xì)想想,其實(shí)跟發(fā)病多少人,死亡多少人一個(gè)道理。只是poission回歸名氣不如logistic回歸大,所以用的人也不如logistic回歸多。但不要因此就覺得poisson回歸沒有用。


5, probit回歸,在醫(yī)學(xué)里真的是不大用,最關(guān)鍵的問題就是probit這個(gè)詞太難理解了,通常翻譯為概率單位。probit函數(shù)其實(shí)跟logistic函數(shù)十分接近,二者分析結(jié)果也十分接近??上У氖?,probit回歸的實(shí)際含義真的不如logistic回歸容易理解,由此導(dǎo)致了它的默默無名,但據(jù)說在社會(huì)學(xué)領(lǐng)域用的似乎更多一些。


6,負(fù)二項(xiàng)回歸。所謂負(fù)二項(xiàng)指的是一種分布,其實(shí)跟poission回歸、logistic回歸有點(diǎn)類似,poission回歸用于服從poission分布的資料,logistic回歸用于服從二項(xiàng)分布的資料,負(fù)二項(xiàng)回歸用于服從負(fù)二項(xiàng)分布的資料。說起這些分布,大家就不愿意聽了,多么抽象的名詞,我也很頭疼。如果簡單點(diǎn)理解,二項(xiàng)分布你可以認(rèn)為就是二分類數(shù)據(jù),poission分布你可以認(rèn)為是計(jì)數(shù)資料,也就是個(gè)數(shù),而不是像身高等可能有小數(shù)點(diǎn),個(gè)數(shù)是不可能有小數(shù)點(diǎn)的。負(fù)二項(xiàng)分布呢,也是個(gè)數(shù),只不過比poission分布更苛刻,如果你的結(jié)局是個(gè)數(shù),而且結(jié)局可能具有聚集性,那可能就是負(fù)二項(xiàng)分布。簡單舉例,如果調(diào)查流感的影響因素,結(jié)局當(dāng)然是流感的例數(shù),如果調(diào)查的人有的在同一個(gè)家庭里,由于流感具有傳染性,那么同一個(gè)家里如果一個(gè)人得流感,那其他人可能也被傳染,因此也得了流感,那這就是具有聚集性,這樣的數(shù)據(jù)盡管結(jié)果是個(gè)數(shù),但由于具有聚集性,因此用poission回歸不一定合適,就可以考慮用負(fù)二項(xiàng)回歸。既然提到這個(gè)例子,我在上一篇文章說了,用于logistic回歸的數(shù)據(jù)通常也能用poission回歸,就像上面案例,我們可以把結(jié)局作為二分類,每個(gè)人都有兩個(gè)狀態(tài),得流感或者不得流感,這是個(gè)二分類結(jié)局,那就可以用logistic回歸。但是這里的數(shù)據(jù)存在聚集性怎么辦呢,幸虧logistic回歸之外又有了更多的擴(kuò)展,你可以用多水平logistic回歸模型,也可以考慮廣義估計(jì)方程。這兩種方法都可以處理具有層次性或重復(fù)測量資料的二分類因變量。


7,weibull回歸,有時(shí)中文音譯為威布爾回歸。weibull回歸估計(jì)你可能就沒大聽說過了,其實(shí)這個(gè)名字只不過是個(gè)噱頭,嚇唬人而已。上一篇說過了,生存資料的分析常用的是cox回歸,這種回歸幾乎統(tǒng)治了整個(gè)生存分析。但其實(shí)夾縫中還有幾個(gè)方法在頑強(qiáng)生存著,而且其實(shí)很有生命力,只是國內(nèi)大多不愿用而已。weibull回歸就是其中之一。cox回歸為什么受歡迎呢,因?yàn)樗唵?,用的時(shí)候不用考慮條件(除了等比例條件之外),大多數(shù)生存數(shù)據(jù)都可以用。而weibull回歸則有條件限制,用的時(shí)候數(shù)據(jù)必須符合weibull分布。怎么,又是分布?!估計(jì)大家頭又大了,是不是想直接不往下看了,還是用cox回歸吧。不過我還是建議看下去。為什么呢?相信大家都知道參數(shù)檢驗(yàn)和非參數(shù)檢驗(yàn),而且可能更喜歡用參數(shù)檢驗(yàn),如t檢驗(yàn),而不喜歡用非參數(shù)檢驗(yàn),如秩和檢驗(yàn)。那這里的weibull回歸和cox回歸基本上可以說是分別對應(yīng)參數(shù)檢驗(yàn)和非參數(shù)檢驗(yàn)。參數(shù)檢驗(yàn)和非參數(shù)檢驗(yàn)的優(yōu)缺點(diǎn)我也在前面文章里通俗介紹了,如果數(shù)據(jù)符合weibull分布,那么直接套用weibull回歸當(dāng)然是最理想的選擇,他可以給出你最合理的估計(jì)。如果數(shù)據(jù)不符合weibull分布,那如果還用weibull回歸,那就套用錯(cuò)誤,肯定結(jié)果也不會(huì)真實(shí)到哪兒去。所以說,如果你能判斷出你的數(shù)據(jù)是否符合weibull分布,那當(dāng)然最好的使用參數(shù)回歸,也就是weibull回歸。但是如果你實(shí)在沒什么信心去判斷數(shù)據(jù)分布,那也可以老老實(shí)實(shí)地用cox回歸。cox回歸可以看作是非參數(shù)的,無論數(shù)據(jù)什么分布都能用,但正因?yàn)樗裁磾?shù)據(jù)都能用,所以不可避免地有個(gè)缺點(diǎn),每個(gè)數(shù)據(jù)用的都不是恰到好處。weibull回歸就像是量體裁衣,把體形看做數(shù)據(jù),衣服看做模型,weibull回歸就是根據(jù)你的體形做衣服,做出來的肯定對你正合身,對別人就不一定合身了。cox回歸呢,就像是到商場去買衣服,衣服對很多人都合適,但是對每個(gè)人都不是正合適,只能說是大致合適。至于到底是選擇麻煩的方式量體裁衣,還是圖簡單到商場直接去買現(xiàn)成的,那就根據(jù)你的喜好了,也根據(jù)你對自己體形的了解程度,如果非常熟悉,當(dāng)然就量體裁衣了。如果不大了解,那就直接去商場買大眾化衣服吧。


8,主成分回歸。主成分回歸是一種合成的方法,相當(dāng)于主成分分析與線性回歸的合成。主要用于解決自變量之間存在高度相關(guān)的情況。這在現(xiàn)實(shí)中不算少見。比如你要分析的自變量中同時(shí)有血壓值和血糖值,這兩個(gè)指標(biāo)可能有一定的相關(guān)性,如果同時(shí)放入模型,會(huì)影響模型的穩(wěn)定,有時(shí)也會(huì)造成嚴(yán)重后果,比如結(jié)果跟實(shí)際嚴(yán)重不符。當(dāng)然解決方法很多,最簡單的就是剔除掉其中一個(gè),但如果你實(shí)在舍不得,畢竟這是辛辛苦苦調(diào)查上來的,刪了太可惜了。如果舍不得,那就可以考慮用主成分回歸,相當(dāng)于把這兩個(gè)變量所包含的信息用一個(gè)變量來表示,這個(gè)變量我們稱它叫主成分,所以就叫主成分回歸。當(dāng)然,用一個(gè)變量代替兩個(gè)變量,肯定不可能完全包含他們的信息,能包含80%或90%就不錯(cuò)了。但有時(shí)候我們必須做出抉擇,你是要100%的信息,但是變量非常多的模型?還是要90%的信息,但是只有1個(gè)或2個(gè)變量的模型?打個(gè)比方,你要診斷感冒,是不是必須把所有跟感冒有關(guān)的癥狀以及檢查結(jié)果都做完?還是簡單根據(jù)幾個(gè)癥狀就大致判斷呢?我想根據(jù)幾個(gè)癥狀大致能能確定90%是感冒了。不用非得100%的信息不是嗎?模型也是一樣,模型是用于實(shí)際的,不是空中樓閣。既然要用于實(shí)際,那就要做到簡單。對于一種疾病,如果30個(gè)指標(biāo)能夠100%確診,而3個(gè)指標(biāo)可以診斷80%,我想大家會(huì)選擇3個(gè)指標(biāo)的模型。這就是主成分回歸存在的基礎(chǔ),用幾個(gè)簡單的變量把多個(gè)指標(biāo)的信息綜合一下,這樣幾個(gè)簡單的主成分可能就包含了原來很多自變量的大部分信息。這就是主成分回歸的原理。


9,嶺回歸。嶺回歸的名稱由來我也沒有查過,可能是因?yàn)樗膱D形有點(diǎn)像嶺。不要糾結(jié)于名稱。嶺回歸也是用于處理自變量之間高度相關(guān)的情形。只是跟主成分回歸的具體估計(jì)方法不同。線性回歸的計(jì)算用的是最小二乘估計(jì)法,當(dāng)自變量之間高度相關(guān)時(shí),最小二乘回歸估計(jì)的參數(shù)估計(jì)值會(huì)不穩(wěn)定,這時(shí)如果在公式里加點(diǎn)東西,讓它變得穩(wěn)定,那就解決了這一問題了。嶺回歸就是這個(gè)思想,把最小二乘估計(jì)里加個(gè)k,改變它的估計(jì)值,使估計(jì)結(jié)果變穩(wěn)定。至于k應(yīng)該多大呢?可以根據(jù)嶺跡圖來判斷,估計(jì)這就是嶺回歸名稱的由來。你可以選非常多的k值,可以做出一個(gè)嶺跡圖,看看這個(gè)圖在取哪個(gè)值的時(shí)候變穩(wěn)定了,那就確定k值了,然后整個(gè)參數(shù)估計(jì)不穩(wěn)定的問題就解決了。


10,偏最小二乘回歸。偏最小二乘回歸也可以用于解決自變量之間高度相關(guān)的問題。但比主成分回歸和嶺回歸更好的一個(gè)優(yōu)點(diǎn)是,偏最小二乘回歸可以用于例數(shù)很少的情形,甚至例數(shù)比自變量個(gè)數(shù)還少的情形。聽起來有點(diǎn)不可思議,不是說例數(shù)最好是自變量個(gè)數(shù)的10倍以上嗎?怎么可能例數(shù)比自變量還少,這還怎么計(jì)算?可惜的是,偏最小二乘回歸真的就有這么令人發(fā)指的優(yōu)點(diǎn)。所以,如果你的自變量之間高度相關(guān)、例數(shù)又特別少、而自變量又很多(這么多無奈的毛病),那就現(xiàn)在不用發(fā)愁了,用偏最小二乘回歸就可以了。它的原理其實(shí)跟主成分回歸有點(diǎn)像,也是提取自變量的部分信息,損失一定的精度,但保證模型更符合實(shí)際。因此這種方法不是直接用因變量和自變量分析,而是用反映因變量和自變量部分信息的新的綜合變量來分析,所以它不需要例數(shù)一定比自變量多。偏最小二乘回歸還有一個(gè)很大的優(yōu)點(diǎn),那就是可以用于多個(gè)因變量的情形,普通的線性回歸都是只有一個(gè)因變量,而偏最小二乘回歸可用于多個(gè)因變量和多個(gè)自變量之間的分析。因?yàn)樗脑砭褪峭瑫r(shí)提取多個(gè)因變量和多個(gè)自變量的信息重新組成新的變量重新分析,所以多個(gè)因變量對它來說無所謂。

3.介紹SVM原理,核函數(shù)等

SVM方法是通過一個(gè)非線性映射p,把樣本空間映射到一個(gè)高維乃至無窮維的特征空間中(Hilbert空間),使得在原來的樣本空間中非線性可分的問題轉(zhuǎn)化為在特征空間中的線性可分的問題.簡單地說,就是升維和線性化.升維,就是把樣本向高維空間做映射,一般情況下這會(huì)增加計(jì)算的復(fù)雜性,甚至?xí)稹熬S數(shù)災(zāi)難”,因而人們很少問津.但是作為分類、回歸等問題來說,很可能在低維樣本空間無法線性處理的樣本集,在高維特征空間中卻可以通過一個(gè)線性超平面實(shí)現(xiàn)線性劃分(或回歸).一般的升維都會(huì)帶來計(jì)算的復(fù)雜化,SVM方法巧妙地解決了這個(gè)難題:應(yīng)用核函數(shù)的展開定理,就不需要知道非線性映射的顯式表達(dá)式;由于是在高維特征空間中建立線性學(xué)習(xí)機(jī),所以與線性模型相比,不但幾乎不增加計(jì)算的復(fù)雜性,而且在某種程度上避免了“維數(shù)災(zāi)難”.這一切要?dú)w功于核函數(shù)的展開和計(jì)算理論.

選擇不同的核函數(shù),可以生成不同的SVM,常用的核函數(shù)有以下4種:

⑴線性核函數(shù)K(x,y)=x·y;

⑵多項(xiàng)式核函數(shù)K(x,y)=[(x·y)+1]^d;

⑶徑向基函數(shù)K(x,y)=exp(-|x-y|^2/d^2)

⑷二層神經(jīng)網(wǎng)絡(luò)核函數(shù)K(x,y)=tanh(a(x·y)+b).



4.說一下貝葉斯原理,貝葉斯分類過程和貝葉斯局限性

原理的話自己解釋,看肯定就是基于貝葉斯公式,

1.貝葉斯決策的優(yōu)點(diǎn)

(1)貝葉斯決策能對信息的價(jià)值或是否需要采集新的信息做出科學(xué)的判斷.(2)它能對調(diào)查結(jié)果的可能性加以數(shù)量化的評(píng)價(jià),而不是像一般的決策方法那樣,對調(diào)查結(jié)果或者是完全相信,或者是完全不相信.

(3)如果說任何調(diào)查結(jié)果都不可能完全準(zhǔn)確,先驗(yàn)知識(shí)或主觀概率也不是完全可以相信的,那么貝葉斯決策則巧妙地將這兩種信息有機(jī)地結(jié)合起來了.

(4)它可以在決策過程中根據(jù)具體情況下不斷地使用,使決策逐步完善和更加科學(xué).

2.貝葉斯決策的局限性:

(1)它需要的數(shù)據(jù)多,分析計(jì)算比較復(fù)雜,特別在解決復(fù)雜問題時(shí),這個(gè)矛盾就更為突出.

(2)有些數(shù)據(jù)必須使用主觀概率,有些人不太相信,這也妨礙了貝葉斯決策方法的推廣使用.

5.Java多態(tài),Map,和垃圾回收

態(tài)就是指程序中定義的引用變量所指向的具體類型和通過該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量倒底會(huì)指向哪個(gè)類的實(shí)例對象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類中實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定。因?yàn)樵诔绦蜻\(yùn)行時(shí)才確定具體的類,這樣,不用修改源程序代碼,就可以讓引用變量綁定到各種不同的類實(shí)現(xiàn)上,從而導(dǎo)致該引用調(diào)用的具體方法隨之改變,即不修改程序代碼就可以改變程序運(yùn)行時(shí)所綁定的具體代碼,讓程序可以選擇多個(gè)運(yùn)行狀態(tài),這就是多態(tài)性。

多態(tài)的好處

多態(tài)的出現(xiàn)大大的提高程序的擴(kuò)展性。

Map:

將鍵映射到值的對象。一個(gè)映射不能包含重復(fù)的鍵;每個(gè)鍵最多只能映射到一個(gè)值。此接口取代 Dictionary 類,后者完全是一個(gè)抽象類,而不是一個(gè)接口。

Map 接口提供三種collection 視圖,允許以鍵集、值集或鍵-值映射關(guān)系集的形式查看某個(gè)映射的內(nèi)容。映射順序 定義為迭代器在映射的 collection 視圖上返回其元素的順序。某些映射實(shí)現(xiàn)可明確保證其順序,如 TreeMap 類;另一些映射實(shí)現(xiàn)則不保證順序,如HashMap 類。

垃圾回收:

ava ?語言中一個(gè)顯著的特點(diǎn)就是引入了java回收機(jī)制,是c++程序員最頭疼的內(nèi)存管理的問題迎刃而解,它使得java程序員在編寫程序的時(shí)候不在考慮內(nèi)存管理。由于有個(gè)垃圾回收機(jī)制,java中的額對象不在有“作用域”的概念,只有對象的引用才有“作用域”。垃圾回收可以有效的防止內(nèi)存泄露,有效的使用空閑的內(nèi)存;

內(nèi)存泄露:指該內(nèi)存空間使用完畢后未回收,在不涉及復(fù)雜數(shù)據(jù)結(jié)構(gòu)的一般情況下,java的內(nèi)存泄露表現(xiàn)為一個(gè)內(nèi)存對象的生命周期超出了程序需要它的時(shí)間長度,我們有是也將其稱為“對象游離”;

垃圾回收機(jī)制的算法

java語言規(guī)范沒有明確的說明JVM 使用哪種垃圾回收算法,但是任何一種垃圾回收算法一般要做兩件基本事情:(1)發(fā)現(xiàn)無用的信息對象;(2)回收將無用對象占用的內(nèi)存空間。使該空間可被程序再次使用。

1。引用計(jì)數(shù)法(Reference Counting Collector)

引用計(jì)數(shù)算法是垃圾回收器中的早起策略,在這種方法中,堆中的每個(gè)對象實(shí)例都有一個(gè)引用計(jì)數(shù)器,點(diǎn)一個(gè)對象被創(chuàng)建時(shí),且該對象實(shí)例分配給一個(gè)變量,該變量計(jì)數(shù)設(shè)置為1 ,當(dāng)任何其他變量賦值為這個(gè)對象的引用時(shí),計(jì)數(shù)加1 ,(a=b ,則b引用的對象實(shí)例計(jì)數(shù)器+1)但當(dāng)一個(gè)對象實(shí)例的某個(gè)引用超過了生命周期或者被設(shè)置為一個(gè)新值時(shí),對象實(shí)例的引用計(jì)數(shù)器減1,任何引用計(jì)數(shù)器為0 的對象實(shí)例可以當(dāng)做垃圾收集。 當(dāng)一個(gè)對象的實(shí)例被垃圾收集是,它引用的任何對象實(shí)例的引用計(jì)數(shù)器減1.

6.堆排序:

1.堆

堆實(shí)際上是一棵完全二叉樹,其任何一非葉節(jié)點(diǎn)滿足性質(zhì):

Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]或者Key[i]>=Key[2i+1]&&key>=key[2i+2]

即任何一非葉節(jié)點(diǎn)的關(guān)鍵字不大于或者不小于其左右孩子節(jié)點(diǎn)的關(guān)鍵字。

堆分為大頂堆和小頂堆,滿足Key[i]>=Key[2i+1]&&key>=key[2i+2]稱為大頂堆,滿足 Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]稱為小頂堆。由上述性質(zhì)可知大頂堆的堆頂?shù)年P(guān)鍵字肯定是所有關(guān)鍵字中最大的,小頂堆的堆頂?shù)年P(guān)鍵字是所有關(guān)鍵字中最小的。

2.堆排序的思想

利用大頂堆(小頂堆)堆頂記錄的是最大關(guān)鍵字(最小關(guān)鍵字)這一特性,使得每次從無序中選擇最大記錄(最小記錄)變得簡單。

其基本思想為(大頂堆):

1)將初始待排序關(guān)鍵字序列(R1,R2….Rn)構(gòu)建成大頂堆,此堆為初始的無須區(qū);

2)將堆頂元素R[1]與最后一個(gè)元素R[n]交換,此時(shí)得到新的無序區(qū)(R1,R2,……Rn-1)和新的有序區(qū)(Rn),且滿足R[1,2…n-1]<=R[n];

3)由于交換后新的堆頂R[1]可能違反堆的性質(zhì),因此需要對當(dāng)前無序區(qū)(R1,R2,……Rn-1)調(diào)整為新堆,然后再次將R[1]與無序區(qū)最后一個(gè)元素交換,得到新的無序區(qū)(R1,R2….Rn-2)和新的有序區(qū)(Rn-1,Rn)。不斷重復(fù)此過程直到有序區(qū)的元素個(gè)數(shù)為n-1,則整個(gè)排序過程完成。

操作過程如下:

1)初始化堆:將R[1..n]構(gòu)造為堆;

2)將當(dāng)前無序區(qū)的堆頂元素R[1]同該區(qū)間的最后一個(gè)記錄交換,然后將新的無序區(qū)調(diào)整為新的堆。

因此對于堆排序,最重要的兩個(gè)操作就是構(gòu)造初始堆和調(diào)整堆,其實(shí)構(gòu)造初始堆事實(shí)上也是調(diào)整堆的過程,只不過構(gòu)造初始堆是對所有的非葉節(jié)點(diǎn)都進(jìn)行調(diào)整。

7.TCP三次握手:

(1)第一次握手:Client將標(biāo)志位SYN置為1,隨機(jī)產(chǎn)生一個(gè)值seq=J,并將該數(shù)據(jù)包發(fā)送給Server,Client進(jìn)入SYN_SENT狀態(tài),等待Server確認(rèn)。

(2)第二次握手:Server收到數(shù)據(jù)包后由標(biāo)志位SYN=1知道Client請求建立連接,Server將標(biāo)志位SYN和ACK都置為1,ack=J+1,隨機(jī)產(chǎn)生一個(gè)值seq=K,并將該數(shù)據(jù)包發(fā)送給Client以確認(rèn)連接請求,Server進(jìn)入SYN_RCVD狀態(tài)。

(3)第三次握手:Client收到確認(rèn)后,檢查ack是否為J+1,ACK是否為1,如果正確則將標(biāo)志位ACK置為1,ack=K+1,并將該數(shù)據(jù)包發(fā)送給Server,Server檢查ack是否為K+1,ACK是否為1,如果正確則連接建立成功,Client和Server進(jìn)入ESTABLISHED狀態(tài),完成三次握手,隨后Client與Server之間可以開始傳輸數(shù)據(jù)了。

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

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

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