Skip to content

第 16 题:谈谈你对 TCP 三次握手和四次挥手的理解 #15

Open
@jinggk

Description

@jinggk

Activity

GuoYuFu123

GuoYuFu123 commented on Feb 20, 2019

@GuoYuFu123

image

phantomlution

phantomlution commented on Feb 21, 2019

@phantomlution

4次挥手中,如果没有(稍等,还有最后一个包),那是不是就是三次挥手???

GuoYuFu123

GuoYuFu123 commented on Feb 21, 2019

@GuoYuFu123

4次挥手中,如果没有(稍等,还有最后一个包),那是不是就是三次挥手???

不是的,当A告诉B,要关闭的时候,B可能还有一个包正在传输中,所以是等正在传输中的这个包传输完毕之后再回复A一下,我的图中表述的有点问题

fisher-zh

fisher-zh commented on Mar 1, 2019

@fisher-zh

4次挥手中,如果没有(稍等,还有最后一个包),那是不是就是三次挥手???

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭,所以即使没有最后一个包,也需要先回复断开连接的请求,然后再发送关闭请求

zhuziyi1989

zhuziyi1989 commented on Mar 4, 2019

@zhuziyi1989

男:我要挂了哦
女:等哈,我还要敷面膜
女:我敷完了,现在可以挂了
男:我舍不得挂,你挂吧
女:好吧,我挂了
男:等了2MSL听见嘟嘟嘟的声音后挂断

cyh41

cyh41 commented on Mar 6, 2019

@cyh41

字挺好看的

haoshuai666

haoshuai666 commented on Mar 12, 2019

@haoshuai666

男:我要挂了哦
女:等哈,我还要敷面膜
女:我敷完了,现在可以挂了
男:我舍不得挂,你挂吧
女:好吧,我挂了
男:等了2MSL听见嘟嘟嘟的声音后挂断

这个可是有点厉害了

changed the title [-]关于第16题的见解[/-] [+]第 16 题:谈谈你对 TCP 三次握手和四次挥手的理解[/+] on Apr 26, 2019
AlertTed

AlertTed commented on May 13, 2019

@AlertTed

TCP三次握手:1、客户端发送syn包到服务器,等待服务器确认接收。2、服务器确认接收syn包并确认客户的syn,并发送回来一个syn+ack的包给客户端。3、客户端确认接收服务器的syn+ack包,并向服务器发送确认包ack,二者相互建立联系后,完成tcp三次握手。四次握手就是中间多了一层 等待服务器再一次响应回复相关数据的过程

LeoMelody

LeoMelody commented on Jul 11, 2019

@LeoMelody

三次握手之所以是三次是保证client和server均让对方知道自己的接收和发送能力没问题而保证的最小次数。

第一次client => server 只能server判断出client具备发送能力
第二次 server => client client就可以判断出server具备发送和接受能力。此时client还需让server知道自己接收能力没问题于是就有了第三次
第三次 client => server 双方均保证了自己的接收和发送能力没有问题

其中,为了保证后续的握手是为了应答上一个握手,每次握手都会带一个标识 seq,后续的ACK都会对这个seq进行加一来进行确认。

w3cmark

w3cmark commented on Jul 13, 2019

@w3cmark
  • MSL

Maximum Segment Lifetime,译为“报文最大生存时间”。RFC 793中规定MSL为2分钟,实际应用中常用的是30秒,1分钟和2分钟等

  • 为什么是2MSL

2MSL即两倍的MSL,TCP的TIME_WAIT状态也称为2MSL等待状态。

当TCP的一端发起主动关闭,在发出最后一个ACK包后,即第3次握手完成后发送了第四次握手的ACK包后就进入了TIME_WAIT状态,必须在此状态上停留两倍的MSL时间。

等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包,主动关闭端接到重发的FIN包后可以再发一个ACK应答包。

TIME_WAIT状态时两端的端口不能使用,要等到2MSL时间结束才可继续使用。
当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。不过在实际应用中可以通过设置SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口。

参考来源:https://blog.csdn.net/overstack/article/details/8833894

mongonice

mongonice commented on Jul 16, 2019

@mongonice

27 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @zhuziyi1989@gdkttt@w3cmark@xiaocongWang@shifengdiy

        Issue actions

          第 16 题:谈谈你对 TCP 三次握手和四次挥手的理解 · Issue #15 · Advanced-Frontend/Daily-Interview-Question