TCP报头
报头格式如下图:
全称:传输控制协议 (面向连接的可靠传输协议)
作用是:确认 重传 排序 流控
端口号范围:1-1023 静态端口号 1024-65535 动态端口号
源端口:表示数据从哪个进程来
目标端口:表示数据到哪个进程去
32位序列号;
4位首部长度:表示该tcp报头有多少个4字节(32个bit)
6位保留:保留,以防万一
6位标志位:
URG: 标识紧急指针是否有效
ACK: 标识确认序号是否有效
PSH: 用来提示接收端应用程序立刻将数据从tcp缓冲区读走
RST: 要求重新建立连接. 我们把含有RST标识的报文称为复位报文段
SYN: 请求建立连接. 我们把含有SYN标识的报文称为同步报文段
FIN: 通知对端, 本端即将关闭. 我们把含有FIN标识的报文称为结束报文段
16位窗口大小;
16位校验和:由发送端填充,校验形式有CRC校验等,如果校验不通过,则认为数据有问题,这里的校验和不光包括TCP首部,也包括TCP数据部分
16位紧急指针:用来标识哪些数据是紧急数据
详细解释:
1.源端口和目标端口,各占两个字节,分别写入源端口和目标端口
2.序号,占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号
3.确认号,占4个字节,是期望收到对方下一个报文的第一个数据字节的序号
4.数据偏移,占4位,它指出TCP报文的数据距离TCP报文段的起始处有多远;
5.保留,占6位,保留今后使用,但目前应都位0;
6.紧急URG,当URG=1,表明紧急指针字段有效。告诉系统此报文段中有紧急数据;
7.确认ACK,仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文 的传输都必须把ACK置1;
8.推送PSH,当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应,这时候就将PSH=1;
9.复位RST,当RST=1,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接;
10.同步SYN,在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1;
11.终止FIN,用来释放连接。当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放;
12.窗口,占2字节,指的是通知接收方,发送本报文你需要有多大的空间来接受;
13.检验和,占2字节,校验首部和数据这两部分;
14.紧急指针,占2字节,指出本报文段中的紧急数据的字节数;
15.选项,长度可变,定义