关于TCP三次握手和四次挥手大家都在《计算机网络》课程里学过,还记得当时高超老师耐心地讲解。大学里我遇到的最好的老师大概就是这位了,虽然他只给我讲过《java程序设计》和《计算机网络》,但每次课几乎都动手敲代码或者当场做实验。好了不扯了,下面进入正题。

关于三次握手和四次挥手的理论部分可以在很多资料上找到,我今天动手抓了几个包验证书上的理论,毕竟那些字段和整个通信的过程学起来很枯燥。

一、三次握手:

      我用wireshark抓取的数据包如下:

观察其中红色方框内的3条数据包就是一次TCP建立连接的过程,客户端首先向服务器发一个数据包syn位置1,5774->80,嘿,哥们儿,您我想访问你的web资源,能不能把你的80端口打开;服务器向客户端返回一个数据包syn位置1,ack位置1,80->5774,可以啊,我已经把80端口打开了,但是为了保证待会儿可靠传输,你也把你的5774端口打开呗;最后,客户端会再向服务器端发送一个数据包ack位置1,5774->80,没问题我也把的5774端口打开了,好的到此一次TCP连接就此建立。下面具体分析数据包的各个字段。

在wireshark的这个界面中,左边这个框框是对数据包各个层的概述和详细信息,右边的框框是真实的数据包,我调成用16进制显示,最右边还有一堆乱七八糟的符号,其实就是16进制数据的ascii码解释,0000,0010,0020,0030就是16进制的地址,如果对汇编比较熟的话右边的框框应该很容易看明白。左边的框框第一行是数据包整体概述,第二行是以太网这一层(链路层)的详细信息,最主要的是双方的mac地址,第三行是网络层(网际层)的详细信息,最主要的是双方的IP地址,第四行是传输层的详细信息,最主要的是双方的端口号。

  每一层都有一个字段指向上一层,表明上一层是什么协议。这大概是因为发包的时候会在数据上依次加上应用层、传输层、网络层、链路层的头部,但是对方收到数据包后是从最底层(链路层)开始层层剥去头部解包的,所以在每层上有一个字段指向上层表明上层的协议,对方就知道下一步该怎么解包了。说了这么多,可能又要被喷了,no picture you say a J8 a !

由于建立TCP连接用不到应用层协议,所以传输层就没有相应的指明上层(应用层)的字段了。

  下面更直观地感受一下,三次握手过程中标志位的变化情况,首先客户端发送的数据包syn位置1,然后服务器端回复的数据包syn位置1,ack位置1,最后客户端发送的数据包ack位置1.以下三幅图分别为TCP三次握手的数据包中传输层的标志位字段

二、四次挥手:

  这次抓到的包和书本上分析的过程有点不一样,过程就不赘述了,直接看图分析

关于可靠传输好像没抓到合适的包啊,下次有机会再写一篇博客,今天太晚了。

三、抓取telnet明文传输的值

  众所周知,telnet在网上是明文传输,因为这样技术出现比较早,当时的人心里也没那么黑暗,想不到去盗取别人账号密码什么的,现在不同了,用telnet这种远程登录方式是很不安全的,如果黑客通过一定方式把你的流量欺骗到他的电脑,再通过抓包软件分析你的账号和密码,那就.........。所以,建议使用ssh,毕竟安全一点。

   我这次是用telnet远程登录美国的一台开放的路由器telnet   route-server.ip.att.net。账号:rviews,密码:rviews。用wireshark抓包并过滤后发现了密码和账号。还是那句话,no picture you say a J8 a!由于telnet是一个字符一个字符的传的,所以截的图可能会有点多。先用户名部分:

  可见,将这些字符连起来就可以得到rviews,也就是用户名。而且最后传送的'\r\n'还可以推断作者用的是windows系统,因为linux下的换行是'\n',而windows下是'\r\n'。密码部分只上传部分截图:

  关于可靠传输也找到了一个好点的例子,没错,就是telnet,TCP通过每个数据包的seq序列号+len长度都等于下个数据包的seq序列号,如果不等说明中间丢了比特,下次会从新的seq位开始传一定长度的数据。telnet每次好像都传1比特,传2比特的是'\r\n'字符。

用wireshark抓包分析TCP三次握手、四次挥手以及TCP实现可靠传输的机制的更多相关文章

  1. wireshark 抓包分析 TCPIP协议的握手

    wireshark 抓包分析 TCPIP协议的握手 原网址:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html 之前写过一篇 ...

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

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

  3. 网络 TCP三次握手,四次挥手详解

    三次握手,四次挥手可以说是炙手可热的面试题了,来看看它究竟长什么样子吧! 我们先把流程图贴上来 : 为什么这么复杂? 因为TCP是可靠性传输. 确认可靠传输的前提:  TCP连接管理机制 用TCP首部 ...

  4. tcp三次握手四次挥手那些事

    建立TCP需要三次握手才能建立,而断开连接则需要四次挥手.三次握手,四次挥手流程图如下: 一.首先看下如何通过三次挥手----------建立连接 首先客户端发送连接请求报文,服务端接受连接后回复AC ...

  5. TCP三次握手四次挥手,通俗易懂版

    三次握手四次挥手 三次握手 其实很好理解,三次握手就是保证双手都有发送和接受的能力.那么最少三次才能验证完成 即----> 客户端发送---服务端收到----服务端发送-- 1.客户端发送 -- ...

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

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

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

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

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

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

  9. 转---tcp三次握手四次挥手syn fin......

    http://blog.chinaunix.net/uid-22312037-id-3575121.html转自 一.TCP报文格式        TCP/IP协议的详细信息参看<TCP/IP协 ...

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

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

随机推荐

  1. NuSOAP与PHPRPC比较(转)

    因为看到有人问 Nusoap 和 PHPRPC 的比较,为了让大家能够更清楚地了解 Nusoap 和 PHPRPC 的关系,所以在这里做一个简要的说明性介绍,所写的内容也不是面面俱到的,只写了一些主要 ...

  2. SharePoint 2016 Beta 2 使用体验

    博客地址:http://blog.csdn.net/FoxDave 上一篇主要描述了安装SharePoint 2016的过程,本篇写一些概览性的东西. 首先打开管理中心(依然是在安装完会有Issue ...

  3. Android 生成颜色器

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...

  4. Python的平凡之路(8)

    (本文是对平凡之路(7)的补充等) 一.动态导入模块 import importlib __import__('import_lib.metaclass') #这是解释器自己内部用的 #importl ...

  5. IOS 验证码

    将十六进制的字符串转化为UIImage 最近写一个项目,有验证码,但是接口返回的并不是验证码图片的URL,而是返回的字节数组16进制字符串.这样就需要把16进制字符串首先字节数组,其次再把字节数组转化 ...

  6. UE4 在C++ 动态生成几何、BSP体、Brush ---- Mesh_Generation

    截至UE4  4.10 runtime 无法生成BSP类 ,只能通过自定义的Mesh的Vertex 进行绘制 ( Google 考证,能改UE4源码的请忽略 ) 可用到的 UE4 集成的Render ...

  7. 监听调试web service的好工具TCPMon

    监听调试web service的好工具TCPMonhttp://ws.apache.org/commons/tcpmon/download.cgi TCPMon Tutorial Content In ...

  8. [GodLove]Wine93 Tarining Round #3

    比赛链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=44857#overview 题目来源: ZOJ Monthly, July 2 ...

  9. 修改LR自带的示例程序端口号

    问题:LoadRunner的HP Web Tours 应用程序服务启动不了,提示1080端口被占用的问题 解决方法: 查看占用1080端口的进程 Cmd 窗口输入netstat –ano  找到占用该 ...

  10. 不让padding影响元素的宽度

    CSS3 新增了 box-sizing 属性. 以前,如果指定 div 的宽度为 div { width: 100px; height: 100px; padding: 10px; } 则包含 pad ...