三次握手

2018-09-07  本文已影响0人  梦san国

                               一些容易忘的概念  

1.三次握手四次挥手: 

                        简明理解三次握手和四次挥手 - CSDN博客

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

问题1: 为什么要三次握手?

    三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收机能正常。

        第一次握手:Client什么都不能确认;Server确认了对方发送正常

        第二次握手:Client确认了:自己发送、接收正常,对方发送、接收正常;Server确认了:自己接收正常,对方发送正常

        第三次握手:Client确认了:自己发送、接收正常,对方发送、接收正常;Server确认了:自己发送、接收正常,对方发送接收正常

        所以三次握手就能确认双发收发功能都正常,缺一不可。

问题2:为什么要发送特定的数据包,随便发不行吗?

        三次握手的另外一个目的就是确认双方都支持TCP,告知对方用TCP传输。

第一次握手:Server 猜测Client可能要建立TCP请求,但不确定,因为也可能是Client乱发了一个数据包给自己。

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

第三次握手:通过ack=K+1,Server知道Client是支持TCP的,且确实是要建立TCP连接。

问题3:上图中的SYN和ACK是什么?

答:SYN是标志位,SYN=1表示请求连接;

ACK其实就是ack后面加上的那个数,真正发送的时候不单独发ACK,只发ack。

问题4: 为什么要四次挥手?

答:根本原因是,一方发送FIN只表示自己发完了所有要发的数据,但还允许对方继续把没发完的数据发过来。

        举个例子:A和B打电话,通话即将结束后,A说“我没啥要说的了”,B回答“我知道了”,但是B可能还会有要说的话,A不能要求B跟着自己的节奏结束通话,于是B可能又巴拉巴拉说了一通,最后B说“我说完了”,A回答“知道了”,这样通话才算结束。

问题2:为什么双方要发送这样的数据包?

答:和握手的情况类似,只是为了让对方知晓自己理解了对方的意图。

2.python垃圾回收机制

       1. python采用的是引用计数机制为主,标记-清除分代收集两种机制为辅的策略。

        2.python里每一个东西都是对象,它们的核心就是一个结构体:PyObject

3.当引用计数为0时,该对象生命就结束了。

引用计数机制的缺点:维护引用计数消耗资源循环引用

list1 = []

list2 = []

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

上一篇 下一篇

猜你喜欢

热点阅读