TCP三次握手四次

TCP协议即为传输控制协议
所谓的“三次握手”即对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。
首先需要知道TCP报文段以及其字段含义在这里插入图片描述

源端口号:发送方进程端口号

目标端口号:目的端口对应进程

序号(Sep):为每个字节进行编号,随机产生首个序号(0~65535)后顺序产生,以便于接收端正确重组。独立产生,一个链接里A B双方的序号可以相同!

确认号(Ack):对发送端的回应消息,X+1,X=对方序号

首部长度: TCP报头的大小,默认20字节

保留:没有实际用处

URG:紧急位 0 or 1 1就是生效 0是不生效

ACK:ACK=1时,确认号生效, ACK=0时,确认号不生效

PSH:标志位为1时,通知尽快将数据送至应用层

RST:当RST为1时,通知重新建立TCP链接

SYN:同步序号位,TCP需要建立链接时,为1

FIN:FIN=1时,断开链接

窗口大小:大小可变,流控机制可以根据窗口大小

校验和:用来差错控制,发送端通过算法算出一个值,接收端也算出一个值,值一样则没问题,值不同则丢弃该数据包

紧急指针:当URP=1时生效


seq:***
Ack: 确认号
ACK:确认位
SYN:请求链接位

第一次握手:pc1向pc2发送一个数据包, 请求连接位(SYN)为1,其余全为0,随机产生一个***(Seq)。
第二次握手:pc2回应pc1一个数据包 ,确认号(Ack)为对方***+1, ACK=1(Ack生效)。随机产生一个Seq,控制位(SYN)为1。这一步可以看成两个包,一个回应包,一个请求链接包,一般讲这两步合并在一起。
第三次握手:pc1回应pc2一个数据包,确认号(Ack)为对方***+1,控制位为1.
通过抓包来分析三次握手的过程在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
TCP四次挥手(双向断开连接)在这里插入图片描述
FIN:断开连接位
ACK:确认位
第一次挥手:pc1向pc2发送一个断开连接的数据包(断开连接位和确认位都为1)
第二次挥手:pc2回应给pc1一个数据包,确认号为1
第三次挥手:pc2向pc1发送一个断开连接的数据包(断开连接位和确认位都为1)
第四次挥手:pc1回应pc2一个数据包(确认位为1) 如果不四次挥手的话,会有一个半关闭的状态。