从wiresharp看tcp三次握手
我们知道,传输层是OSI模型中用户进行数据传输的分层,目前仅有TCP和UDP两种协议可用。TCP为了进行传输控制,引入了三次握手机制,以确保通信连接的建立。道理很简单,我们跟别人打电话聊天时,对方拿起电话接听后第一句话肯定是“喂”,而我们听到这句话,就能确定电话接通了。同样的道理,TCP建立连接时客户端先发起一个SYN包作为确认连接的请求,服务端收到后回复一个肯定的确认应答(ACK)来实现可靠的数据传输。如果客户端过一段时间仍未收到确认应答,就可断定连接失败,再次发起重连。下面看下这三次握手的过程:
第一次握手:客户端发送SYN包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认;在建立连接的同时,也可以确定发送数据包的长度单位,即“最大消息长度”(MSS:Maximum Segment Size);这时侯的客户端、服务端都不知道连接是否能否建立成功;
第二次握手:服务器收到SYN包,必须确认客户的SYN请求(ack=x+1),同时自己也发送一个SYN包(seq=y),合起来即SYN+ACK包,此时服务器进入SYN_RECV状态;返回服务器的最大消息长度MSS,后续所有客户端请求数据将按服务器的MSS进行传输;当客户端收到服务端的消息后,它心里清楚自己到服务端(第一次握手)、服务端到自己(第二次握手)的两条连接都是OK的;但服务端只知道客户端 -> 服务端这一条连接是OK的,但自己往客户端的连接是否能建立,它自己心里是没底的,所以需要做进一步确认,给客户端发消息;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送到达服务端后,服务端已经明白服务端 -> 客户端也是OK的了,客户端和服务器进入ESTABLISHED状态,完成三次握手。
我本机ip地址是10.73.158.209,再看我们要访问博客园的ip地址:
C:\Users\wulf>ping www.cnblogs.com 正在 Ping www.cnblogs.com [42.121.252.58] 具有 字节的数据:
来自 42.121.252.58 的回复: 字节= 时间=11ms TTL=
来自 42.121.252.58 的回复: 字节= 时间=11ms TTL=
来自 42.121.252.58 的回复: 字节= 时间=11ms TTL=
来自 42.121.252.58 的回复: 字节= 时间=11ms TTL= 42.121.252.58 的 Ping 统计信息:
数据包: 已发送 = ,已接收 = ,丢失 = (% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 11ms,最长 = 11ms,平均 = 11ms
接着我们按host 42.121.252.58这个规则过滤出访问博客园的抓包:
第一次握手:10.73.158.209 Seq=0 -> 42.121.252.58
从标志位看出,同步位有值,在做请求(SYN):Syn 同步位为1;最大消息长度客户端发了1460字节试探一下。
第二次握手:42.121.252.58 Seq=0 Ack=1 -> 10.73.158.209
从标志位看出,确认位、同步位有值,在做应答(SYN+ACK):Syn 同步位为 1 、Acknowledgment 确认位为 1;服务端告诉客户端,我的最大消息长度只能支持1444字节,你就按这个来传输数据吧。
第三次握手:10.73.158.209 Seq=1 Ack=1 -> 42.121.252.58
从标志位看出,只有确认位有值,在做再次确认(SYN):Acknowledgment 确认位为 1,Seq=Seq+1(1)。
这三次握手过程中传送的包里没有数据,等三次握手完毕、建立通信后,客户端与服务器才正式开始传送数据。而且TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。
从wiresharp看tcp三次握手的更多相关文章
- TCP三次握手及关闭时的2MSL分析
TCP/IP三次握手四次挥手,是非常重要的,这个链接与关闭过程也是非常easy的.但为什么是三次握手?以及为什么要等待2MSL的状态?大部分人或许听到这个问题就蒙了.这篇博客就综合<TCP/IP ...
- 小白都能看懂的tcp三次握手
众所周知,TCP在建立连接时需要经过三次握手.许多初学者经常对这个过程感到混乱:SYN是干什么的,怎么一会儿是1一会儿是0?怎么既有大写的ACK又有小写的ack?为什么ACK在第二次握手才开始出现?初 ...
- wireshark抓包工具简介以及tcp三次握手的一些含义
wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必须了解网络协议,否则就看不懂wireshark了.为了安全考虑, ...
- TCP ,UDP概念和TCP三次握手连接 的知识点总结
OSI 计算机网络7层模型 TCP/IP四层网络模型 传输层提供应用间的逻辑通信(端到端),网络层提供的是主机到主机的通信,传输层提供的是可靠服务. TCP 中常说的握手指的是:连接的定义和连接的建立 ...
- Wireshark基本介绍和学习TCP三次握手
wireshark介绍 wireshark的官方下载网站: http://www.wireshark.org/ wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示 ...
- TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释
一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...
- TCP三次握手原理详解
TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族. 从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层.网络层.传输层.应用层. TCP协议:即传输控制 ...
- TCP三次握手四次挥手详解
转载 http://www.cnblogs.com/zmlctt/p/3690998.html 相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需 ...
- 用wireshark抓包分析TCP三次握手、四次挥手以及TCP实现可靠传输的机制
关于TCP三次握手和四次挥手大家都在<计算机网络>课程里学过,还记得当时高超老师耐心地讲解.大学里我遇到的最好的老师大概就是这位了,虽然他只给我讲过<java程序设计>和< ...
随机推荐
- day27 CRM delete& action& 嵌入CRM
课程目录:deleteactionpop up window嵌入crm项目 权限(未讲)学员交作业发邮件 代码路径:https://github.com/liyongsan/git_class/tre ...
- 【zzuli-2259】matrix
题目描述 在麦克雷的面前有N个数,以及一个R*C的矩阵.现在他的任务是从N个数中取出 R*C 个,并填入这个矩阵中.矩阵每一行的法值为本行最大值与最小值的差,而整个矩阵的法值为每一行的法值的最大值.现 ...
- Django中类视图使用装饰器的方式
类视图使用装饰器 为类视图添加装饰器,可以使用两种方法. 为了理解方便,我们先来定义一个为函数视图准备的装饰器(在设计装饰器时基本都以函数视图作为考虑的被装饰对象),及一个要被装饰的类视图. def ...
- kali linux下不能以root权限运行vlc的解决办法
习惯了在Linux下面使用VLC播放视频和音乐, 但是 VLC 的 linux 版本并不支持在root下面运行. 终端运行vlc命令报错,错误信息如下 root@kbdancer:~# vlc VLC ...
- Linux:centOS LAMP搭建之软件包下载地址
MySQL5.1 wget mysql-5.1.73-linux-i686-glibc23.tar.gz #二进制包 MySQL5.6 wget http://mirrors.sohu.com/mys ...
- [置顶]
滴滴插件化VirtualAPK框架原理解析(二)之Service 管理
在前一篇博客滴滴插件化框架VirtualAPK原理解析(一)之插件Activity管理 中VirtualAPK是如何对Activity进行管理的,本篇博客,我们继续来学习这个框架,这次我们学习的是如何 ...
- webpack 分析
编译后 自动打开浏览器 可视 //npm install --save-dev webpack-bundle-analyzer //webpack.base.conf.js const BundleA ...
- js `` 手机不支持
- 06----fiter
步骤一:渲染标签 双层for循环---- 步骤二:进行数据过滤 fiter_name=java 知识点: """ 改为生成器方式: def foo(): temp=[] ...
- 有关linux中,<math.h>的调用方法
h{font-weight:bold;color:green;font-size:105%} p{font-size:100%} linux下C语言程序中,若要用到math.h中的函数(如:sin() ...