TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接。

位码(可以理解为请求状态):

有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)

序号:

有两种:Sequence number(顺序号码) Acknowledge number(确认号码)

顺序号是发送方定义,确认号是接收方返回的(ack num = seq num + 1),发送方会检验收到的ack num是否是seq num + 1。

三次握手

第1次握手:主机A发送位码为[SYN],产生seq number=0的数据包到主机B,(主机B发现是[SYN],表示主机A请求建立连接);

第2次握手:主机B收到请求后要确认请求连接信息,向A发送ack number=(主机A的seq+1),位码为[SYN, ACK], 产生seq=0的包(这里的seq是主机B的seq);

第3次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码是否为[SYN, ACK] (SYN,ACK 可以理解为,ACK:我收到了连接请求,SYN:我也准备好了,可以连接了),若是[SYN, ACK],主机A会再发送ack number=(主机B的seq+1),位码是[ACK],主机B收到后确认seq值与位码则连接建立成功。

从此完成了三次握手,主机A与主机B开始传送数据。

如何验证呢?下载个Wireshark抓包,这里提供下过滤器表达式:((ip.src == 10.1.20.3) && (ip.dst == 10.0.10.65)) || ((ip.src == 10.0.10.65) && (ip.dst == 10.1.20.3))

然后模拟TCP连接,用nc命令。

找台机器作为“服务器”主机B,在终端上: nc -l 9999

在本机上开启抓包,然后本机终端上:nc 10.0.10.65 9999 连接上去。

暂停抓包。

效果如下:

看下,是不是三次握手的流程。

简单理解TCP通信的三次握手的更多相关文章

  1. 理解TCP为什么需要进行三次握手(白话)

    原文地址:http://www.cnblogs.com/yuilin/archive/2012/11/05/2755298.html 首先简单介绍一下TCP三次握手 在TCP/IP协议中,TCP协议提 ...

  2. 理解TCP为什么需要进行三次握手

        在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: ...

  3. 通俗大白话来理解TCP协议的三次握手和四次断开

    from : https://blog.csdn.net/Neo233/article/details/72866230?locationNum=15&fps=1%20HTTP%E6%8F%A ...

  4. 通俗大白话来理解TCP协议的三次握手和四次分手

    通俗理解: 但是为什么一定要进行三次握手来保证连接是双工的呢,一次不行么?两次不行么?我们举一个现实生活中两个人进行语言沟通的例子来模拟三次握手. 引用网上的一些通俗易懂的例子,虽然不太正确,后面会指 ...

  5. TCP通信的三次握手和四次撒手的详细流程(顿悟)

    TCP(Transmission Control Protocol) 传输控制协议 三次握手 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位 ...

  6. 【转】TCP通信的三次握手和四次撒手的详细流程(顿悟)

    TCP(Transmission Control Protocol) 传输控制协议 三次握手 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位 ...

  7. 通俗理解TCP/IP协议三次握手四次分手流程

    转自:https://blog.csdn.net/special23/article/details/54137298 三次握手流程 客户端发个请求“开门呐,我要进来”给服务器 服务器发个“进来吧,我 ...

  8. 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)

    摘要:     本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述     TCP是面向连接的可靠 ...

  9. TCP/IP协议三次握手和四次挥手大白话解说

    前言 昨天晚上被一位师傅问到了TCP/IP的工作机制,心里很清楚三次握手,然而对于四次挥手却忘了,这是大学习里学过的,奋而翻阅书籍和网络对之前所学的做一个温顾,算是夯实自我吧. TCP(Transmi ...

随机推荐

  1. Go微服务全链路跟踪详解

    在微服务架构中,调用链是漫长而复杂的,要了解其中的每个环节及其性能,你需要全链路跟踪. 它的原理很简单,你可以在每个请求开始时生成一个唯一的ID,并将其传递到整个调用链. 该ID称为Correlati ...

  2. java教程系列二:Java JDK,JRE和JVM分别是什么?

    多情只有春庭月,犹为离人照落花. 概述 本章主要了解JDK,JRE和JVM之间的区别.JVM是如何工作的?什么是类加载器,解释器和JIT编译器.还有一些面试问题. Java程序执行过程 在深入了解Ja ...

  3. Spark学习之Scala的基础知识

    Scala的变量声明 在Scala创建变量的时候,必须使用val或者var val,变量值不可修改,一旦分配不能重新指向别的值 var,分配后,可重新指向类型相同的值 举例 val lines = s ...

  4. 解决mysql不能在查询A表的同时,更新A表的问题

    方法: 运用中间表 UPDATE 表名 SET 字段名 = '' WHERE id in (SELECT a.id FROM (SELECT id FROM 表名 WHERE ISNULL(字段名)) ...

  5. 极光推送JPush

    推送ios以及android信息,简单的基于jpush v2带IMEI的推送实现. maven: <dependency> <groupId>cn.jpush.api</ ...

  6. vscode Springboot 启动debug报错:Build failed, do you want to continue?

    一,前言 vscode我感觉是一个特别好用的开发工具,我根据文章https://www.cnblogs.com/WangBoBlog/p/9464281.html去搭建一个简单的springboot工 ...

  7. (intellij ieda激活码、CLion激活码、php storm激活码、webstorm激活码、jetbrains全家桶激活码)

    中华民族传统美德 下载地址 https://www.jetbrains.com/zh/phpstorm/promo/?utm_source=baidu&utm_medium=cpc&u ...

  8. Java的EOF标识?

     这篇是关于JAVA中EOF标识的讲解,之前在工作上碰到过一个问题,有人问过,不能通过判断EOF来知道文件有没有读取完毕吗?其实,还真不能.  直接从JDK接口文档入手,以FileInputStrea ...

  9. 【Django】ESRTful APi

    如何利用rest framework搭建Django API框架!   环境:win10 python3.6 思路步骤: 创建一个可以序列化的类 去数据库取数据交给序列化的类处理 把序列化的数据返回前 ...

  10. jQuery常用方法(二)-事件

    ready(fn); $(document).ready()注意在body中没有onload事件,否则该函数不能执行.在每个页面中可以 有很多个函数被加载执行,按照fn的顺序来执行. bind( ty ...