图解三次握手四次挥手,小白都能看懂

        TCP协议规定,在传送数据之前必须建立连接(三次握手),在数据传送结束后要释放连接(四次挥手)。

       TCP报文段首部如下图,在介绍三次握手和四次挥手前,需要了解TCP报文段首部的一些字段,由于是小白都能看懂系列,只介绍几个必须知道的:

图解三次握手四次挥手,小白都能看懂_第1张图片
  • seq 序号:seq是作为发送方而言,所发送数据的第1个字节的序号。

  • ack 确认号:ack是作为接收方而言,期望接收到的下一个报文段的第1个字节的序号。
           上面两个字段什么意思呢,举个例子,A给B发送一段TCP报文,这段报文里seq=100,表示A向B发送的数据第1个字节的序号是100,如果这段报文的数据长度是200个字节,那么B在正确收到这段报文后,要向A回一个报文,这段报文里ack=100+200+1=301,表示B期望接收到的下一个报文段的第一个字节的序号为301。
           如果B回复的报文2中ack<301,假设是201,这说明从序号201~300的数据B都没有收到!这时候A就知道了需要重新发送这些丢失的数据,这就是TCP保证可靠传输的方式之一。
           那么你肯定有疑问,一个报文里既有seq又有ack,那它到底是发送方还是接收方呢?答:TCP是全双工的,能同时发送和接收,那通信双方既可以作为发送方又可以作为接收方,因此,A在向B发送数据的这个报文也携带了回复B的ack,也就是seq和ack同时有效。当然,也可以像前面说的那样,一个作为发送方一个作为接收方,此时让两个字段中的一个有效就行了。

  • SYN 同步位:SYN&

你可能感兴趣的:(计算机网络,TCP,三次握手,四次挥手)