网络基础-三次握手

三次握手的作用和意义

 

1.通信双方了解到彼此的存在,客户端是探测服务端的存在,服务端是感知到客户端的存在

2.彼此交换链接参数信息,用于协商链接的配置属性

 

过程如下:

第一步:客户端发送SYN报文段给服务端,内容包含要要连接的的端口号和自己随机生成的初始序号(这个初始序叫(ISN(c)))

第二步:服务端发送SYN报文段作为相应,内容包含,自己随机生成的初始序列号(这个初始序列叫ISN(s)),和ACK,这个ACK是第一步的客户端发来的序列号+1

第三步:客户端发送SYN报文段,发送第二步的服务端的初始序列号+1作为ACK

 

自此之后,客户端和服务端发送的任何报文段的序列号逐次递增?

 

思考,如果第三步,客户端没有收到任何报文段,那么多长时间会放弃等待呢?

思考,序列号用完了怎么办?会出现问题吗?

思考,当第三步完成,服务端要等待ACK,那么此时服务端一直等不到ACK的到来,那么服务端会认为失败吗?等待这个ACK需要多长时间呢?

 

为何是三次握手,而不是四次握手?

 

TCP协议从三次握手可以看出有一个显著的特点,有报文段,必然有ACK报文段!!!保证报文段必须被对方收到!!!若对方没有收到,就认为网络有问题,那么自己再重发一次,若多次发送,仍然没有收到ACK,那么就认为对方已经掉线了,放弃这个链接。

 

各种mq和rpc框架需要ack的原因?

因为tcp协议层发送数据在应用层无法感知是否通过网卡发送出去,是否已经发送到网卡的发送缓冲区,更无法感知是否已经被对方收到,所以,需要使用应用层的ACK机制来让对方确认是否已经收到。

 

应用层协议需要心跳检测的原因?

根本的原因TCP协议没有空闲检测机制,需要让应用层尽量早的发现网络已经断开连接,若是客户端,则马上重连,若是服务端,则马上销毁这个链接,释放资源。

 

转载于:https://www.cnblogs.com/weiguangyue/p/10555228.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值