Chinaunix首页 | 论坛 | 博客
  • 博客访问: 656135
  • 博文数量: 87
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2022
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-23 11:16
个人简介

西邮大三狗!!!

文章分类

全部博文(87)

文章存档

2015年(47)

2014年(40)

分类: 网络与安全

2015-01-15 22:26:23

抓取数据包:
打开wireshark-->Capture-->interfaces-->选择网卡-->start
打开浏览器,输入然后网页成功打开后关闭浏览器
在wireshark中点击stop(停止抓取数据)
分析数据包:
过滤出本机发送的SYN报文

由于wireshark给每一个tcp连接设置了一个stream index,所以这里就以stream index为7来进行分析!
关于stream index的原理也不复杂,利用TCP的四元组可以计算出来,这是wireshark事先计算好的

三次握手数据包分析

第一次握手

seq=0  无确认号  ACK=0(not set)  SYN=1
第二次握手

seq=0  ack=1  ACK=1  SYN=1
第三次握手

seq=1  ack=1  ACK=1  SYN=0
通过这三次握手一个tcp连接就建立好了,将上面的过程简化如下:

再来浅谈
服务器先创建传输控制块TCB,准备接受客户端的连接请求,然后服务器处于listen状态等待客户端连接
第一次握手:客户端在进行连接前也要创建TCB然后向服务器发送连接请求,这时首部中的同步位SYN被设置为1,且有一个初始序号(上图为seq=0);TCP规定,SYN报文不能携带数据,还要消耗一个序号当报文发出以后,客户端进入SYS-SENT状态
第二次握手:服务器受到客户端的请求连接报文段后,如果同意建立连接,则向客户端发送确认,在确认报文段中把SYN和ACK都设置为1,确认号为ack=1(客户端中seq值+1,也说明服务器下次希望客户端发送的报文序号为1),同时服务器也会给这次发送的确认报文选择一个序号(seq=0),且不能携带数据消耗一个序号,最后服务器进入SYN-RECD状态
第三次握手:客户端受到服务器的确认后,也要给服务器发出确认,此次的报文段的ACK设置为1,确认号ack=1(服务器中seq值+1),序号为上次发送报文的seq值+1即seq=1,TCP规定ACK报文可以携带数据!但是,如果不携带数据则不消耗序号,所以下次发送的数据报文的序号还是seq=1,至此TCP连接已经建立,客户端进入ESTABLISHED状态,当服务器受到客户端的确认报文后也进入ESTABLISHED状态
阅读(5041) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~