成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官竟然把TCP三次握手、四次揮手問的這么詳細(xì)?

網(wǎng)絡(luò)
本文會圍繞,從三次握手和四次揮手相關(guān)的一系列核心問題,分享如何更準(zhǔn)確回答和應(yīng)對常見的面試問題,以后面對再刁鉆的面試官,你都可以隨意地跟他扯皮了。

TCP的定義

TCP全稱為Transmission Control Protocol(傳輸控制協(xié)議),是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。TCP是為了在不可靠的互聯(lián)網(wǎng)絡(luò)上提供可靠的端到端字節(jié)流而專門設(shè)計(jì)的一個傳輸協(xié)議。

TCP的三次握手和四次揮手,可以說是老生常談的經(jīng)典問題了,通常也作為各大公司常見的面試考題,具有一定的水平區(qū)分度。看似簡單的面試問題。如果你的回答不符合面試官期待的水準(zhǔn),有可能就直接涼涼了。

本文會圍繞,從三次握手和四次揮手相關(guān)的一系列核心問題,分享如何更準(zhǔn)確回答和應(yīng)對常見的面試問題,以后面對再刁鉆的面試官,你都可以隨意地跟他扯皮了

優(yōu)雅回答三次握手

三次握手: 服務(wù)端新建套接字,綁定地址信息后開始監(jiān)聽,進(jìn)入LISTEN狀態(tài)??蛻舳诵陆ㄌ捉幼纸壎ǖ刂沸畔⒑笳{(diào)用connect,發(fā)送連接請求SYN,并進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器的確認(rèn)。服務(wù)端一旦監(jiān)聽到連接請求,就會將連接放入內(nèi)核等待隊(duì)列中,并向客戶端發(fā)送SYN和確認(rèn)報(bào)文段ACK,進(jìn)入SYN_RECD狀態(tài)??蛻舳耸盏絊YN+ACK報(bào)文后向服務(wù)端發(fā)送確認(rèn)報(bào)文段ACK,并進(jìn)入ESTABLISHED狀態(tài),開始讀寫數(shù)據(jù)。服務(wù)端一旦收到客戶端的確認(rèn)報(bào)文,就進(jìn)入ESTABLISHED狀態(tài),就可以進(jìn)行讀寫數(shù)據(jù)了

圖片

1. 為什么握手是三次,而不是兩次或者四次?

答:兩次不安全,四次沒必要。tcp通信需要確保雙方都具有數(shù)據(jù)收發(fā)的能力,得到ACK響應(yīng)則認(rèn)為對方具有數(shù)據(jù)收發(fā)的能力,因此雙方都要發(fā)送SYN確保對方具有通信的能力。

  • 第一次握手是客戶端發(fā)送SYN,服務(wù)端接收,服務(wù)端得出客戶端的發(fā)送能力和服務(wù)端的接收能力都正常;
  • 第二次握手是服務(wù)端發(fā)送SYN+ACK,客戶端接收,客戶端得出客戶端發(fā)送接收能力正常,服務(wù)端發(fā)送接收能力也都正常,但是此時服務(wù)器并不能確認(rèn)客戶端的接收能力是否正常;
  • 第三次握手客戶端發(fā)送ACK,服務(wù)器接收,服務(wù)端才能得出客戶端發(fā)送接收能力正常,服務(wù)端自己發(fā)送接收能力也都正常。

2. 三次握手可以攜帶數(shù)據(jù)嗎?

答:第一次、第二次握手不可以攜帶數(shù)據(jù),而第三次握手是可以攜帶數(shù)據(jù)的。假設(shè)第一次可以攜帶數(shù)據(jù),如果有人惡意攻擊服務(wù)器,每次都在第一次握手中的SYN報(bào)文放入大量數(shù)據(jù),重復(fù)發(fā)送大量SYN報(bào)文,此時服務(wù)器會花費(fèi)大量內(nèi)存空間來緩沖這些報(bào)文,服務(wù)器就更容易被攻擊了。

3. TCP三次握手失敗,服務(wù)端會如何處理?

答:握手失敗的原因有兩種,第一種是服務(wù)端沒有收到SYN,則什么都不做;第二種是服務(wù)端回復(fù)了SYN+ACK后,長時間沒有收到ACK響應(yīng),則超時后就會發(fā)送RST重置連接報(bào)文,釋放資源

4. ISN代表什么?意義何在?ISN是固定不變的嗎?ISN為何要動態(tài)隨機(jī)

答:ISN全稱是Initial Sequence Number,是TCP發(fā)送方的字節(jié)數(shù)據(jù)編號的原點(diǎn),告訴對方我要開始發(fā)送數(shù)據(jù)的初始化序列號。

ISN如果是固定的,攻擊者很容易猜出后序的確認(rèn)號,為了安全起見,避免被第三方猜到從而發(fā)送偽造的RST報(bào)文,因此ISN是動態(tài)生成的。

5. 什么是半連接隊(duì)列

答:服務(wù)器第一次收到客戶端的SYN之后,就會處于SYN_RECD狀態(tài),此時雙方還沒有完全建立連接。服務(wù)器會把這種狀態(tài)下的請求連接放在一個隊(duì)列里,我們把這種隊(duì)列稱之為半連接隊(duì)列。當(dāng)然還有一個全連接隊(duì)列,就是已經(jīng)完成三次握手,建立起來連接的就會放在全連接隊(duì)列中,如果隊(duì)列滿了就有可能出現(xiàn)丟包現(xiàn)象。

優(yōu)雅回答四次揮手

四次揮手:

  • 客戶端主動調(diào)用close時,向服務(wù)端發(fā)送結(jié)束報(bào)文段FIN報(bào),同時進(jìn)入FIN_WAIT1狀態(tài);
  • 服務(wù)器會收到結(jié)束報(bào)文段FIN報(bào),服務(wù)器返回確認(rèn)報(bào)文段ACK并進(jìn)入CLOSE_WAIT狀態(tài),此時如果服務(wù)端有數(shù)據(jù)要發(fā)送的話,客戶端依然需要接收。客戶端收到服務(wù)器對結(jié)束報(bào)文段的確認(rèn),就會進(jìn)入到FIN_WAIT2狀態(tài),開始等待服務(wù)器的結(jié)束報(bào)文段;
  • 服務(wù)器端數(shù)據(jù)發(fā)送完畢后,當(dāng)服務(wù)器真正調(diào)用close關(guān)閉連接時,會向客戶端發(fā)送結(jié)束報(bào)文段FIN包,此時服務(wù)器進(jìn)入LAST_ACK狀態(tài),等待最后一個ACK的帶來;
  • 客戶端收到服務(wù)器發(fā)來的結(jié)束報(bào)文段, 進(jìn)入TIME_WAIT, 并發(fā)出送確認(rèn)報(bào)文段ACK;服務(wù)器收到了對結(jié)束報(bào)文段確認(rèn)的ACK,進(jìn)入CLOSED狀態(tài),斷開連接。而客戶端要等待2MSL的時間,才會進(jìn)入到CLOSED狀態(tài)。

圖片

6. 為什么握手是三次,而揮手時需要四次呢?

答:其實(shí)在TCP握手的時候,接收端將SYN包和ACK確認(rèn)包合并到一個包中發(fā)送的,所以減少了一次包的發(fā)送。對于四次揮手,由于TCP是全雙工通信,主動關(guān)閉方發(fā)送FIN請求不代表完全斷開連接,只能表示主動關(guān)閉方不再發(fā)送數(shù)據(jù)了。

而接收方可能還要發(fā)送數(shù)據(jù),就不能立即關(guān)閉服務(wù)器端到客戶端的數(shù)據(jù)通道,所以就不能將服務(wù)端的FIN包和對客戶端的ACK包合并發(fā)送,只能先確認(rèn)ACK,等服務(wù)器無需發(fā)送數(shù)據(jù)時在發(fā)送FIN包,所以四次揮手時需要四次數(shù)據(jù)包的交互

7. TIME_WAIT狀態(tài)有什么作用,為什么主動關(guān)閉方?jīng)]有直接進(jìn)入CLOSED狀態(tài)釋放資源?

答:如果主動關(guān)閉方進(jìn)入CLOSED狀態(tài)后,被動關(guān)閉方發(fā)送FIN包后沒有得到ACK確認(rèn),超時后就會重傳一個FIN包。如果客戶端沒有TIME_WAIT狀態(tài)而直接進(jìn)入CLOSED狀態(tài)釋放資源,下次啟動新的客戶端就可能使用了與之前客戶端相同的地址信息,有兩個危害:

  • 第一種是這個剛啟動的新的客戶端綁定地址成功時,就會收到了一個重傳的FIN包,對新連接就會造成影響。
  • 第二種是如果該新客戶端向相同的服務(wù)端發(fā)送SYN連接請求,但是此時服務(wù)端處于LAST_ACK狀態(tài),要求收到的是ACK而不是SYN,因此就會發(fā)送RST重新建立請求。

8. 為什么TIME_WAIT狀態(tài)需要經(jīng)過2MSL才能進(jìn)入CLOASE狀態(tài)?

答:MSL指的是報(bào)文在網(wǎng)絡(luò)中最大生存時間。在客戶端發(fā)送對服務(wù)端的FIN確認(rèn)包ACK后,這個ACK包有可能到達(dá)不了,服務(wù)器端如果接收不到ACK包就會重新發(fā)送FIN包。

所以客戶端發(fā)送ACK后需要留出2MSL時間(ACK到達(dá)服務(wù)器器+服務(wù)器發(fā)送FIN重傳包,一來一回)等待確認(rèn)服務(wù)器端缺失收到了ACK包。也就是說客戶端如果等待2MSL時間也沒收到服務(wù)器端重傳的FIN包,則就可以確認(rèn)服務(wù)器已經(jīng)收到客戶端發(fā)送的ACK包。

9. 一臺主機(jī)上出現(xiàn)大量的TIME_WAIT是什么原因?應(yīng)該如何處理?

答:TIME_WAIT是主動關(guān)閉方出現(xiàn)的,一臺主機(jī)出現(xiàn)大量的TIME_WAIT證明這臺主機(jī)上發(fā)起大量的主動關(guān)閉連接。常見于一些爬蟲服務(wù)器。這時候我們應(yīng)該調(diào)整TIME_WAIT的等待時間,或者開啟套接字地址重用選項(xiàng)

10. 一臺主機(jī)上出現(xiàn)大量的CLOSE_WAIT是什么原因?應(yīng)該如何處理?

答:CLOSE_WAIT是被動關(guān)閉方收到FIN請求進(jìn)行回復(fù)之后的狀態(tài),等待上層程序進(jìn)一步處理,若出現(xiàn)大量CLOSE_WAIT,有可能是被動關(guān)閉方主機(jī)程序中忘了最后一步斷開連接后調(diào)用close釋放資源。這是一個 BUG.,只需要加上對應(yīng)的 close 即可解決問題

11. TCP連接管理中的?;顧C(jī)制

答:TCP通信中,若兩端長時間沒有數(shù)據(jù)往來,則這時候每隔一段時間,服務(wù)端會向客戶端發(fā)送一個保活探測數(shù)據(jù)報(bào),要求客戶端進(jìn)行回復(fù)。若連續(xù)多次沒有收到響應(yīng),就認(rèn)為連接已經(jīng)斷開。長時間默認(rèn)為7200s,每隔一段時間默認(rèn)為75s,連續(xù)多次無響應(yīng)默認(rèn)為9次。這些數(shù)據(jù)都可以在套接字中修改,接口:Setsockopt。

責(zé)任編輯:趙寧寧 來源: 網(wǎng)絡(luò)工程師阿龍
相關(guān)推薦

2025-02-13 00:00:00

TCP網(wǎng)絡(luò)通信

2015-10-13 09:42:52

TCP網(wǎng)絡(luò)協(xié)議

2024-01-12 08:23:11

TCPACK服務(wù)器

2023-10-24 15:22:09

TCPUDP

2019-06-12 11:26:37

TCP三次握手四次揮手

2022-11-17 10:20:49

TCP三次握手四次揮手

2021-01-29 06:11:08

TCP通信三次握手

2021-05-18 12:27:40

TCP控制協(xié)議

2025-05-20 08:38:03

2023-10-28 09:07:57

TCP面試三次握手

2021-07-03 17:47:25

TCP控制協(xié)議

2019-02-01 09:38:16

2020-02-17 10:10:43

TCP三次握手四次揮手

2017-09-25 21:27:07

TCP協(xié)議數(shù)據(jù)鏈

2019-04-11 10:10:01

2024-05-07 08:15:33

TCP四次揮手三次握手

2021-05-28 09:08:20

TCP連接序列號

2020-06-29 14:50:47

TCP狀態(tài)ACK

2015-11-09 09:58:56

2021-02-18 07:43:25

TCP協(xié)議網(wǎng)絡(luò)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品一区二区三级 | 精品久久久久久亚洲精品 | 国产在线视频在线观看 | 国产视频久久久 | 99精品国产一区二区三区 | 欧美色成人| 精品一区二区三 | 亚洲国产日韩欧美 | 在线观看亚洲精品视频 | 国产乱码精品一区二区三区五月婷 | 天天操天天玩 | 色免费视频 | 91精品国产综合久久婷婷香蕉 | 成年人在线观看视频 | 91精品中文字幕一区二区三区 | 91日韩| 干狠狠| 欧美一级在线观看 | 久草在线影| 欧美日韩国产三级 | 亚洲一区二区久久 | 91看片视频 | 成人妇女免费播放久久久 | 国产日韩欧美另类 | 国产精品成人在线 | 国产真实乱对白精彩久久小说 | 一级片免费视频 | 日韩www| 国产精品毛片一区二区在线看 | 91影视| 91视频www.| av性色| 午夜久久久久 | 中文字幕精 | jav成人av免费播放 | 99久久久无码国产精品 | 热re99久久精品国99热观看 | 免费在线国产视频 | 中文字幕国产视频 | 在线观看中文字幕视频 | 亚洲视频a|