TCP连接管理

tcp连接管理
1:SYN连接请求
2:SYNACK确认
3:ACK确认

在这里插入图片描述

三次握手建立连接
首次时服务器先打开监听端口,进入监听状态,
客户端打开临时端口通过这个端口发送连接请求

第一次通信客户端向服务器发送一个报文(第一次握手)这个报文叫做连接请求
报文中的SYN位被置为1,说明这个是同步请求,同时序列号的部分被设置一个值x的,这个x值表示客户端发给服务器的数据并所有的数据以x作为起始顺序编号,后续就是 x+1、x+2、x+3
接收方按顺序接收x、x+1、x+2、x+3
如果中间发现序号缺失,那么就会通知对方重传,这样通过确认的方式来保证可靠传输,所以客户端通知服务器的初始的序号很重要,所以叫做同步请求,实际就是协商通信使用的初始信号,当服务器收到同步请求之后,如果服务器能对客户端进行通信那么这个时候服务器要返回一个确认,那么这个时候确认位(ACK)就要置为1,表示服务器发送数据已经携带了一个数据
tcp的传输过程中可以捎带确认,这个时候只将ACK置为1,就表明报文里含有确认信息,ack就是捎带的确认信息,这样的确认号的值就是x+1,这里+1的含义表示:
客户端的seq报文受到了接下来要让客户端发送x+1的数据

服务器首次给客户端返回数据会携带一个服务器端提供的序列编号(seq)这样就会告诉客户端,服务器的序列号将是从Y开始的,后续排列Y+1,Y+2

当客户端收到服务器的SYN的同步信息之后,因此客户端收到服务器回复报文之后,在第三次握手的时候(客户端发起)报文中内部包含一个ACK确认信息,这个确认信息是告诉服务器上次的报文已经到了,确认号(ack)+1 就是 y+1
这样通过的三次数据交换 三次握手就建立成功连接建立成功之后双方就可以就行数据传送,
但是在数据传送中 双方必须按照协商好的编号进行发送,如果不按照编号发送就表示出错了

建立连接的状态
对于客户端
一开始端口是关闭的,发送连接之前,它必须从关闭进入打开状态, 打开之后 等待第一次握手就进入syn-sent 状态 连接请求已经发送出去了,还没等到对方的确认,当对方的确认信息返回之后,再次发送第三次握手后,这时候就进入一个叫做连接建立的状态,连建立之后就可以通信 ,如果没有连接建立状态是不能发送数据的

对于服务器
一开始端口是关闭的,而后进入开启端口监听状态,监听状态时就准备接收客户端的连接请求,当有请求达到的时候,如果服务器同意这个请求并返回一个确认的时候 这个状态就会变成 syn-rcvd状态, 只有当对方的第三次连接到达以后,就会进入数据连接的状态,只有在连接的状态下才能接收对方数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值