浅谈三次握手

1.网络7层协议

网络7层协议中,上三层是我们用户层的(application),下四层为内核层,开发人员负责的就是上三层
在这里插入图片描述
三次握手是发生在传输控制层的
首先了解三次捂手之前先了解下状态
这里我用win来演示
netstat-ano
这里我是启动了一些服务的
在这里插入图片描述
我们可以看到从左到右分别是 协议–本地地址–外部地址–状态–PID
我们可以看到几个熟悉的端口 6379(redis) 8080 40171,40172是我开启的服务端口
可以看到他们的状态都是LISTENING(监听状态)
此时的LISTENING表示服务端已经启动,外部还没有连接进来,正处于监听状态


在这里插入图片描述
当我去连接 40171,40172的时候,就会看到 外部地址有地址了,而且状态变成了,ESTABLISHED
当前表示三次握手已经完成可以通信了

现在我们知道了服务的两种状态 LISTENING(监听) 和ESTABLISHED(就绪)
下面我们开来看看其他的状态
在这里插入图片描述
这里·我们看到了 第二行SYN_SENT,FIN_WAIT_1 ,TIME_WAIT ,CLOSE_WAIT

这里只有第一个是发生在三次捂手时候的状态其他的都是四次分手的时候
左边客户端,右边服务端

在这里插入图片描述
我们可以看到Client一开始状态就是SYN_SENT,之后像服务端发送SYN包,服务端在接受到SYN包之后,进入SYN_RCVD状态,之后把SYN+ACK包发送给客户端,此时客户端进入ESTABLISHED状态,并且返回ACK包,所有操作做完,服务端进入ESTABLISHED状态,
上面我们看到 PID1192状态为SYN_SENT状态,说明他发送给客户端SYN,服务端没有返回SYN+ACK包,所以客户端状态没法更新

SYN_RCVD
SYN_RCVD服务端状态
在客户端启动搞的时候最开始是LISTENING状态,客户端连接之后会进入一个LISTEN-SOCKET,在socket中,客户端没有收到服务端发送的SYN包,所以就进入了SYN_RCVD

当所有状态都进入就绪状态的时候,三次捂手就是完成了,现在可以发送数据了,但是发送数据,怎么发送,往那里发送,这就要进入下一层,这里就不讲了,下面说是四次分手


四次分手

在要断开链接的时候,
在这里插入图片描述

未完待续

注:以上都是看马士兵课程总结的笔记

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值