用wireshark抓包分析TCP三次握手、四次挥手以及TCP实现可靠传输的机制
关于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实现可靠传输的机制的更多相关文章
- wireshark 抓包分析 TCPIP协议的握手
wireshark 抓包分析 TCPIP协议的握手 原网址:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html 之前写过一篇 ...
- [转]Linux服务器上11种网络连接状态 和 TCP三次握手/四次挥手详解
一.Linux服务器上11种网络连接状态: 图:TCP的状态机 通常情况下:一个正常的TCP连接,都会有三个阶段:1.TCP三次握手;2.数据传送;3.TCP四次挥手. 注:以下说明最好能结合”图:T ...
- 网络 TCP三次握手,四次挥手详解
三次握手,四次挥手可以说是炙手可热的面试题了,来看看它究竟长什么样子吧! 我们先把流程图贴上来 : 为什么这么复杂? 因为TCP是可靠性传输. 确认可靠传输的前提: TCP连接管理机制 用TCP首部 ...
- tcp三次握手四次挥手那些事
建立TCP需要三次握手才能建立,而断开连接则需要四次挥手.三次握手,四次挥手流程图如下: 一.首先看下如何通过三次挥手----------建立连接 首先客户端发送连接请求报文,服务端接受连接后回复AC ...
- TCP三次握手四次挥手,通俗易懂版
三次握手四次挥手 三次握手 其实很好理解,三次握手就是保证双手都有发送和接受的能力.那么最少三次才能验证完成 即----> 客户端发送---服务端收到----服务端发送-- 1.客户端发送 -- ...
- wireshark抓包直观图解 TCP三次握手/四次挥手详解
转http://www.seanyxie.com/category/linux/ 作者:seanyxie | 一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负 ...
- TCP三次握手/四次挥手详解
一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能.包含以下四个层次: 1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程 ...
- TCP三次握手四次挥手详解
转载 http://www.cnblogs.com/zmlctt/p/3690998.html 相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需 ...
- 转---tcp三次握手四次挥手syn fin......
http://blog.chinaunix.net/uid-22312037-id-3575121.html转自 一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协 ...
- TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释
一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...
随机推荐
- 关于edoc程序tomcat post提交中文乱码解决办法
1修改源码代码中页面部分指定转码格式为UTF-8替换原来的gb2312或GBK 2源码新增 water.edoc.service.FileFilter 过滤器并在web.xml首行添加制定格式 3to ...
- No mapping found for HTTP request with URI
原因:spring-mvc 的xml配置文件的包名配置错误 <mvc:annotation-driven /> <context:component-scan base-packag ...
- 2014年4月份第2周51Aspx源码发布详情
HFC代码转化工具源码 2014-4-8 [VS2010]源码描述:HFC代码转化工具源码 1.主要实现HTML代码转化为C#或者JS代码,为我们平时编码节省时间. 2.把代码复制到面板上,通过右键 ...
- HDU5128 细心、细心、细心
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5128 题意:给你n(n < 30)个点的坐标,然后让你求出这n个点能构成的两个最大矩形的面积,有 ...
- As 和 Is的区别
首先来说说As是干什么的: 代码: void OnMouseEnter(object sender, MouseEventArgs e){ Ellipse ell = sender as Ellips ...
- java项目部署在服务器环境配置以及命令的编写
在往项目上部署java项目(即打成的jar包),要为相应的项目配置环境变量,即项目运行所需要的jar或其他第三方的jar包,java -cp derivativeAccording.jar:lib/c ...
- iOS开发中检测版本,有新版本则更新
iOS程序自动提示更新的实现方案大致分为两种: 第一种,自己服务器提供一个接口,告知相关app的当前版本,是否需要更新,以及更新的地址等信息 . 第二种,就是利用苹果的appstore 提供的相关ap ...
- D3 的优势
可视化的库有很多,基于 JavaScript 开发的库也有很多,D3 有什么优势呢? (1)数据能够与 DOM 绑定在一起 D3 能够将数据与 DOM 绑定在一起,使得数据与图形成为一个整体,即图形中 ...
- union all 取代 select中的case when 提高查询效率
首先union all不是适用于所有情况,其次,case when的可读性肯定要强.所以在不是特别在意性能的情况下, 可以考虑用case when. 再者,不是所有情况下的union all都要比ca ...
- 在Eclipse中配置Tomcat服务器
第一步:开启Eclipse,选择“servers”选项卡,点击下方新建server的链接. 如果找不到“server”选项卡,可以使用以下方法: 选择window--> show View -- ...