TCP三次握手及四次四次释放协议解析

上图是TCP的三次握手,从图中我们可以看到:

第一次:客户端向服务器发送链接请求SYN_SENT,发送的内容的主要包含SYN(synchronize)同步请求和SEQ(sequence number)序列号X.(注意:这里的X是随机生成的)

第二次:服务器向客户端回复的确认收到应答SYN_RECV,主要内容包括可以同步的和确认应答的SYN+ACK,服务器随机产生的序列号Y,确认应答ACK的值为第一次客户端给服务器请求连接的确认值X在加1,意在告诉客户端我下次期望收到你发送的序列号的值是X+1。rwnd(就是我们在上一章中讲到的窗口)窗口为5000,也即我服务器告诉客户端我一次最大能接受5000个字节的数据。通过第二次握手就可以告诉客户端A我已经收到你的连接请求了,并且你可以和我之间可以建立连接。

第三次:客户端向服务器发送建立连接确认,同样的这次客户端向服务器发送了序列号(序列号的值为第二次握手时,服务器告诉客户端“我下次期望收到你发送的序列号为X+1” ),确认值为第二次握手时服务器向客户端发送的序列号的值Y加1,同样的客户端也告诉服务器,我一次最大能接受大字节是1000,你可不要发的超过了我这个最大值。

TCP通过这三次握手就能建立起一个安全,可靠的连接了。

下面我们通过抓包软甲wireshark来做一个抓包的实验,验证一下上述机制。试验中我们打开了www.hao123.com的网址,然后通过抓包软件我们得到了如下的结果

从上图我们能看到,抓取的结果。值得注意的是在34那行的服务器端口从80变成了443.这是为什么呢?是因为在我们访问服务器的时候http协议变成了https,即服务器给该端口加密了,所以给出的不是真正的端口

 

我们简单的介绍一下上诉结果,每一列的表示的含义。

29,34,36,37这些代表序号;

2.571389代表时间;

10.10.10.101表示客户端,即我们的电脑的IP地址;

61.135.162.10表示的是目标服务器的IP地址,即hao123网址解析的服务器的IP;

TCP:表示的是协议;

66:表示的是字节长度;

52137:表示的是客户端的所用的动态端口;

80:表示的是目标服务器所用的端口;

后面的一些内容就是TCP首部的详细信息了,我们看下面的图

下图为编号34的详细内容:

这里我们从图中主要看我们在三次握手中所讲的几个值的变化,具体不再详细解释

下图为编号为36的详细内容

 下图为37的详细内容

注意:在此图中有三个值需要解释一下,即:

Window Size Value : 258    窗口值大小

Window size scaling value:   256    窗口系数值

Caculated Window size :66048   计算窗口大小。   这个值是上述两个值的乘积(258X256)得来的.

下面我们在来看一下四次释放连接

 

 

由上面的三次握手协议的解释,就能知道四次释放协议的每一次所发送值的含义了,这里不再赘述。

 

posted @ 2018-12-04 20:09  Lovis  阅读(556)  评论(0编辑  收藏  举报