TCP连接建立过程

TCP

特点
  • Tcp是面向连接传输层协议
  • 每一条Tcp连接只能有两个端点
  • Tcp提供可靠的交付服务
  • Tcp提供全双工的通信
  • Tcp是面向字节流的
报文段首部

在这里插入图片描述

  • 源端口和目的端口就是建立连接的两个主机所分配的端口号
  • 序号就是发送的报文段的编号,占4字节,共32位也就是4294967296个序号,超过这个范围值时将回到序号0,也就是序号使用mod 2^32的运算
  • 确认号则是期望对方下一个报文段的第一个数据字节的序号。例如B收到了A 的一个报文段,序号字段值位36,而数据长度是20字节,则表示收到了36~55的数据,则下一个期望的序号就是56,即确认号是56
  • 数据偏移指的Tcp数据字段距Tcp报文段起始位置有多远,也就是规定了Tcp首部的长度,因为Tcp首部有可选字段。因为数据偏移只有4位,则数据偏移的最大值为60字节,也就是Tcp首部最大长度为60字节
  • 保留位:目前置0,供以后使用
  • URG:紧急指针,置1时表示紧急指针有效
  • ACK:ACK=1时,确认字段有效
  • PSH:推送,为1时立即创建报文段发送出去
  • RST复位,Tcp出现严重差错,必须释放Tcp连接
  • SYN:Tcp建立连接时来同步序号
  • FIN:用来终止Tcp连接
  • 窗口:窗口值用来限制对方发送的数据窗口,在滑动窗口部分有讲,可以回头翻翻。
  • 检验和
TCP的连接

Tcp连接的端点称之为套接字或插口。
套接字socket={IP地址 : 端口号port}
则每一个Tcp连接唯一地被通信两端的两个套接字所确定:
TCP::= {socket1, socket2};

TCP的连接的建立

我们将TCP的建立连接的过程称为握手,在建立连接的过程需要交换三个TCP报文段,所以TCP的建立连接也称为三报文握手
我们来看过程

在这里插入图片描述

  1. 首先客户端向服务端发送带有SYN=1的建立连接请求,seq为数据包序号
  2. 服务端收到后,将ACK 置为1表示确认收到,将ack字段设为 x + 1表示已收到序号为x的数据包,期望下一个收到的是x + 1数据包。然后发送SYN = 1,表示请求建立连接(这才能保证全双工通信)
  3. 客户端向服务端发送确认收到的报文,ACK=1表示确认收到2过程中的报文,同理将ack设为y + 1,表示下一个期望收到的是y + 1数据包,然后发送服务端期望发送的数据包 x+ 1
为什么要三次握手?

这样才能保证可靠传输。
第一次握手时,对于客户端,它不能确认任何东西,对于服务端,它能确认客户端发送没问题,服务端接收没问题。
第二次握手时,对于客户端,它能确认客户端发送没问题,接收没问题,服务端发送没问题,接收没问题。而对于服务端,它只能能确认客户端发送没问题,服务端接收没问题。
第三次握手时,服务端能确认客户端接收没问题,服务端发送没问题。
如此,能保证可靠的全双工的传输。

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lengsa丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值