7、TCP协议分析:
7.1 TCP概念
TCP,全称Transfer Control Protocol,中文名为传输控制协议,它工作在OSI的传输层,提供面向连接的可靠传输服务。
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯。
TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
7.2 TCP报头的结构
7.3 TCP标志位
SYN(synchronous建立联机)
ACK(acknowledgement 确认)
PSH(push传送)
FIN(finish结束)
RST(reset重置)
URG(urgent紧急)
Sequence number(顺序号码)
Acknowledge number(确认号码)
7.3抓取TCP数据帧(以http协议为例)
图1、启动wireshark抓包工具
[root@attack ~]# wireshark
图2、选中“Filter(过滤)”
图3、选中“TCP or UDP port is 80(HTTP)”| “确定”
图4、选中第一个图标(列出可监听接口)
图5、选中“eth1”网卡的“Start”图标
注意:本示例中只有一块网卡,名称为eth1
图6、处于开始监听状态
图7、使用HTTP协议访问web网站
[root@attack ~]# elinks www.baidu.com
7.4分析TCP协议的三次握手(以http协议为例)
First :
第一次握手数据:(第一帧)
注释:
第一次握手的标志位:
我们可以看到标志位里面只有个同步位,也就是在做请求(SYN)
主机192.168.1.30:41886发送 标志位Syn=1 ,随机产生 Seq number =0 的数据包到服务器220.181.111.147:80(服务器由标志位Syn=1知道192.168.1.30要求与其建立联机)
第一次握手图示:
Second :
第二次握手数据:(第二帧)
注释:
第二次握手的标志位
我们可以看到标志位里面有个确认位和同步位,也就是在做应答(SYN + ACK)
远程web服务器220.181.111.147:80收到请求后确认联机信息,向主机192.168.1.30:41886发送ack number=1,标志位Ack=1,标志位Syn=1,随机产生Seq number=0的数据包。
第二次握手图示:
Third :
第三次握手数据(第三帧):
注释:
第三次握手的标志位
我们可以看到标志位里面只有个确认位,也就是再做再次确认(ACK)
主机192.168.1.30:41886收到后检查Ack number是否正确(Ack number = 第一次seq number(0)+1);再检查标志位Ack是否为1。 如果验证无误,主机192.168.1.30:41886会再发送Ack number = 第一次seq number(0)+1,标志位Ack=1 给远端web服务器。
远端web服务器220.181.111.147:80收到后确认第一次和第三次的Seq number的差值是否为1且标志位ack=1,则建立联机成功
第三次握手图示:
总结:三次握手就是 请求----》应答-------》再次确认 的过程,完成三次握手,客户端与服务器开端传送数据