网络知识 娱乐 TCP三次握手

TCP三次握手

TCP的三次握手

首先什么是TCP?

TCP是Transmission Contro Protocol 传输控制协议, 是一种可靠的基于字节流的传输层通信协议.

学习TCP握手过程之前, 首先必须了解TCP报文头部的一些信息, 因为TCP握手的过程中, 会使用到这些报文协议

TCP FLAG

TCP 有6个标志, 主要用于操控TCP的状态, 依次为URG, ACK, PSH, RST, SYN, FIN.

TCP的三次握手过程最重要的两点是客户端和服务端的状态变化, 另一个是三次握手过程标志信息的变化,

初始化状态:

客户端处于Closed 状态, 服务器处于Listen监听状态.

第一次握手: 客户端发送请求报文将SYN=1初始化序列号发送给服务端, 发送完成之后客户端处于SYN_Send状态.

第二次握手: 服务端收到SYN请求报文之后, 如果同意连接, 会以自己的SYN(服务端)报文作为应答, 服务端处于SYN_Receive状态.

第三次握手: 客户端收到服务端的SYN+ACK, 然后发送ACK=SYN(服务端)+1确认包作为应答, 客户端转为Established.

为什么是三次, 而不是一次?

第一.为了确认双方的接收与发送能力是否正常;

第二. 指定自己的初始化序列号,为后面的可靠传输做准备;

第三.如果是https协议, 三次握手这个过程还会进行数字证书验证以及加密密钥的生成.

为了防止已失效的连接请求报文段突然又传到了服务端, 而产生错误. 如果此时客户端发送的延迟握手信息服务器收到, 服务器会进行响应,认为客户端和服务端建立了连接, 此时可兑换并没有这个意思, 但服务端却以为新的连接已经建立, 并一直等待客户端发来的数据, 这样, 服务端很多资源白白浪费.

如何捕获TCP?

传统的抓包工具如Fiddler, Charles对TCP/UDP束手无策, 因为他们是抓取web数据包工具, 想要捕获TCP, 那推荐你使用TCPDump,tcpdump相对容易上手,同时也是Linux下一款优秀的工具,它的特点简单强大,而且是免费的.

如果你是Mac 用户, 那WireShark是个不错的选择, wireshark相对较为复杂, 需要有一定的学习成本.无论如何工具都是为人服务的, 你也可以将两个工具一起使用.效果会更好.

本公众号Jmeter 接口测试webSocket测试也对TCP连接做了相关演示.欢迎关注公众号.

Story:

马蝇效应认为没有马蝇叮咬,马就会慢慢腾腾,走走停停;如果有马蝇叮咬,马就不敢怠慢,跑得飞快。也就是说,人是需要一根鞭子的,只有被不停地抽打,才不会松懈,才会努力拼搏,不断进步。这根鞭子是压力,是挫折和困难,是危机意识。这一解释不仅适用于个人,同样也适用于企业.

微信长按二维码添加作者方便拉您进群交流

获取更多精彩内容

测试-感想

JMeter数据库连接操作

JMeter接口测试-参数化

JMeter接口测试基础

Jmeter接口测试-正则表达式提取器