TCP标志位:

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

  • SYN

    Synchronous,TCP三次握手建立连接的第一步,主动建立连接的一方发送SYN到被动建立连接一方。在下图中可以看到,发送方的SYN被置为1

 

  • ACK Acknowledgement,用于表示成功收到一个包

  • PUSH Push,告诉接收方处理接受到的数据包而不是缓冲它们

  • FIN Finish,表示发送方将不再发送数据,通常用于表示发送方发送的最后一个包

  • RST Reset,当数据包被发送到预期之外的特定主机时,从接收方发送到发送方

  • URG Urgent,该标志为用于通知接收方优先处理当前包

除此之外还有ECE、ECE、NS等。

Sequence number && Acknowledgment number

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

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

  • 三次握手建立连接期间,Ack的值是发送方的Seq值+1;

  • 连接建立后,Ack的值等于发送方的Len值加上Seq值;

     

  • 断开连接时,Ack的值等于发送方的Seq值+1;

 

四次握手断开连接

 

以上,图片来自跟着动画来学习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
报文段、数据报、数据包和帧

使用wireshark学习TCP的更多相关文章

  1. 动手学习TCP:TCP特殊状态

    前面两篇文章介绍了TCP状态变迁,以及通过实验演示了客户端和服务端的正常状态变迁. 下面就来看看TCP状态变迁过程中的几个特殊状态. SYN_RCVD 在TCP连接建立的过程中,当服务端接收到[SYN ...

  2. 动手学习TCP:数据传输

    前面的文章介绍了TCP状态变迁,以及TCP状态变迁图中的一些特殊状态. 本文主要看看TCP数据传输过程中需要了解的一些重要点: MSS(Maximum Segment Size) Seq号和Ack号的 ...

  3. 动手学习TCP:4种定时器

    上一篇中介绍了TCP数据传输中涉及的一些基本知识点.本文让我们看看TCP中的4种定时器. TCP定时器 对于每个TCP连接,TCP管理4个不同的定时器,下面看看对4种定时器的简单介绍. 重传定时器使用 ...

  4. 动手学习TCP:数据传输(转)

    前面的文章介绍了TCP状态变迁,以及TCP状态变迁图中的一些特殊状态. 本文主要看看TCP数据传输过程中需要了解的一些重要点: MSS(Maximum Segment Size) Seq号和Ack号的 ...

  5. 从Wireshark看TCP连接的建立与关闭

    TCP是一种面向连接.可靠的协议.TCP连接的建立与断开,都是需要经过通信双方的协商.用一句话概括就是:三次握手say hello(建立连接):四次握手say goodbye(断开连接).要了解TCP ...

  6. TCP头部格式详解,附Wireshark对TCP头部抓包分析

    TCP之所以能为数据通讯提供可靠的传输,主要在于TCP数据包头部功能非常多. 那么,我们先来看看TCP头部格式(RFC 793.1323定义了TCP头部): TCP头部格式中的内容解析如下:(文末还有 ...

  7. 【FTP】Wireshark学习FTP流程

    一.Wireshark概述 在windows下, 图1 Wireshark界面展示(基于1.99.1) Wireshark是通过底层的winpcap来实现抓包的.winpcap是用于网络封包抓取的一套 ...

  8. linux Wireshark图解TCP三次握手与四次挥手

    Linux Wireshark图解TCP三次握手与四次挥手 原文章链接:Wireshark图解TCP三次握手与四次挥手 文章内容丰富 值得学习

  9. 动手学习TCP:总结和索引

    TCP是一个十分复杂的协议,通过前面几篇文章只涉及了TCP协议中一些基本的概念. 虽然说都是一些TCP最基本的概念,但是试验过程中一直在踩坑,例如:TCP flag设置错误,seq.ack号没有计算正 ...

随机推荐

  1. Java 实现 HtmlEmail 邮件发送功能

    引言 在平常的企业级应用开发过程中,可能会涉及到一些资讯通知需要传达,以及软件使用过程中有一些安全性的东西需要及早知道和了解,这时候在局域网之间就可以通过发送邮件的方式了.以下就是代码实现了: pac ...

  2. Spring框架的相关介绍

    Spring是一个开源轻量级的框架,它的核心是控制反转(IOC)和面向切面编程(AOP). 作为业务层框架的spring能够很好地整合表现层跟持久层. IOC:将类的创建和依赖关系写到配置文件里,可以 ...

  3. Linux less grep

    第一步,less查看文件 less 日志文件名 1,这时候,使用组合键 shift + g 可以定位到文件末尾. 在文件末尾,使用组合键(从末尾开始根据之后输入的字符串向上检索) shift + ? ...

  4. Python 3 行代码 5 秒抠图的 AI 神器,根本无需 PS

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 苏克1900 PS:如有需要Python学习资料的小伙伴可以加点击下 ...

  5. Vue中计算属性、侦听、过滤、自定义指令、ref的操作

    1.计算属性 <div id="app"> <input type="text" v-model="x"> < ...

  6. vue学习笔记(三): 启动说明

    1.启动页面:index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

  7. echarts地图map城市间如何连线

    let bjData = [ [{name:'北京'}, {name:'上海',value:95}], [{name:'北京'}, {name:'广州',value:90}]]; let conver ...

  8. 控制台程序(C#)不弹出登录窗口连接到Dynamics CRM Online的Web API

    微软动态CRM专家罗勇 ,回复331或者20190505可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 我之前的文章 控制台程序(C#)不弹出认证窗口连接到Dynami ...

  9. 大数据安全利器ranger 编译安装

    ranger大数据领域的一个集中式安全管理框架,它可以对诸如hdfs.hive.kafka.storm等组件进行细粒度的权限控制.本文将介绍部署过程 1.  部署准备 ranger:    进入apa ...

  10. 钉钉开发第三方H5微应用入门详细教程[ISV][免登流程][授权码][HTTP回调推送][识别用户身份][获取用户信息]

    转载请注明原文地址:https://www.cnblogs.com/applerosa/p/11509512.html (by lnexin@aliyun.com 世间草木) 此教程注意点: 适用于第 ...