Tcp/ip学习笔记1_tcp包结构解析

P数据包格式解析

0x01:原始端口和目的端口

    原始端口和目的端口各占两字节,端口是传输层和应用层的服务接口,传输层的复用和分用功能都需要端口来实现。

0x02:数据序号

    由于TCP包必须要带入IP数据包当中,如果TCP数据包太大的话,就需要对TCP数据包进行分段。数据包序号就是记录每个数据包的序号的作用,可以让接收端重新将TCP数据重新组合起来。

0x03:确认序号

    为了确认主机端确实收到了我们客户端发出的数据包,我们客户端当然希望能够得到服务器端方面的响应,确认序号的用途就是这个,当客户端收到了这个确认码时,就能够确定之前传递的数据包已经被正确的收下了。

0x04:偏移

    在倒数第二行中有一个“可选选项”,这个“可选选项”的字段长度是非固定的,为了确认整个TCP数据包的大小,就需要偏移来说明整个数据包字段的起始位置。

0x05:保留

    未使用的保留字段

0x06:Code(UAPRSF)

    当我们在进行网络连接的时候,必须要说明这个连接的状态,好让连接端了解这个数据包的只要动作,这是一个非常重要的句柄,这个字段共有6位,分别代表6个句柄(U、A、P、R、S、F),具体说明如下所示:

    URG(Urgent):若为1则代表数据包为紧急数据包,接收端应该要紧急处理。

    ACK(Acknoeledge):若为1代表这个数据包为响应数据包,与上面提到的确认序号有关

    PSH(Push function):若为1,代表要求对方立即传送缓冲区内的其它对应数据包,而无需等待缓冲区满了才发送。

    PST(Reset):若为1,表示连接会被马上结束,而无需等待终止接收手续,也就是说这是个强制结束的连接,且发送端已经断线。

    SYN(Synchronous):若为1,表示发送端希望双方建立同步处理,也就是要求建立连接。通常带有SYN标识的数据包表示“主动”连接到对方的意思。

    FIN(Finish):若为1,表示传送结束,所以需要通知 对方 数据传输完毕,是否同意断线,只是发送者还在等待对方的响应而已。

0x07:窗口字段

    主要用于控制数据包的流量,可以告知对方目前本机的缓冲器还可以接收数据包。当窗口字段等于0时,代表缓冲区已满,应该暂停传输数据。

0x08:包校验和

    当数据从发送端发出之前,会进行一个校验的动作,并将该动作的校验值标注在这个字段上,而接收者收到这个数据包之后,会再次对这个数据包进行校验,并且比较是否和之前的包校验和相同,如果相同就接受,不符就说明这个数据包已经损毁,进而要求对方重新发送此数据包。

0x09:紧急指针

    这个字段在Code字段内的URG=1时才会起作用,可以告知紧急数据所在的位置。

0x10:可选选项

    目前此字段仅应用于表示接收端可以接收的最大数据段的容量,若此字段不使用,表示可以使用任意数据段的大小。这个字段较少使用。

0x11:填充

    由于可选选项为非固定字段,所以需要使用填充字段来加以补齐,补齐后为32为。

你可能感兴趣的:(Tcp/ip协议)