Amazing Arch

使用wireshark学习TCP

2019-08-03  本文已影响8人  雪飞鸿

TCP标志位:

在TCP传输中,标志位用于表示特定的连接状态或提供额外信息。每个标志位占用1比特。常用的TCP标志位包含以下几种:

除此之外还有ECEECENS等。

Sequence number && Acknowledgment number

建立连接时,发送方的Seq值是随机的,wireshark工具默认会使用相对值,可以在编辑->首选项->协议一栏选择TCP,进行开启/关闭相对seq值:


Seq的值等于发送方的Ack,对于Ack的值,分以下三种情况:

四次握手断开连接

以上,图片来自跟着动画来学习TCP三次握手和四次挥手

但使用wireshark捕获到的断开连接过程和上面略有差异,只有三次通讯,将被动关闭一方的两次请求合并为一次:

2MSL

TCP协议规定,从主动断开连接一方进入TIME_WAIT状态到真正关闭TCP连接释放Socket资源,最大需要等待2MSL(Max Segment Lifetime),即4分钟。这样可以确保新的连接不会收到上个连接遗留的数据包。但对于不同的实现,这个时长略有差异。

TCP/IP模型

TCP位于传输层,提供字节流服务(Byte Streaam Service),即将大块数据分割为以报文段(segment)为单位的数据包进行管理。在网络通讯中,数据包(package)是最小的传输单位,网络层负责处理数据包。

以上,图片来自报文段、数据报、数据包和帧一文,

小结

因为想要看Redis客户端与服务器通讯的细节,而Redis通讯协议基于TCP,所以就有了这篇笔记。本文对于TCP做了简要介绍,能够满足了解Redis通讯的需要。至于更多的TCP知识,若以后需要用到再行补充。

推荐阅读

跟着动画来学习TCP三次握手和四次挥手
理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)
TCP的三次握手、四次挥手--非常详细讲解
TCP Flags
报文段、数据报、数据包和帧

上一篇 下一篇

猜你喜欢

热点阅读