一.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