TCP的三次握手与四次挥手

时间:2022-08-28 23:15:07

TCP的三次握手与四次挥手

一、TCP(Transmission Control Protocol 传输控制协议)

            TCP是面向对连接,可靠的进程到进程通信的协议
TCP是提供全双工服务,即数据可在同一时间双向传输

二、TCP报文段(封装在IP数据报中)

TCP的三次握手与四次挥手

1、端口号
1)源端口号:发送方进程对应的端口号,源IP和端口的作用就是标志报文的返回地址。
2)目标端口号:对应的是接收端的进程,接收端收到数据段后,根据这个端口将数据对应给应用程序的接口。
注:TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。
2、序号:发送端为每个字节进行编号,便于接收端正确重组。
3、确认号:用于确认发送端的信息。
4、控制位
1)URG:紧急指针有效位。
2)ACK:确认序号位,当该位为1时,用于确认发送方的数据。
3)PSH:标志位为1时要求接收放尽快将数据端送达应用层。
4)RST:为1时通过重新建立TCP连接
5)SYN:同步序号位,TCP需要建立连接时将该值设为1
6)FIN:当TCP断开连接时将该位置为1
5、窗口值:用于说明本地可接收数据段的数目,窗口大小是可变的。以此控制发送端发送数据的速率,从而达到流量控制。
6、校验和:用来做差错控制
7、紧急指针:只有当 URG 标志置 1 时紧急指针才有效。
8、选项:位于TCP首部多大40字节的可选信息,最常见的可选字段是最长报文大小。
注:8个字段中较为重要的是端口号、序号、确认序号、以及控制位中ACK、SYN、FIN这三个控制位。

三、TCP三次握手(通过wireshark抓包分析)

TCP的三次握手与四次挥手

PC1为真机,PC2为虚拟机CentOS,PC1与PC2绑定在同一块虚拟网卡VNet8上,PC1IP地址为192.168.90.10,PC2IP地址为192.168.90.40。提前在CentOS上搭建号网站,PC1访问PC2,然后通过抓包工具进行TCP的抓报,如下所示:

1、第一次握手

TCP的三次握手与四次挥手

如上图,通过抓包工具抓包发现,源地址(source)为192.168.90.10,源端口号(source port)为55604,目的地址(destination)为192.168.168.90.40,目的端口号(destination port)为80。初始序列号(sequence number)和确认序列号(acknowledgment number)都为0。第一次握手PC1使用一个随机端口号向PC2的80端口发送建立连接的请求,此过程最典型的表示就是TCP的SYN控制位为1,其他五个控制位全为0。

2、第二次握手

TCP的三次握手与四次挥手

如上图,第二次握手,源地址以及端口号和目的地址和端口与第一次握手相反,初始序列号为0,确认序列号为1,并且控制位中的ACK和SYN都为1。第二次握手实际上分两部分完成:
1)PC2收到PC1的请求,向PC1回复一个确认信息,此过程标志就是TCP的ACK控制位为1,其他五个控制位全为0,并且确认序列号是PC1的初始序列号加1。
2)PC2也向PC1发送一个建立连接的请求,此过程的标志与第一次握手一样,TCP的SYN控制位为1,其他五个控制位全为0。

3、第三次握手

TCP的三次握手与四次挥手

如图,源地址以及端口号和目的地址以及端口号与第一次握手相同,其中初始序列号即为第二次握手的确认序列号1,确认序列号即为第二次握手的初始序列号加1。PC1收到PC2的回复(包含请求和确认),也要向PC2回复一个确认信息,此过程最典型的标志就是TCP的ACK控制位为1,其他五个控制位为0,而且确认序列号是PC2的初始序列号加1。这样完成了三次握手,在PC1和PC2之间建立了TCP连接。

四、TCP连接终止的四次挥手

TCP的三次握手与四次挥手

此时PC1为CentOS,对应的IP地址为192.168.90.40,PC2为真机,应该的IP地址为192.168.90.10,通过抓包来分析他断开连接的过程,如下所示:

1、第一次挥手

TCP的三次握手与四次挥手

PC1(服务器)向PC2客户端发送FIN和ACK位为1的TCP报文段。

2、第二次挥手

TCP的三次握手与四次挥手

PC2客户端向PC1服务器返回ACK位为1的TCP报文段。

3、第三次挥手

TCP的三次握手与四次挥手

PC2客户端向PC1服务器发送FIN和ACK位为1的TCP报文段。

4、第四次挥手

TCP的三次握手与四次挥手

PC1服务器向PC2客户端返回ACK位为1的TCP报文段,完成终止连接。

5、TCP四次挥手的半关闭概念(TCP一方终止发数据但可以接收)
1)PC2客户端FIN报文段,半关闭了这个连接,PC1服务器发送ACK报文段接收半关闭。
2)PC1服务器继续发送数据,而PC2客户端只发送ACK确认,不再发送任何数据。
3)当PC1服务器把所有数据都发送完毕时,就发送FIN报文段,PC2客户端再发送ACK报文段,这样就关闭了TCP连接。

TCP的三次握手与四次挥手的更多相关文章

  1. 你应该这么理解TCP的三次握手和四次挥手

    前言: TCP协议是计算机的基础,他本身是一个非常非常复杂的协议. 本文只是蜻蜓点水,将从网络基础以及TCP的相关概念介绍开始,之后再将三次握手,四次挥手这些内容来阐述. 最后介绍一些常见问题,并给出 ...

  2. TCP/IP三次握手与四次挥手的正确姿势

    0.史上最容易理解的:TCP三次握手,四次挥手 https://cloud.tencent.com/developer/news/257281 A 理解TCP/IP三次握手与四次挥手的正确姿势http ...

  3. TCP的三次握手与四次挥手详解

    TCP的三次握手与四次挥手是TCP创建连接和关闭连接的核心流程,我们就从一个TCP结构图开始探究中的奥秘  序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序 ...

  4. 【图解】给面试官解释TCP的三次握手与四次挥手-Web运用原理及网络基础

    作者 | Jeskson 来源 | 达达前端小酒馆 轻松了解HTTP协议 为什么要学习网络协议呢?为什么要学习计算机完了呢?显然这很重要,至少能够帮助你找到工作的原因之一,学习网络知识点太多太多,没有 ...

  5. TCP的三次握手与四次挥手笔记

    TCP的三次握手与四次挥手笔记 TCP Flags URG: 紧急指针标志 ACK:确认序号标志 PSH:push标志 RST:重置连接标志 SYN:同步序号,用于建立连接过程 FIN: finish ...

  6. TCP的三次握手与四次挥手理解及面试题

    TCP的三次握手与四次挥手理解及面试题(很全面) 转载自:https://blog.csdn.net/qq_38950316/article/details/81087809 本文经过借鉴书籍资料.他 ...

  7. TCP 的三次握手和四次挥手

    参考资料: 1.TCP的三次握手与四次挥手理解及面试题: 2.Http协议三次握手和四次挥手: 3.TCP通信的三次握手和四次撒手的详细流程(顿悟) 前置: 序号(也称序列号) - Sequence ...

  8. WireShark抓包分析以及对TCP/IP三次握手与四次挥手的分析

    WireShark抓包分析TCP/IP三次握手与四次挥手 Wireshark介绍: Wireshark(前称Ethereal)是一个网络封包分析软件.功能十分强大,是一个可以在多个操作系统平台上的开源 ...

  9. TCP协议三次握手与四次挥手详解

    在计算机网络的学习中TCPi协议与Http协议是我们必须掌握的内容,其中Tcp协议属于传输层,而Http协议属于应用层,本博客主要讲解Tcp协议中的三次握手与四次挥手,关于Http协议感兴趣的可以参看 ...

随机推荐

  1. HTML+CSS项目开发总结

    好几天没更新博客了,刚实战完一个HTML+CSS的简单项目.经过几天的摸索,发现收益良多.之前只是单纯得写demo,看知识点,没有亲自实战项目.但实战过后才会了解,如何才能更好地提升自己的技术.针对这 ...

  2. oracle学习笔记系列------oracle 基本操作之表的增删改查

    --创建一个表 CREATE TABLE employee_souvc( id ), name ), gender ), birth DATE, salary ,), job ), deptno ) ...

  3. mysqlbinlog抽取二进制日志中某库某表的日志

    1.先使用myqlbinlog命令把整个库的二进制日志抽取出来 mysqlbinlog --database=db_name mysql-bin.xxxxxx > db_name.sql 2.然 ...

  4. 关于Git补丁文件交互

    之前各个章节的版本库的交互都是通过 git push和git pull命令来实现的.这个是Git最主要的交互模式,但并不是全部. 使用补丁文件是另外一种交互方式,适用于参与者众多的大型项目进行的分布式 ...

  5. ERROR<53761> - Plugins - conn=-1 op=-1 msgId=-1 - Connection Bind through PTA failed (91). Retrying...

    LDAP6.3在DSCC控制台启动实例完成,但是操作状态显示“意外错误”,查看日志如下: 04/May/2016:21:10:39 +0800] - Sun-Java(tm)-System-Direc ...

  6. jsp中iframe所包含的页面调用父页面的function方法

    a.jsp中写了注册的Ext窗体loginWindow,也用iframe包含了另一个b.jsp,当在b.jsp中也有点击注册的链接,这时需要用到调用a.jsp中的loginWindow,因为如果你重新 ...

  7. 优化以及bug

    优化1:节流函数2:城市查询时,之前用事件(拿到DOM中innerHTML,后触发事件),后改用v-model双向绑定:应该是更符合数据驱动.3:使用localstorage等本地存储,如果用户关闭本 ...

  8. python中的str和repr函数的区别

    看了一些网上的解释,最主流的解释是“str是给人看的,repr是给机器看的”,如果已经理解了的,这句话是对的,但是是有问题的,对于没懂的,这句话是无法理解的. 我来尝试解释一下.先直译一下官方文档: ...

  9. mongodb可视化工具 studio3t robo3T 下载安装使用介绍

    mongodb可视化工具 studio3t  robo3T 下载安装使用介绍 下载地址: https://studio3t.com/download robo3T

  10. PinkEx专用图标