对TCP三次握手和4四次挥手的简单理解

记录一下对tcp建立连接、数据传输、连接关闭过程的理解,加深印象和以后忘了可以再来查阅。

这里A代表客户端,B代表服务端

tcp三次握手
A---->B      A向B打招呼(A给B发信息说我想和你建立连接)
A<----B      B向A询问你是向我打招呼吗(B向A确认是否要和我建立连接)
A---->B      A再次向B打招呼表明我是和你打招呼(A再次向B建立连接以表达诚意),B收到立即同意并建立了连接

tcp传输数据
write    data    read
A---------------->B
 ack(我收到了数据)   
A<----------------B
read    data     write
A<----------------B
 ack(我收到了数据)   
A---------------->B

A传输数据给B过程
A将数据写进套接字所在WriteBuffer中,内核将套接字WriteBuffer的数据通过网卡将数据发送出去;数据经过路由转发到B所在服务器的网卡写入到B对应套接字口ReadBuffer,B从套接字口的readBuffer中读取数据,B收到数据后回复一个ack消息个A,表明它收到了数据
B传输数据给A过程也是类似的过程,这里就不叙述了。

tcp4次挥手
A是客户端,B是服务端
established                           established
   A-----------------------------------B
fin_wait1     想关闭连接      close_wait
   A--------------------------------->B    A给B发信息说,请关闭连接
fin_wait2          ack               close_wait
   A<---------------------------------B    B给A回复说,好的我知道了
time_wait    我要关闭连接  last_ack
   A<---------------------------------B    B给A发信息说,我要关闭连接了
time_wait        ack               close
   A--------------------------------->B    A给B发消息说收到,B收到后关闭了连接
close                                    close
   A------------         --------------B      A关闭连接释放套接字资源
简单的解释一下
0.开始A和B一直建立者连接,A和B都处于established状态
1.A想关闭关闭连接,A在发送想结束消息后会进入fin_wait1状态.B接收到A发来的想结束连接的消息后,向A发送ack消息,B进入close_wait等待状态;
2.接收到B发回ack消息,进入fin_wait2状态,等待B发出确定关闭的信息;
3.B给发送消息说,我要关闭连接了,B进入last_ack状态,A收到消息后,立即回复一个ack,并且状态进入time_wait状态,在接下来的4分钟一直是这个状态,4分钟过后进入closed的状态
4.B收到A发回的ack消息,关闭连接,释放套接字资源。
A因为是主动要求关闭连接所以,回复了B连接关闭后就进入了time_wait状态,这个状态下面会等待4分钟,4分钟后会进入closed状态,释放套接字资源
为什么会等待4分钟?
1.确保B收到响应,因为A可以重传ack,主要作用是确保B收到了A知道你要关闭了的信息,以免B重传它要关闭的信息
2.清理垃圾报文,等待一段时间确保没有无效的重复报文会因为网络原因延迟到达到,A将这些报文丢弃掉,以免后来的使用这个端口的程序收到垃圾报文

暂时是这样理解的,后面继续加深理解,搞得更清楚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值