在这里插入代码片@TOC

TCP协议以及三次握手

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • TCP协议以及三次握手
  • 1、TCP协议是什么?
  • 2、TCP协议的作用
  • 3、TCP工作模式
  • *4、TCP三次握手
    • 第一次握手
    • 第二次握手
    • 第三次握手
    • 分析握手过程中字段的变化

1、TCP协议是什么?

传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在 TCP 协议中,通过三次握手建立连接。通信结束后,还需要断开连接。如果在发送数据包时,没有正确被发送到目的地时,将会重新发送数据包

2、TCP协议的作用

TCP 协议是以面向连接的方式进行通信的,其作用如下:

  • 面向流的处理:TCP 以流的方式处理数据。换句话说,TCP 可以一个字节一个字节地接收数据,而不是一次接收一个预订格式的数据块。TCP 把接收到的数据组成长度不等的段,再传递到网际层。
  • 重新排序:如果数据以错误的顺序到达目的地,TCP 模块能够对数据重新排序,来恢复原始数据。
  • 流量控制:TCP 能够确保数据传输不会超过目的计算机接收数据的能力。
  • 优先级与安全:为 TCP 连接设置可选的优先级和安全级别。
  • 适当的关闭:以确保所有的数据被发送或接收以后,再进行关闭连接。

3、TCP工作模式

TCP 协议的数据包进行传输采用的是服务器端和客户端模式。发送 TCP 数据请求方为客户端,另一方则为服务器端。客户端要与服务器端进行通信,服务器端必须开启监听的端口,客户端才能通过端口连接到服务器,然后进行通信。

*4、TCP三次握手

第一次握手

第 1 次握手建立连接时,客户端向服务器发送 SYN 报文(SEQ=x,SYN=1),并进入 SYN_SENT 状态,等待服务器确认,如图所示。

第二次握手

第 2 次握手实际上是分两部分来完成的,即 SYN+ACK(请求和确认)报文。

  • 服务器收到了客户端的请求,向客户端回复一个确认信息(ACK=x+1)。
  • 服务器再向客户端发送一个 SYN 包(SEQ=y)建立连接的请求,此时服务器进入 SYN_RECV 状态,如图所示。

第三次握手

第 3 次握手,是客户端收到服务器的回复(SYN+ACK 报文)。此时,客户端也要向服务器发送确认包(ACK)。此包发送完毕客户端和服务器进入 ESTABLISHED 状态,完成 3 次握手,如图所示。

SEQ 表示请求序列号,ACK 表示确认序列号,SYN 和 ACK 为标志位

分析握手过程中字段的变化

我们知道每一次握手时,TCP 报文中标志位的值是不同的。为了更好地分析 3 次握手时每个标志位的变化,下面以抓包方式分析每个数据包的信息。

使用 Wireshark 捕获 TCP 连接数据包并进行分析。
  1. 捕获到 3 次握手包,如图所示:

图中,第 22 个数据包的源 IP 地址为 192.168.59.135,目标 IP 地址为 192.168.59.131。

在 Transmission Control Protocol 中可以看到,Flags 为 SYN,并且值设置为 1,表示该数据包是主机 192.168.59.135 向主机 192.168.59.131 发起的请求,希望建立 TCP 连接。

Sequence number 表示请求序列号 EQ,值为 0,是由主机 192.168.59.135 随机生成的

  1. 选择第 23 个数据包进行查看,如图所示。

该数据包源 IP 地址为 192.168.59.131,目标 IP 地址为 192.168.59.135。

在 Transmission Control Protocol 中可以看到,Flags 为(SYN,ACK),并且将 SYN 置为 1,表示该数据包是主机 192.168.59.131 用来回复主机 192.168.59.135 发送的 TCP 连接请求。

Acknowledgment number 表示 ACK,值为 1。该值是回复主机 192.168.59.135 发来的连接请求 SEQ,因此在 SEQ 的基础上加 1,以代表确认。

Sequence number 值为 0,该值是由主机 192.168.59.131 生成的,是向主机 192.168.59.135 发送的 SYN,表示同意该主机发来的连接请求。

  1. 选择第 24 个数据包进行查看,如图所示。

源 IP 地址为 192.168.59.135,目标 IP 地址为 192.168.59.131。

在 Transmission Control Protocol 中可以看到,Flags 为 ACK。表示该数据包是主机 192.168.59.135 对主机 192.168.59.131 发来的同意连接数据包后做出的确认回复。

Acknowledgment number 的值为 1,该值是在主机 192.168.59.131 发来的 SEQ 的基础上加 1 得到的。

Sequence number 的值为 1,表示收到主机 192.168.59.131 发来的同意连接数据包后,再次向该主机发送连接请求,表示要连接了

TCP协议及三次握手的过程相关推荐

  1. TCP协议的三次握手与四次挥手

    tcp协议的三次握手和四次挥手 三次握手: 第一次握手: 客户端发起一个链接(SYN) 第二次握手: 服务端就会返回一条(ACK)确认信息,同时服务端也会向客户端发起一个链接请求(SYN),此二者可合 ...

  2. 用wireshark抓包分析TCP协议的三次握手连接、四次握手断开

    用wireshark抓包分析TCP协议的三次握手连接.四次握手断开 一.TCP三次握手图解 二.TCP得四次挥手过程 三.用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 一.TCP三 ...

  3. TCP协议的三次握手和四次挥手

    转自:http://uule.iteye.com/blog/2213562 TCP协议的三次握手和四次挥手 博客分类: http/tcp TCP/IP协议三次握手与四次握手流程解析 Http协议三次握 ...

  4. TCP协议中三次握手

    TCP/IP是互联网相关的各类协议族的总称 TCP/IP协议族分为:应用层,传输层,网络层,数据链路层 应用层:向用户提供应用服务时的通讯的活动 传输层:提供处于网络连接中的两台计算机之间的数据传输 ...

  5. 计算机网络【UDP与TCP协议(三次握手、四次挥手)】

    计算机网络[UDP与TCP协议(三次握手.四次挥手)]

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

    最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就把看过的一些比较好 ...

  7. TCP协议的三次握手、四次挥手

    TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,通过三次握手建立一个连接 TCP 三次握手图示: 位码即tc ...

  8. TCP协议的三次握手和四次分手

    HTTP连接 HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用. ...

  9. tcp协议和三次握手

    TCP(Transmission Control Protocol) 传输控制协议 TCP为什么需要3次握手? 防止请求失效,或者确认丢失. "三次握手"的目的是"为了防 ...

最新文章

  1. 【面向对象编程】(1) 类实例化的基本方法
  2. PreparedStatement和CallableStatement都可以调用存储过程
  3. Ubuntu 16.04 安装 caffe
  4. KDD 2017 《ReasoNet: Learning to Stop Reading in Machine Comprehension》论文笔记
  5. Android 将混淆后的堆栈信息恢复
  6. 按键精灵易语言c,求助(把按键精灵的源码转为易语言的)
  7. MongoDB 教程五: MongoDB固定集合和性能优化 (索引Indexes, 优化器, 慢查询profile)
  8. python numpy中bool变量转为1或0
  9. Abp集成Quartz.net记录
  10. 【干货】PyTorch Tricks 集锦
  11. 中国移动计算机类行测题目,2021三大运营商春招笔试:中国移动行测练习题(2)...
  12. bootice工具修复linux,系统进不去怎么办?教你利用bootice工具引导修复系统
  13. hd4400 显卡opencore 下的 8个苹果问题解决方法
  14. java参数传递内存图解,探讨Java参数传递问题
  15. 沈阳python没有工作经验,沈阳python初级程序员培训班学费(python学历低可以学吗)...
  16. 经典的损人的话  (不带一个脏字,够狠毒)
  17. 游戏服务器 数据同步方案
  18. 查询主机名对应的IP地址-C语言
  19. 计算机优化英语课堂教学,巧用平板,让课堂不平凡———平板电脑在小学中年级段英语课堂教学中的应用...
  20. mysql 占位符使用_Mysql占位符插入

热门文章

  1. Python数据挖掘-NLTK文本分析+jieba中文文本挖掘
  2. 9.16nbsp;瑞晟软件笔试
  3. Obsidian 0x05:Obsidian 插件:Dataview
  4. python开发简历自我介绍范文_你们简历上的自我介绍怎么写的?
  5. 学习笔记:曲线插值法
  6. 蓝鲸智云-腾讯给广大运维工作者的福利
  7. 拼多多一晚被薅千万,倒赚276亿:一次蓄意营销的阴谋?
  8. A股十大股东持股数据查询网站的数据库设计
  9. mysql基础篇笔记(黑马)
  10. 【好星球】热门影视免费看,直链播放,可倍速