TCP模型,控制标志,握手,挥手,长连接*
1. TCP协议
- Transmission Control Protocol,传输控制协议
- 面向连接的协议
- 需要三次握手建立连接
- 需要四次挥手断开连接
- TCP报头最小长度:20字节
2.模型图

3.TCP层控制标志
| FLAG控制标志 | 功能 | 注释 |
| SYN | 建立连接 | |
| FIN | 关闭连接 | SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接。 |
| ACK | 响应 | ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应 |
| PSH | 有DATA数据传输 | 一般只出现在DATA内容不为0的包中,也就是说PSH为1表示的是有真正的TCP数据包内容被传递。 |
| RST | 连接重置 | 一般是在FIN之后才会出现为1的情况,表示的是连接重置。 |
| URG | 紧急指针字段值有效 | Urget pointer is valid |
4.三次握手的过程
- 客户端发送:SYN = 1, SEQ = X, 端口号
- 服务器回复:SYN = 1, ACK = X + 1, SEQ = Y
- 客户端发送:ACK = Y + 1, SEQ = X + 1
确认应答信号ACK = 收到的SEQ + 1。 连接建立中,同步信号SYN始终为1。连接建立后,同步信号SYN=0。
5.四次挥手过程
5.1 过程
- A向B提出停止连接请求,FIN = 1
- B收到,ACK = 1
- B向A提出停止连接请求,FIN = 1
- A收到,ACK = 1
5.2 优点
可靠,稳定 1、传递数据前,会有三次握手建立连接 2、传递数据时,有确认、窗口、重传、拥塞控制 3、传递数据后,会断开连接节省系统资源
5.3 缺点
传输慢,效率低,占用系统资源高 1、传递数据前,建立连接需要耗时 2、传递数据时,确认、重传、拥塞等会消耗大量时间以及CPU和内存等硬件资源
易被攻击 1、因为有确认机制,三次握手等机制,容易被人利用,实现DOS 、DDOS攻击
5.4 如何保证接收的顺序性
TCP协议使用SEQ和ACK机制保证了顺序性 TCP的每个报文都是有序号的。确认应答信号ACK=收到的SEQ+1
6.TCP长连接
1,TCP连接建立后只要不明确关闭,逻辑上连接一直存在。
2,TCP是有保活定时器的,可以打开保活定时器来维持长连接,设置SO_KEEPALIVE才会开启,时间间隔默认7200s,也就是2h,这个默认是关闭的。
注意:HTTP的keepalive和TCP的用处不大一样tcp。
7.TCP/IP通信过程图(以ftp为例)

TCP模型,控制标志,握手,挥手,长连接*的更多相关文章
- 小tips:TCP的三次握手、长连接、 短连接、 SPDY 协议
当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需 ...
- 异数OS TCP协议栈测试(三)--长连接篇
异数OS TCP协议栈测试(三)--长连接篇 本文来自异数OS社区 github: 异数OS-织梦师(消息中间件)群: 476260389 异数OS TCP长连接技术简介 说起长连接,则首先要谈对 ...
- TCP为何采用三次握手来建立连接,若采用二次握手可以吗
1. TCP简介 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的.基于IP的传输层协议,采用三次握手确认建立一个连接. TCP为 ...
- TCP为何采用三次握手来建立连接,若采用二次握手可以吗?
首先简单介绍一下TCP三次握手 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_ ...
- TCP长连接与短连接、心跳机制
1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次 ...
- 基于TCP/IP的长连接和短连接
1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次 ...
- TCP 长连接与短连接的区别
TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的 ...
- TCP长连接与短连接的区别
http://www.cnblogs.com/liuyong/archive/2011/07/01/2095487.html 1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,se ...
- TCP长连接与短连接的原理及区别
一.当网络通信时采用TCP协议时: 1.过程: 第一步:(在真正的读写操作之前)Server 和Client 之间必须建立一个连接,连接的建立需要三次握手 经典的三次握手示意图: 第二步:进行读写操 ...
随机推荐
- [Javascript] Link to Other Objects through the JavaScript Prototype Chain
Objects have the ability to use data and methods that other objects contain, as long as it lives on ...
- Android与设计模式——代理(Proxy)模式
在阎宏博士的<JAVA与模式>一书中开头是这样描写叙述代理(Proxy)模式的: 代理模式是对象的结构模式.代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理模式 ...
- android-调用系统的ContentPrivder获取单张图片实现剪切做头像及源代码下载
首先讲述这个小项目的特色: 1.调用系统的相冊应用获取单张图片 2.对单张图片进行剪切方便做成指定大小的头像图片 3.对获取图片的结果进行解析,使用三种方式进行. 首先看看效果图: 打开app,进入注 ...
- CSS多种方法实现分隔线
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8" /> <title&g ...
- ecshop广告宽度值必须在1到1024之间的解决方法
ecshop加广告出现广告位的宽度值必须在1到1024之间的解决方法,这个问题是今天刚刚发现的,我就郁闷了,如今1024宽度的广告能做什么.你看看京东,天猫,非常多都是大型的横幅广告,这点ecshop ...
- STM32的精确延时
/*---------------------------------------------------------- 文件名:systick.c 文件描写叙述:sysTick 系统滴答时钟1us中 ...
- Android ListView分页,动态添加数据
1.ListView分页的实现,重点在于实现OnScrollListener接口,判断滑动到最后一项时,是否还有数据可以加载, 我们可以利用listView.addFootView(View v)方法 ...
- MySQL服务无法启动(1067)问题
关于这个问题网上的帖子和说法多如牛毛,是在难以分辨真假,或者是否与自己的出错情况相同. 有了前车之鉴,就有必要提前声明,这篇是我在计算机--管理--服务中启动mysql服务时出现的错误,如下: 最后的 ...
- mysql 时间间隔计算
业务需求说明 早8:30点执行该sql,写入定时脚本 [在稳定前,需要手动复检] INSERT INTO test_error ( url, no_open_times, no_ad_times, o ...
- jquery a
<!DOCTYPE html><html><head><script src="//ajax.googleapis.com/ajax/libs/jq ...