TCP三次握手四次挥手内容及步骤
TCP特性
1、工作在传输层
2、面向连接的协议
3、全双工协议
4、半关闭
5、错误检查
6、将数据打包成段,排序
7、确认机制
8、数据恢复、重传
9、流量控制、滑动窗口
10、拥塞控制,慢启动和拥塞避免算法
常见端口号
http80 https443 ftp20/21 dns53 tftp69
smtp25 pop110 imap143 telnet23 ssh 22
mysql3306 oracle1521
三次握手
————————————————
当一台主机(客户端)想要通过TCP协议向另一台主机(服务器)发送数据时,需要建立三次握手
第一次握手,客户端主动打开TCP连接通道,发送TCP请求报文,在该报文中SYN(同步位,代表连接请求或连接请求的接受报文)置为1,seq(序列号)为随机数x。
第一次握手过程中,客户端由CLOSED状态,即没有任何连接的状态,变为SYN-SENT状态,即发送连接请求后等待匹配的连接请求状态。代表请求连接,不会传输数据。
第二次握手,当服务器端收到了TCP连接请求(即SYN置为1的报文。注:此处应该是不携带ACK为1的报文),服务器被动打开连接通道,根据服务器自身策略向客户端发送TCP回复报文,在该报文中SYN置为1,ACK(确认位,置为1代表确认,置为0代表...代表不确认呗)置为1,ack(确认序列号)为TCP请求报文中的seq+1即x+1,seq(序列号)为另一个随机数y。
在第二次握手过程中,服务器在收到TCP请求报文时,被动的由CLOSED状态与LISTEN状态变为SYN-RECEIVED状态,即收到和发送一个连接请求后等待对方对连接请求确认的状态,同时准备好缓存空间以及一些涉及到的变量。代表允许连接,不会传输数据。
第三次握手,当客户端收到服务器的TCP连接请求的回复报文后,会向服务器端发送一个报文携带ACK置为1,ack为TCP连接请求的回复报文中seq+1即y+1,seq为最开始的x+1,也就是TCP连接请求的回复报文中ack的值,SYN置为0。
在第三次握手过程中,当客户端收到了TCP连接请求的回复报文(允许连接)时,客户端由SYN-SENT状态变为ESTAB-LISHEN状态,代表一个打开的连接,同时客户端为TCP连接准备好缓存空间以及一些涉及到的变量。该报文代表向服务器端确认的确认报文,可以携带数据。
————————————————
LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求(客户端)
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(服务器)
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态
四次挥手
————————————————
参与一条TCP连接的两个“进程”中的任何一个都能终止该连接,连接结束后,主机中的“资源”(缓存和变量)都将被释放。
第一次挥手,客户端向服务器发送关闭连接请求报文,即连接释放报文,关闭TCP连接,该报文中FIN(结束位)置为1,seq置为u(报文段第一个字节的序号,可以标识这个报文段)。
在第一次挥手过程中,客户端由ESTABLISHED状态变为FIN-WAIT-1,等待远程TCP连接中断请求,或先前的连接中断请求的确认。此时客户端已经释放了发送连接。
第二次挥手,服务端收到客户端发送的关闭请求,回复一个确认报文段,该确认报文中ACK置为1,ack为u+1,seq为v(最后一个TCP数据报文中的最后一个字节+1)。
在第二次挥手过程中,服务器由ESTABLISHED状态变为CLOSE-WAIT状态,等待足够的时间以确保远程TCP接收到连接中断请求的确认。此时服务器端释放了接受连接。由于客户端关闭了发送连接,服务器端关闭了接受连接,所有此时整个TCP连接处于一种半关闭状态。
第三次挥手,服务器发送确认关闭报文后需要向客户端发送一个释放连接报文,关闭TCP发送连接,由于是释放连接报文,所以FIN置为1,ACK置为1,ack为u+1(由于上一挥手报文也是由服务器发送,所有客户端等待的报文需要有ACK位,同时确认号依旧为上一个报文的确认号),
TCP三次握手四次挥手内容及步骤的更多相关文章
- [转]Linux服务器上11种网络连接状态 和 TCP三次握手/四次挥手详解
一.Linux服务器上11种网络连接状态: 图:TCP的状态机 通常情况下:一个正常的TCP连接,都会有三个阶段:1.TCP三次握手;2.数据传送;3.TCP四次挥手. 注:以下说明最好能结合”图:T ...
- tcp三次握手四次挥手那些事
建立TCP需要三次握手才能建立,而断开连接则需要四次挥手.三次握手,四次挥手流程图如下: 一.首先看下如何通过三次挥手----------建立连接 首先客户端发送连接请求报文,服务端接受连接后回复AC ...
- 网络 TCP三次握手,四次挥手详解
三次握手,四次挥手可以说是炙手可热的面试题了,来看看它究竟长什么样子吧! 我们先把流程图贴上来 : 为什么这么复杂? 因为TCP是可靠性传输. 确认可靠传输的前提: TCP连接管理机制 用TCP首部 ...
- TCP三次握手四次挥手,通俗易懂版
三次握手四次挥手 三次握手 其实很好理解,三次握手就是保证双手都有发送和接受的能力.那么最少三次才能验证完成 即----> 客户端发送---服务端收到----服务端发送-- 1.客户端发送 -- ...
- TCP三次握手四次挥手详解
转载 http://www.cnblogs.com/zmlctt/p/3690998.html 相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需 ...
- TCP三次握手四次挥手详解2
相对应socket开发者,TCP创建过程和连接拆除过程是由TCP/IP协议栈自动创建的,因此开发者并不需要控制这个过程,但是对于理解TCP底层运作机制,相当有帮助 TCP三次握手 所谓三次握手,是指建 ...
- TCP三次握手四次挥手过程梳理
1. 数据传输的大致示意图 1.1 TCP数据报文首部内部 1.2 TCP连接的几种状态说明 即命令 netstat 结果中的所有状态: 2. TCP连接建立的全过程 2.1 TCP三次握手建立TCP ...
- TCP三次握手/四次挥手详解
一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能.包含以下四个层次: 1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程 ...
- TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释
一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...
- wireshark抓包直观图解 TCP三次握手/四次挥手详解
转http://www.seanyxie.com/category/linux/ 作者:seanyxie | 一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负 ...
随机推荐
- 《Terraform 101 从入门到实践》 第二章 Providers插件管理
<Terraform 101 从入门到实践>这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看. 不怕出身低,行行出状元. 插 ...
- P19_数据绑定
数据绑定 数据绑定的基本原则 在 data 中定义数据 在 WXML 中使用数据 在 data 中定义页面的数据 在页面对应的 .js 文件中,把数据定义到 data 对象中即可: Mustache ...
- 视觉十四讲:第六讲_ceres非线性优化
使用Ceres求解非线性优化问题,一共分为三个部分: 1. 第一部分:构建cost fuction,即代价函数,也就是寻优的目标式.这个部分需要使用仿函数(functor)这一技巧来实现,做法是定义一 ...
- HNOI2019 最小圈
\(\text{Problem}\) 对于一张有向图,要你求图中最小圈的平均值最小是多少,即若一个圈经过 \(k\) 个节点,那么一个圈的平均值为圈上 \(k\) 条边权的和除以 \(k\),现要求其 ...
- C与Java中的动态数组
1. 引言 在实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定.对于这种问题,用静态数组的办法很难解决. 动态数组,是相对于静态数组而言.静态数组的长度是预先定义 ...
- Angular UI库
1.angular 使用 bootstrap 安装bootstrap npm install bootstrap --save 安装bootstrap-icons npm i bootstrap-ic ...
- chai 3D 之网格对象
推荐:将 NSDT场景编辑器 加入你的3D开发工具链 介绍 网格对象是由三角形和顶点组成的形状 在 CHAI3D 中,多边形网格是定义多面体对象形状的顶点和三角形的集合. 顶点是一个位置以及其 ...
- Spark 要点总结及优化
Spark Components: 角色组成: Driver : 由SparkContext创建,运行在main方法,负责资源申请与调度,程序分发,接收每个分区的计算结果 Cluster mana ...
- Nginx 同一个域名自动识别 pc h5
首先设置环境变量 我们先设置变量,通过判断来改变变量的值(注: 我写在server中) set $is_mobile false; # 初始值 if ( $http_cookie ~* "A ...
- grafana嵌入iframe,websoket连接报错400或403(nginx代理)
1.custom.ini配置文件修改allowed_origins=* 2. nginx中增加配置,如下: