12-TCP 协议(TIME_WAIT 状态)

如果你仔细研究了 TCP 四次挥手,你会发现主动关闭一方最后的状态是 TIME_WAIT,这个 TIME_WAIT 状态是什么意思呢? 图1 仔细观察主动关闭一方最后的状态 1. TIME_WAIT 状态 TIME_WAIT 状态,又称为 2MSL 等待状态。只有主动关闭一方才能进入 TIME_WAIT 状态。 MSL(Maximum Segment Lifetime)表示报文段最大生存时间,它表示任何报文段被丢弃前...
焦点技术 2018/03/31 575

11-TCP 协议(状态机)

1. TCP 状态机 TCP 协议太复杂了,连接的建立与终止在前面都已经有所介绍,所有的规则都可以用一张 TCP 状态变迁图来表示。 图1 TCP 状态机 这张图非常经典,网络上都可以找得到,但是这里我用彩色线条重新画了一遍。接下来就是关于图 1 的几点说明: 绿色粗实线和蓝色粗虚线表示正常的状态变迁。 红色细实线表示异常变迁。 顶层的 CLOSED 状态是一个假想的起点和终点,并不是一个真正的状态。 2. 连...
焦点技术 2018/03/31 813

10-TCP 协议(MSS)

再次引用一下 TCP 首部。 图1 TCP 协议首部 1. MSS(Maximum Segment Size) MSS,最大报文段长度。在连接建立的时候,即在发送 SYN 段的时候,同时会将 MSS 发送给对方(MSS 选项只能出现在 SYN 段中!!!),告诉对端它期望接收的 TCP 报文段数据部分最大长度。 MSS 保存在 TCP 首部的可选项中,图 2 中显示 MSS 的值为 1260。 图2 T...
焦点技术 2018/03/31 504

9-TCP 协议(连接异常)

有很多情况导致连接无法建立。 本文我们分析 2 种情况,分别是针对 Windows 和 Linux 进行讨论,它们是有区别的。 第一种情况是连接的主机不在网络中 第二种情况是主机在网络中,但是对应的服务未开启 不同版本的 Linux 内核也是有区别的。这里我使用的是 Ubuntu 14.04 LTS 版本。 1. 相关网络地址对应关系 在这里牵扯的 ip 地址有点多,可能会让你乱。我解释一下: 我的宿主机有两个 ...
焦点技术 2018/03/31 493

8-TCP 协议(断开连接)

这一篇,讨论的是著名的四次挥手。 1. 断开连接 在此之前,先看图 1,看看 TCP 是如何断开连接的. 图1 四次挥手 图 2,仍然是之前的实验中所抓取的数据包,你可以以在 unp/protocol/data/tcp_retrans.pkt 目录下找到它。 图2 抓取到的数据包 (1) 首先,由客户端调用 close,将这一端称为主动关闭(active close)。然后该端发送一个 FIN 段...
焦点技术 2018/03/31 491

7-TCP 协议(建立连接)

转载请注明出处:http://blog.csdn.net/q1007729991/article/details/69289230 著名的三次握手将在这里登场。 1. 建立连接 先来看看图1,客户端和服务器是如何建立起连接的。 图1 三次握手 图2,是我们实际抓取的数据: 图2 请看红色框框中的三次握手 (1) 客户端发送一个 SYN 段(SYN 标志位置位),以及初始序号 ISN,在图 2 中...
焦点技术 2018/03/31 575

6-TCP 协议(序号和确认号)

转载请注明出处:http://blog.csdn.net/q1007729991/article/details/69261780 接下来的内容是学习后续内容的基础,必须先讲清楚。为了方便你回忆 TCP 首部,这里再次把这个图贴出来,以便对照。 图1 TCP 首部 1. 序号 1.1 序号存在的意义 首先得弄清楚为什么要有序号。 在 APUE 基础中,我们通过 TCP 协议将数据发送给对方,就比如 hel...
焦点技术 2018/03/31 937

5-TCP 协议(基础)

转载请注明出处:http://blog.csdn.net/q1007729991/article/details/69235961 1. TCP 协议是什么 前面一直在嚷嚷 TCP 协议,却一直不知道它到底是个什么东西。用举例来说明: 你和你对象(没有对象那就选你上铺或下铺的同学吧)发短信,事先约定,你给他发送任何短信,TA 都得回复你一句:收到。我想这个在你平时生活中应该有所遇到。 比如你发送“早安”给 TA,TA 会回复你:...
焦点技术 2018/04/02 772

4-TCP 协议(抓包)

既然我们要分析 TCP(Transmision Control Protocol) 协议,首先我们得先抓个包看看,再进行分析。 1. 准备工作 为了能够控制网络数据的传输,我们自己写一个简单的 TCP 协议的程序。我相信这一块你已经非常熟练了,在Linux 编程学习笔记的第十四部分,我们已经对简单的 socket 编程基础做了一个介绍。在这个部分,我们需要利用之前我们写好的基于 TCP 协议的大写转换服务器程序。 接下来,我们...
焦点技术 2018/03/31 718

3-第一次抓包

咱们先来简单的熟悉一下怎么用 OmniPeek 来抓包。前提你得先安装好啊…… 1. 抓取数据包 当你首次打开界面的时候是这样的: 图1 OmniPeek 启动界面 接下来,点按钮 New Capture。会弹出下面这个框框: 图2 新建一个工程 点击 Adapter,这个选项表示你想抓哪个网卡上的数据帧: 图3 选一个你正在上网的网卡 选好网卡后,直接确认就行了。接下来出现这个界...
焦点技术 2018/03/31 649

友情链接