一.Iso七层模型,五层模型
首先了解,tcp是传输控制协议的简称,tcp是工作在传输层的。
下面是报文格式
三。然后了解报文头
Tcp请求头
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 12 | 13 | 14 | 15 | 16 | 行号 |
源端口地址 | 目的端口地址 | 1 | |||||||||||||||||||||||||||||||
序列号seq 32(位) | 2 | ||||||||||||||||||||||||||||||||
确认号ackV 32(位) | 3 | ||||||||||||||||||||||||||||||||
Tcp报文头长度4 | 扩展字段6 | Urg(紧急字段) | Ack(确认) | Psh(立即将数据交给应用层) | Rst(重新连接) | Syn(建立连接) | FIN(断开连接) | 窗口大小16 | 4 | ||||||||||||||||||||||||
校验和 16 | 紧急指针 16 | 5 | |||||||||||||||||||||||||||||||
可选 | 6-x | ||||||||||||||||||||||||||||||||
数据一大堆 | x-y |
了解,报文的格式,以及每个字段的含义:
源端口地址:客户机本机的ip地址
目的端口地址:要发送数据的对方的ip地址
序列号seq:客户机发送的随机数,目的是用来建立连接时候,收到的回复信息是否是正确的。(基于广播协议)
确认号:基于序列号与策略,返回给客户机时,用于给客户机确认自己的身份ip地址。
Tcp报文头长度:报文头的长度有多少,固定是橙色底的20个字节。但由于可选字段会扩展,所以会有这个长度字段。
Urg,ack,psh,rst,syn,fin只有当各自的位数是1的时候,才表示其意义有效。
Urg:紧急位,如果为1,紧急指针有效
Ack:确认位,如果为1,确认号有效
Psh:推送位,如果为1,将报文推送到应用层的基于tcp的协议中,例如基于tcp的http协议。
Rst:重置位,如果为1,则重新建立连接。
Syn:建立连接位:如果为1,开始建立连接的动作。
Fin:结束连接位:如果为1,则结束建立的连接。不再发送数据包。
窗口大小:窗口字段用来控制对方发送的数据量,可以告知对方目前本身有的缓冲器容量(ReceiveBuffer)还可以接收封包。当 Window=0时,代表缓冲器已经额满,所以应该要暂停传输数据。单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限,这个值是本机期望一次接收的字节数。
校验和:校验数据报文的完整性。
紧急指针:报文的偏移量。URG= 1有效。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
关于各个字段更详细的解释请参考
csdn博文:http://blog.csdn.net/jason_zjj/article/details/54563446