俯瞰tcp协议的三次握手

来源:互联网 发布:淘宝上情趣用品买家秀 编辑:程序博客网 时间:2024/04/30 10:48
原理装备

一.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的协议中,例如基于tcphttp协议。

Rst:重置位,如果为1,则重新建立连接。

Syn:建立连接位:如果为1,开始建立连接的动作。

Fin:结束连接位:如果为1,则结束建立的连接。不再发送数据包。

窗口大小:窗口字段用来控制对方发送的数据量,可以告知对方目前本身有的缓冲器容量(ReceiveBuffer)还可以接收封包。当 Window=0时,代表缓冲器已经额满,所以应该要暂停传输数据。单位为字节TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限,这个值是本机期望一次接收的字节数。

校验和:校验数据报文的完整性。

紧急指针:报文的偏移量。URG= 1有效。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。

 

 关于各个字段更详细的解释请参考

 csdn博文:http://blog.csdn.net/jason_zjj/article/details/54563446




 


 




原创粉丝点击