TCP三次握手,扫描式解析

TCP


最近在准备秋招,复习到TCP三次握手的时候,总感觉描述不够,于是查阅各方资料,整理得出了这篇笔记,下面我逐一叙述:

  1. TCP是什么?
    TCP(Transmission Control Protocol),中文释义传输控制协议,是TCP/IP四层模型中位于传输层的网络协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义,是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议

  2. 为什么要进行TCP的三次握手?
    TCP的三次握手旨在决定客户端和服务器端各自均可进行收发报文,保证数据的传输没有问题

  3. TCP报文格式
    在这里插入图片描述
    在这里插入图片描述
    关于TCP的三次握手,需要我们知晓其中的几个部分:
    a. 序号和确认号:是TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节一个序号。如一个报文段的序号为300,此报文段共有100字节,则下一个报文段的序号为400.所以序号确保了TCP传输的有序性。确认号,即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。比如建立连接时,SYN报文的ACK标志为0
    b.控制位:URG,ACK,PSH,RST,SYN,FIN,共6个,每一个标志位表示一个控制功能。
    URG:紧急指针标志,为1时表示紧急指针有效,为0时表示忽略紧急指针
    ACK:确认序号标志,为1时表示确认号有效,为0时表示报文中不含确认信息,忽略确认号字段
    PSH:push标志,为1时表示带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队
    RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求
    SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1
    FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本书数据流

  4. TCP三次握手
    明确上面的内容后,我们开始吧

在这里插入图片描述
三次握手的过程描述(依据上图)
第一次握手:主机C发送位码SYN=1,ACK=0,随机产生Seq number = 123456的数据包到服务器,主机S,通过SYN=1可以知晓主机C要建立连接
第二次握手:主机S收到请求后要确认联机信息,向C发送确认号,依据确认号的描述(指明下一个期待收到的字节序号),故确认号为 ACK Number = 主机C的Sqe + 1,同时发送SYN = 1,ACK = 1(标志确认号有效),随机产生Seq Number = 654321的数据包发送给C
第三次握手:主机C收到后检查Ack Number是否正确,即第一次发送的seq number+1,以及位码ACK是否为1,若正确,主机C会再发送ACK Numbe r= 主机S的Seq + 1,ACK=1,主机S收到后确认Seq值与ACK=1则连接建立成功

三次握手的作用:
第一次握手:S只可以确认自己可以接收C发的报文段
第二次握手:C可以确认S收到了自己发送的报文段,并且可以确认自己可以接收S发送的报文段
第三次握手:S可以确认C收到了自己发送的报文段
总结得就是:两方都确认了自己可以确保报文的收发没有问题,那么接下来就可以进行数据的传输了
其实,用一句话描述TCP三次握手就是:C发送请求连接S确认,S也发送请求连接C确认

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值