TCP三次握手四次挥手手动实践

其实作为一个刚开始接触运维或者互联网行业的学生来说,在面试过程中难免会遇到一个很常见的问题:你知道TCP的三次握手四次挥手原理吗,怎么去解释它或者怎么去论证它是否是对或者错
image
这个图是不是很乱,左右两列,左边客户端,右边服务端,解释了tcp三次握手四次挥手的全过程,所涉及到的状态如下:

LISTEN:服务器在没收到客户端发来的讯息时一直处于这个状态
SYN-SENT:在客户端发完连接请求后,等待服务器回包时候的状态
SYN-RCVD:在回完syn+ack的包后服务器等待客户端确认的状态
ESTABLISHED:在客户端给服务端发送完确认包后双方都进入的状态
FIN-WAIT-1:客户端发送完断开连接的包后等待服务器确认的状态
CLOSE-WAIT:服务器收到了客户端的断开请求后发送完ack包后的状态
FIN-WAIT-2:在收到了服务器的确认包后客户端进入的状态
LAST-ACK:向客户端发送了一个断开连接的讯号(你确定?我真的要断开了)
TIME-WAIT:客户端发送完ack(我真的确认断开)后进入的状态
CLOSED:收到了客户端的确认讯息后果断关闭服务资源,服务器的状态

我们用wireshark来做一个三次握手的实验,Windows下的,比较直观

打开wireshark, 打开浏览器输入 http://www.cnblogs.com/

在wireshark中输入http过滤, 然后选中GET /tankxiao HTTP/1.1的那条记录,右键然后点击"Follow TCP Stream",

这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下图

image
图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。

第一次握手数据包

客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图
image
第三次握手的数据包

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:
image

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值