目录
TCP报文段的首部格式
- 源端口个目标端口:各占两个字节,分别写入源端口号和目标端口号。
- 序号:占4字节。在一个TCP连接中传送的字节流中的每一个字节都是按照顺序编号。
- 确认号:占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。
- 数据偏移:占4位,这个字段世界上是指出TCP报文段的首部长度。
- 保留:占6位,保留为今后使用,但是目前应置为0。
- 紧急URG(URGent):当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据应尽快传送(相当于高优先级的数据),而不要按原来的队伍顺序来传送。
- 确认ACK(ACKnowlegment):仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传的报文段都必须把ACK置1。
- 推送PSH(PuSH):PSH=1时,需要快速响应的报文,接收方不等缓存填满,直接把目前的缓存都推送上去。
- 复位RST(ReSeT):RST=1时,表明TCP连接出现严重差错,必须释放连接,然后重新建立连接。
- 同步SYN(SYNchronization):建立连接时用,SYN=1,ACK=0时,代表建立连接报文段,对方的响应是SYN=1,ACK=1。因此SYN=1时就代表这是一个请求连接或连接接受报文。
- 终止FIN(FINis):用来释放连接,FIN置1时,就代表要求释放运输连接。
- 窗口:2字节,指的是发送该报文段的接收窗口还能接受多少,告诉对方,你还能发送多少。这个是根据缓存大小和缓存内已存储的数据大小决定的。
- 校验和:2字节。
- 紧急指针:2字节,配合URG使用,URG置1时,它指出本报文段中的紧急数据的字节数(紧急数据结束以后就是普通数据),窗口为0时也是可以发送紧急数据的。
- 选项:长度可变,最大40字节。最大报文段长度(MSS)、窗口扩大、时间戳、选择确认。
后续还会更新