• wireshark:Beyond Compare是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换,是目前全世界最广泛的网络封包分析软件

了解TCP端口

TCP的全称是Transmission Control Protocol,即传输控制协议。它在RFC 793中被定义。所有TCP通信都会使用源端口目的端口,这些信息可以在每个TCP数据包的头部找到。而为了能够将数据传输到远程服务器或设备的特定应用中去,TCP数据包必须知道远程服务所监听的端口。如果想要尝试连接一个不同于所设置的端口,那么这个通信就会失败。一般来说,TCP通信中的源端口并不重要,可以随机选择。而在使用TCP通信的时候,我们一共可以使用65535个端口。其中1至1023号端口属于标准端口组,往往是特定的服务所使用的。而1024至65535号端口则是临时端口,需要使用时,操作系统会在通信时以随机的方式或者采用一定的策略进行选择。

我们来查看一下第一个数据包的TCP头部。可以看到这个数据包是从IP地址为172.16.16.128发往212.58.226.142的,它的源端口号是2826,属于临时端口,它是由操作系统选取的。目的端口是80端口,这是一个标准端口,这个端口通常提供给使用HTTP的Web服务器。其实Wireshark自身会维护一个端口列表,记录这些端口关联的常用服务,我们可以选择菜单栏的“Edit”->“Preference”->“Name Resolution”,勾选“Resolve transport names”,就可以打开传输端口的解析。但是有些时候开启解析可能会对我们的分析造成困扰,因此希望大家按照实际情况使用。

第二个数据包是从IP地址为212.58.226.142发往172.16.16.128的,除了IP地址相反之外,源端口和目标端口也是相反的

事实上,所有基于TCP的通信都以相同的方式工作:选择一个随机的源端口与一个已知的目标端口进行通信。在发出数据包之后,远程设备就会与源设备使用建立起的端口进行通信

了解TCP的三次握手原理

由于TCP提供的是可靠的数据传输,因此在传输之前,需要与目标主机建立连接。而所有基于TCP的通信都需要以两台主机之间的握手开始。这里我们结合下图进行分析:

请大家注意的是,上图中的seq表示的是请求的序列号,ack表示确认序列号,SYN和ACK为控制位。 1、第一次握手 在第一次握手建立连接时,客户端会向服务器发送SYN数据包(SYN=1,seq=x),并进入SYN_SENT状态,等待服务器的确认。 2、第二次握手 第二次握手其实是分为两步来完成的,即SYN加上ACK,也就是请求和确认数据包。 (1)服务器收到了客户端的请求,向客户端回复一个确认信息(ack=x+1)。 (2)服务器再向客户端发送一个SYN包(seq=y)从而建立连接请求,此时服务器进入了SYN_RCVD状态。 3、第三次握手 第三次握手时客户端收到服务器的回复,也就是SYN加上ACK数据包。此时,客户端也要向服务器发送确认数据包(ACK)。发送完毕之后,客户端和服务器就进入了ESTABLISHED的状态,从而完成了三次握手。那么接下来,客户端和服务端就可以开始传输数据了。

需要说明的是,Wireshark为了让我们分析更加简便,引入了一个新的特性,可以自动将TCP数据包的序列号替换为相对值。但是这里我们不需要这个功能,我们希望看到原始值,可以选择菜单栏的“Edit”->“Preference”,展开窗口左侧的“Protocols”并选择“TCP”,然后取消勾选“Analyze TCP sequence numbers”,再单击OK即可。

这个捕获文件的第一个数据包就是初始的SYN数据包,它从172.16.16.128发往212.58.226.142的80号端口。可以看到它的序列号是3691127924。第二个数据包是从212.58.226.142发出的SYN/ACK响应

这个数据包里面包含有这台主机的初始序列号(233779340),以及一个确认号(3691127925),注意这个确认号比上一个数据包的序列号大1,因为这个域是用来表示主机所期望得到的下一个序列号的值,有助于数据包的顺序传输。 第三次握手的数据包是从172.16.16.128发出的ACK数据包

这个数据包正如所期望的那样,包含有之前数据包的确认号域所定义的序列号3691127925,通过这个序列号,就可以知道数据的传输顺序没有问题。只要网络中存在有TCP通信,那么我们都会看到这个模式的三次握手

 了解TCP的断开过程

在TCP通信中,每次握手之后都会有断开的操作,一旦TCP通信结束,就会使用4个数据包以及一个FIN标志表明连接的结束。如下图所示:

TCP的断开步骤如下:

  • 1、客户端向服务器发送一个设置了FIN和ACK标志位的TCP数据包,告诉服务器通信完成。
  • 2、服务器收到客户端发来的数据包后,发送一个ACK数据包来回应客户端。
  • 3、服务器再向客户端传输一个自己的FIN/ACK数据包。
  • 4、客户端收到服务器的FIN/ACK数据包后,再向服务器发送一个ACK数据包,之后就结束通信过程。

通过查看第一个数据包的标志位可以发现,IP地址为67.228.110.120的设备通过发送含有FIN/ACK标志位的数据包来开启TCP断开的过程。接下来目标设备使用了一个ACK数据包来确认收到了数据包,并且发送了一个FIN/ACK数据包。最后,IP地址为67.228.110.120的设备发送了最后的ACK数据包后,宣告TCP正式断开。那么这两个设备之间的TCP通信就已经结束了,如果想要再继续进行通信,则必须完成新的握手操作。

了解TCP的重置

正常情况下,TCP通信的连接都会以TCP的四次握手断开。但是现实中,网络连接有时会出现断掉的情况。这有可能是遭受到了网络攻击,也有可能是出现了配置错误的情况。此时就需要使用设置了RST标志的TCP数据包,表示出现了连接被异常终止拒绝连接的请求。

这个文件中的第一个数据包是从192.168.100.138发出的,并且尝试与192.168.100.1的80端口进行通信。但是由于目标主机并没有开启80端口,因此在第二个数据包中,就回应了一个RST数据包,告诉源主机80端口无法建立连接,那么通信也就终止了。由此可见,RST数据包可以在通信序列的开始或者在主机通信的过程中,将通信终止。

UDP数据包分析

UDP指的是User Datagram Protocol,即用户数据报协议,是在现代网络中最常使用的另外一种第四层的协议。如果说TCP是为了满足带有内在错误检测的可靠数据传输,那么UDP主要是为了提供高速的传输。出于这个原因,UDP是一种尽力服务,通常会被称为无连接协议。一个无连接协议并不会正式地建立和结束主机之间的连接,也不会像TCP那样存在握手和终止的过程。

无连接协议意味着它是一种不可靠的服务,这将使得UDP的流量一点都不稳定。但依赖于UDP的协议通常都会有其它的可靠性服务,或者使用ICMP的一些功能来保证连接更可靠一些。比如,应用层协议DNSDHCP需要高度依赖数据包在网络上的传输速度,因此需要使用UDP协议,并利用它们自身的错误检查以及重传计时来保证数据的正确传输。 

可以看到,这个捕获文件是由DNS形成的。而UDP的内容也很简单,包含有源端口目标端口数据报的长度以及校验和等信息。

需要强调的是,UDP并不关心传输的可靠性,所以任何使用UDP的应用在必要的时候都需要采取特殊的步骤,从而保证传输的可靠性

从零开始学安全(四十四)●TCP三次握手四次挥手的更多相关文章

  1. 对TCP三次握手四次分手还不清楚的速度进,超简单解析,明白了就很好记!

    关于TCP三次握手四次分手,之前看资料解释的都很笼统,很多地方都不是很明白,所以很难记,前几天看的一个博客豁然开朗,可惜现在找不到了.现在把之前的疑惑总结起来,方便一下大家. 先上个TCP三次握手和四 ...

  2. [转]Linux服务器上11种网络连接状态 和 TCP三次握手/四次挥手详解

    一.Linux服务器上11种网络连接状态: 图:TCP的状态机 通常情况下:一个正常的TCP连接,都会有三个阶段:1.TCP三次握手;2.数据传送;3.TCP四次挥手. 注:以下说明最好能结合”图:T ...

  3. 对TCP三次握手四次分手还不清楚,超简单解析

      关于TCP三次握手四次分手,之前看资料解释的都很笼统,很多地方都不是很明白,所以很难记,前几天看的一个博客豁然开朗,可惜现在找不到了.现在把之前的疑惑总结起来,方便一下大家. 先上个TCP三次握手 ...

  4. TCP三次握手四次分手—简单详解

    关于TCP三次握手四次分手,之前看资料解释的都很笼统,很多地方都不是很明白,所以很难记,前几天看的一个博客豁然开朗,可惜现在找不到了.现在把之前的疑惑总结起来,方便一下大家. 疑问一,上图传递过程中出 ...

  5. NO32 网络层次及OSI7层模型--TCP三次握手四次断开--子网划分

    网络层次: OIS网络模型概念:  OSI层次--应用层:  OSI层次--表示层:  OSI--会话层:  OSI--传输层: OSI--网络层: IP地址的概念说明: OSI数据链路层: OSI= ...

  6. TCP三次握手/四次挥手详解

    一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能.包含以下四个层次: 1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程 ...

  7. TCP三次握手四次挥手

    看到一篇总结很好的TCP三次握手,学习一下,原文链接. 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,S ...

  8. TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释

    一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...

  9. TCP三次握手四次挥手详解

    转载 http://www.cnblogs.com/zmlctt/p/3690998.html 相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需 ...

  10. wireshark抓包直观图解 TCP三次握手/四次挥手详解

    转http://www.seanyxie.com/category/linux/ 作者:seanyxie |   一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负 ...

随机推荐

  1. h5仿微信聊天(高仿版)、微信聊天表情|对话框|编辑器

    之前做过一版h5微信聊天移动端,这段时间闲来无事就整理了下之前项目,又重新在原先的那版基础上升级了下,如是就有了现在的h5仿微信聊天高仿版,新增了微聊.通讯录.探索.我四个模块 左右触摸滑屏切换,聊天 ...

  2. JVM学习记录-类加载的过程

    类的整个生命周期的7个阶段是:加载(Loading).验证(Verification).准备(Preparation).解析(Resolution).初始化(Initialization).使用(Us ...

  3. 【转】mip-semi-fixed 走走又停停

    写在前面 MIP 中悬浮元素的特殊情况 其实组件上线已经有一段时间了,最开始看到这个需求是站长提交了一个这中功能的组件过来,不过看过代码立刻就想到了 MIP 页面的特殊性:从结果页打开的 MIP 页面 ...

  4. js十大排序算法

    排序算法说明: (1)对于评述算法优劣术语的说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面:不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面: 内排序:所有排 ...

  5. 女皇武则天:我不愿被 extends

    01. 利用继承,我们可以基于已存在的类构造一个新类.继承的好处在于,子类可以复用父类的非 private 的方法和非 private 成员变量. is-a 是继承的一个明显特征,就是说子类的对象引用 ...

  6. Tomcat 8.0的并发优化 - 优化server.xml的配置

    目录 1 Tomcat的3种运行模式 1.1 BIO - 同步阻塞IO模式 1.2 NIO - 同步非阻塞IO模式 1.3 APR - 可移植运行时模式 2 Tomcat的并发配置(配置Connect ...

  7. HTTPS和TCP协议三次握手设计

    1. 我们的TCP 三次握手大概是长这样 2.那么为什么 TCP 要采取三次握手,而不是两次或其他 首先我们要知道握手的目的: 为了保证通讯双方建立的连接是可靠的. 同时,为了保证性能,握手的次数要求 ...

  8. 『取巧』VS2015试用期过后 继续试用

    背景: 个人电脑 安装的 VS2015 Community 社区版. 一直用得挺好,都忘了要登录. 直到近来,30天试用期过 —— VS弹窗:要登录用户名.密码 才能继续使用. 但是,输入了无数次 邮 ...

  9. 关于.net导出数据到excel/word【占位符替换】

    1]excel的占位符替换 效果如图 关键代码: ///savedFilePath需要保存的路径 templateDocPath模板路径 替换的关键字和值 格式 [姓名]$%$小王 public st ...

  10. 在已有的Asp.net MVC项目中引入Taurus.MVC

    Taurus.MVC是一个优秀的框架,如果要应用到已有的Asp.net MVC项目中,需要修改一下. 1.前提约定: 走Taurus.MVC必须指定后缀.如.api 2.原项目修改如下: web.co ...