三次握手

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 一些容易忘的概念 ?

1.三次握手四次揮手:?

????????????????????????簡明理解三次握手和四次揮手 - CSDN博客

? ? ? ? ? ? ? ? ? ? ? ? ?? https://blog.csdn.net/zixiaomuwu/article/details/60965466

問題1: 為什么要三次握手?

????三次握手的目的是建立可靠的通信信道,說到通訊,簡單來說就是數(shù)據(jù)的發(fā)送與接收,而三次握手最主要的目的就是雙方確認自己與對方的發(fā)送與接收機能正常。

????????第一次握手:Client什么都不能確認;Server確認了對方發(fā)送正常

??????? 第二次握手:Client確認了:自己發(fā)送、接收正常,對方發(fā)送、接收正常;Server確認了:自己接收正常,對方發(fā)送正常

??????? 第三次握手:Client確認了:自己發(fā)送、接收正常,對方發(fā)送、接收正常;Server確認了:自己發(fā)送、接收正常,對方發(fā)送接收正常

????????所以三次握手就能確認雙發(fā)收發(fā)功能都正常,缺一不可。

問題2:為什么要發(fā)送特定的數(shù)據(jù)包,隨便發(fā)不行嗎?

????????三次握手的另外一個目的就是確認雙方都支持TCP,告知對方用TCP傳輸。

第一次握手:Server 猜測Client可能要建立TCP請求,但不確定,因為也可能是Client亂發(fā)了一個數(shù)據(jù)包給自己。

第二次握手:通過ack=J+1,Client知道Server是支持TCP的,且理解了自己要建立TCP連接的意圖。

第三次握手:通過ack=K+1,Server知道Client是支持TCP的,且確實是要建立TCP連接。

問題3:上圖中的SYN和ACK是什么?

答:SYN是標志位,SYN=1表示請求連接;

ACK其實就是ack后面加上的那個數(shù),真正發(fā)送的時候不單獨發(fā)ACK,只發(fā)ack。

問題4: 為什么要四次揮手?

答:根本原因是,一方發(fā)送FIN只表示自己發(fā)完了所有要發(fā)的數(shù)據(jù),但還允許對方繼續(xù)把沒發(fā)完的數(shù)據(jù)發(fā)過來。

??????? 舉個例子:A和B打電話,通話即將結(jié)束后,A說“我沒啥要說的了”,B回答“我知道了”,但是B可能還會有要說的話,A不能要求B跟著自己的節(jié)奏結(jié)束通話,于是B可能又巴拉巴拉說了一通,最后B說“我說完了”,A回答“知道了”,這樣通話才算結(jié)束。

問題2:為什么雙方要發(fā)送這樣的數(shù)據(jù)包?

答:和握手的情況類似,只是為了讓對方知曉自己理解了對方的意圖。

2.python垃圾回收機制

? ? ?? 1. python采用的是引用計數(shù)機制為主,標記-清除分代收集兩種機制為輔的策略。

? ? ? ? 2.python里每一個東西都是對象,它們的核心就是一個結(jié)構(gòu)體:PyObject

3.當引用計數(shù)為0時,該對象生命就結(jié)束了。

引用計數(shù)機制的缺點:維護引用計數(shù)消耗資源循環(huán)引用

list1 = []

list2 = []

list1.append(list2)list2.append(list1)

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

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