计算机网络 TCP三报文握手、四报文挥手

三报文握手

        三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。

TCP连接要解决以下三个问题

1. 使TCP双方能够确知对方的存在。

2.使TCP双方能够协商一些参数(如最大窗口值等)。

3.使TCP双方能够对运输实体资源(如缓存大小,连接表中的项目)进行分配。

三报文握手:

1.开始TCP客户和TCP服务器都处于关闭状态,两者都先建立传输控制块。然后TCP服务器进入监听状态,等待TCP客户进程的连接请求。TCP服务器进程是被动等待来自TCP客户的连接请求,而不是主动发起,所以被称为被动打开。(参考湖科大计网视频写的三报文握手过程)

2.TCP客户发送连接请求报文段,并进入连接已发送状态。TCP连接请求报文段的同步位SYN被设为1,表明这是一个连接请求报文段。序号字段seq被设为x。作为TCP进程所选择的初始序号。 TCP规定SYN设为1的报文段不能携带数据,但要消耗掉一个序号。由于TCP连接建立是由TCP客户主动发起的,所以被称为主动打开。

3.TCP服务器进程如果收到TCP连接请求报文段后,如果同意建立连接,则向TCP客户进程发送TCP连接请求确认报文段,并进入同步已接收状态。该报文段首部中的同步位SYN和确认位ACK都设为1,表明这是一个TCP连接请求确认报文段。序号字段seq被设为y,作为TCP服务器进程所选择的初始序号。确认号ack的值被设为x+1,这是对TCP客户进程所选择的初始序号的确认(因为请求报文段消耗掉一个数据)。

4.TCP客户进程收到TCP连接请求确认报文段后,要向TCP服务器进程发送一个普通的TCP确认报文段。并进入连接已建立状态。该确认报文段中的ACK被设为1,序号字段seq被设为x+1,确认号字段ack被设为y+1,TCP服务器进程收到该确认报文段后也进入连接已建立状态。现在TCP双方都建立连接已建立状态。

 为什么最后还要发送一个普通的TCP确认报文段呢,换句话说能不能简化为“两报文握手”?

不多余,这是为了防止已实效的连接请求报文段突然又传送到了服务器,因而导致错误,浪费网络资源。

(在socket编程中,客户端执行connect()时,将触发三次握手)

四报文挥手,暂略,如果需要我写,收藏或留言即可,感谢您的观看哦 !

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃代码的航航

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值