TCP协议之三次握手四次挥手
一、TCP协议简述
TCP协议位于传输层用来建立传输数据的通道以及传输数据,那么在这一层的tcp协议就涉及到客户端与服务端通信的连接,数据的传输、关闭连接。

通信的连接使用的就是客户端与服务端的三次握手,一旦三次握手成功就建立了双方的通信通道;接着就可以互相通信传输数据了;最后传输数据完成后断开双方通道,通过四次挥手。
上图中简单的画出建连接的三次握手、数据传输、断开连接的四次挥手过程。上图中涉及到一些参数,这里做一些了解。
| 参数 | 含义 |
| SYN | 请求建立连接,并在其序列号的字段进行序列号的初始值设定。建立连接,设置为1 |
| seq | 占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号 |
| ACK | 确认号是否有效,一般置为1。(ACK=0时,确认号无效) |
| FIN | 用来释放(断开)一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接 |
注意:ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号。
二、三次握手
- 第一次握手
客户端发送发送SYN包到服务器,请求建立连接,并进入SYN_SENT状态,等待服务器确认;
- 第二次握手
服务端收到客户端发送的SYN包后进行确认(将ACK的值置为收到的序号+1),并且服务端再给客户端发送ACK,告诉客户端自己已经收到并且确认了,然后服务端进入SYN_RCVD状态;
- 第三次握手
客户端收到服务端的SYN和ACK包后,向服务器发送确认包ACK(ack=x+2),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
三、四次挥手
四次挥手是客户端和服务端数据交互完毕进行断开连接所需要做的工作。
- 第一次挥手
客户端发送一个FIN,用来关闭客户端和服务端之间的数据传输,此时客户端进入FIN_WAIT_1状态。
- 第二次挥手
服务端收到客户端的FIN后,发送一个ACK给客户端表示确认,确认号序号为收到序号+1(x+2),此时服务端进入CLOSE_WAIT状态。
- 第三次挥手
服务端向客户端发送一个FIN,用来关闭服务端到客户端的数据传输,此时服务端进入LAST_ACK状态。
- 第四次挥手
客户端收到服务端发送过来的FIN,进入TIME_WAIT状态,并且发送一个ACK给服务端,确认序号为收到序号+1(y+2),服务端进入CLOSED状态,完成四次挥手。
TCP协议之三次握手四次挥手的更多相关文章
- 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)
一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端 24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器 想体验服务的时候 ...
- TCP协议—三次握手四次挥手的原理<转>
三次握手四次挥手的原理 TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的.三 ...
- Tcp协议三次握手四次挥手
一.什么是TCP TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的. 基于IP的传输层协议.TCP在IP报文的协议号是6. 二.什 ...
- TCP协议 三次握手四次挥手
当某个应用端想基于TCP协议与另一个应用端通信时,它会发送一个通信请求. 这个请求必须被送到一个确切的地址.在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) ...
- TCP协议之三次握手与四次挥手
TCP协议是TCP/IP体系中核心一个协议,该协议比起IP协议,ICMP协议,UDP协议都更复杂,因此这篇文章主要分析TCP协议在建立连接和断开连接的时候,状态转移以及报文段的内容. 下面,先放一张T ...
- Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)
Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义: ...
- 在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP
如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...
- [na]TCP的三次握手四次挥手/SYN泛洪
1.TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记. (2)确认序号:Ack序号,占32位, ...
- TCP/IP协议 | TCP协议 | UDP协议 | 三次握手四次挥手
TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP.SMTP.TCP.UDP.IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP ...
随机推荐
- 牛客多校第五场G
subsequence 1 只要处理长度等于t的. 转移方程没想出来QAQ $dp(i,j,0)$代表到$s[i]$为止有多少个前缀序列与$t[0\cdots j]$相同 所以有$dp(i,j,0)= ...
- [CSP-S模拟测试]:Rectangle(模拟+树状数组)
题目描述 平面上有$n$个点,第$i$个点的坐标为$X_i,Y_i$.对于其中的一个非空点集$S$,定义$f(S)$为一个最小矩形,满足:$\bullet$覆盖$S$中所有的点(在边界上也算覆盖):$ ...
- Flutter端代码
新建一个页面FirstScreen.dartmain.dart改动代码 导入import 'dart:ui' as ui;import 'package:flutter_module/FirstScr ...
- Python——GUI可视化
import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class ...
- 关于 推广QQ
有一个项目 需要在用户提交表单之后,关闭页面,微信公众号发送一个模板消息,链接地址为qq推广的链接. 早上在试 先是在电脑端测试都是正常的. 然后开始上传到服务器端测试,发送模板消息之前的动作,都没有 ...
- Unity3D架构之PureMVC
之前了解过UI实现框架大多是用MVC架构的,才听说有这么一个基于MVC的跨平台开源框架叫PureMVC,前几天用到了做了一下,写一写分析总结官网位置:http://puremvc.org/ PureM ...
- hdu6575Budget
Problem Description Avin’s company has many ongoing projects with different budgets. His company rec ...
- MySQL 查询语句--------------进阶8:分页查询
#进阶8:分页查询 /* 应用场景:要显示的数据,一页显示不全,需要分页提交sql请求 语法: select 查询列表 from 表 [join type] join 表2 on 连接条件 [wher ...
- MySQL5.7的搭建以及SSL证书
Centos7 安装MySQL 5.7 (通用二进制包) 1.1 下载软件包 https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-l ...
- 身份证验证的js
function isIdCardNo(num) { num = num.toUpperCase(); //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能 ...