参考文章:http://357742954.blog.51cto.com/368705/1317226

TCP(Transmission Control Protocol) 传输控制协议,是一个面向连接的协议。

  在运用此协议进行数据传输前都会进行连接的建立工作(三次握手)

  当数据传输完毕,连接的双方都会通知对方要释放此连接(四次挥手)

TCP标志位

tcp标志位有6种标识

  1.SYN(synchronous )建立联机

  2.ACK(acknowledgement)确认

  3.PSH(push)传送

  4.FIN(finsh)结束

  5.RST(reset)重置

  6.URG(urgent)紧急

图解TCP与UDP的三次握手与四次挥手过程

三次握手过程:

  第一次握手:host1发送一个TCP标志位 SYN=1、ACK=0的数据包给host2,并随机会产生一个Sequence  number=1110,当host2接受到这个数据后,host2由SYN=1可知客户端是想要建立连接

  第二次握手:host2要对客户端的联机请求进行确认,向host1发送应答号ACK=1、SYN=1、确认号Acknowledge  number =1111,此值是host1的序列号+1,还会产生一个随机的序列号Sequence  number = 22222,这样就告诉host1可以进行连接;

  第三次握手:host1收到数据后检查Acknowledge  number 是否是1110 + 1的值,以及ACK的值是否为1,若为1,host1会发送ACK = 1、确认号码Acknowledge  number = 22222,告诉host2,你的请求连接被确认,连接可以建立

四次挥手过程:

  第一次挥手:当传输的数据到达尾部时,host1向host2发送FIN = 1标志位;可理解成,host1向host2说,我这边数据传送完成了,我准备断开连接了

  第二次挥手,因TCP的连接是全双工的双向连接,关闭也是要从两边关闭;当host2收到host1发来的FIN=1的标志位后,host2不会立刻向host1发送FIND=1的请求关闭信息,而是先向host1发送一个ACK=1的应答信息,表示:你请求关闭的请求我已经收到,但我可能还有数据没有完成传送,你再等下,等我数据传输完成了我就告诉你

  第三次挥手:host2数据传输完成,向host1发送FIN=1,host1收到请求关闭 连接的请求后,host1就明白host2的数据已经传输完成,现在可以断开连接了

  第四次挥手:host1收到FIN = 1后,host1还是怕由于网络不稳定的原因,怕host2不知道他要断开连接,于是向host2发送ACK = 1确认信息进行确认,把自己(host1)设置成TIME_WAIT的状态并启动2MSL定时器,如果host2没有收到ACK,host2端重传定时器触发,会重发FIN = 1,要求host1重新发送ACK,当host2收到ACK后,host2就断开连接;;当host1等待2MSL(2倍报文最大生存时间)后,仍然没有收到host2的重传请求,他就知道 host2已经收到了ACK,所以 host1此时才关闭连接,否则会重复上述过程,如果被动一方始终没能收到ACK,最终会超过最大重传次数,连接被关闭   这一点设计地很巧妙

深入理解TCP连接的释放:

  由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个FIN只意外着这一方向上没有数据流动,一个TCP连接在收到一个FIN仍然能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

  TCP协议的连接是全双工连接,一个TCP连接存在双向的读写通道

  简单来说是 “先关读,后关写”,一共需要四个阶段。以客户机发送关闭连接为例

  1.服务器读通道关闭

  2.客户机写通道关闭

  3.客户机读通道关闭

  4.服务器写通道关闭

2.TCP/IP的三次握手与四次挥手的更多相关文章

  1. TCP/IP协议三次握手和四次挥手大白话解说

    前言 昨天晚上被一位师傅问到了TCP/IP的工作机制,心里很清楚三次握手,然而对于四次挥手却忘了,这是大学习里学过的,奋而翻阅书籍和网络对之前所学的做一个温顾,算是夯实自我吧. TCP(Transmi ...

  2. 白话解说TCP/IP协议三次握手和四次挥手

    白话解说TCP/IP协议三次握手和四次挥手 1.背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 1.1.问题 有时候聊天的过程中,我的 ...

  3. TCP/IP协议 三次握手与四次挥手

    一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下:        (1)序号 ...

  4. TCP/IP协议 三次握手与四次挥手【转】

    一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下:        (1)序号 ...

  5. 大白话解说TCP/IP协议三次握手和四次挥手

    背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 问题 有时候聊天的过程中,我的网络或者她的网络可能会不好,视频就会卡住,听不到对方的声 ...

  6. 转 TCP/IP的三次握手与四次挥手详解

    TCP((Transmission Control Protocol)传输控制协议,是一个面向连接的协议.在运用此协议进行数据传输前都会进行连接的建立工作(三次握手):当数据传输完毕,连接的双方都会通 ...

  7. TCP/IP的三次握手与四次挥手详解

    TCP((Transmission Control Protocol)传输控制协议,是一个面向连接的协议.在运用此协议进行数据传输前都会进行连接的建立工作(三次握手):当数据传输完毕,连接的双方都会通 ...

  8. TCP/IP协议三次握手_四次挥手

    TCP/IP协议 TCP是一种面向连接的端到端的可靠传输协议. TCP报头格式 三次握手的过程 一.客户端发送一个连接请求,发送一个随机数X,这时客户端的端口状态变为SYN_SENT状态. 二.服务端 ...

  9. 关于TCP/IP的三次握手和四次挥手解释

    TCP协议三次握手过程分析 TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: ...

随机推荐

  1. 阶段5 3.微服务项目【学成在线】_day18 用户授权_08-动态查询用户的权限-用户中心查询用户权限

    3.3 用户中心查询用户权限 3.3.1 需求分析 认证服务请求用户中心查询用户信息,用户需要将用户基本信息和用户权限一同返回给认证服务. 本小节实现用户查询查询用户权限,并将用户权限信息添加到的用户 ...

  2. 我的iOS动画01

    1.嵌套使用,先变大再消失 [UIView animateWithDuration:1.25 aniamtions:^{ CGAffineTransform newTRansform = CGAffi ...

  3. shell脚本安装python、pip--交互式的

    首先把pip-.tgz 安装包放在 /usr/local 下面,按照顺序先安装pip,再安装python.不要先安装或只安装python,否则很容易出错, [root@bogon ~]# cat pi ...

  4. maven生命周期及每个阶段自动关联的插件

    生命周期Lifecycle http://maven.apache.org/ref/3.6.1/maven-core/lifecycles.html#default_Lifecycle clean 包 ...

  5. Nginx+PHP(FastCGI)高性能服务器加载redis+memcache模块

    1)Nginx+FastCGI安装配置: yum install  openssl openssl-devel pcre-devel pcre zlib zlib-devel –y #下载Nginx源 ...

  6. python代码注释 - python基础入门(4)

    在 python改变世界,从hello world开始 中我们已经完成了第一个python程序,代码是有了,关键是好像好不知道写的啥玩意? 一.什么是代码注释 代码注释就是给一段代码加上说明,表明这段 ...

  7. rsyslog服务日志报错分析1

    客户问题: 最近对服务器进行日志检查时,发现部分主机的rsyslog服务状态有报错,报错详情如下 排查过程: 1.从报错截图来看,报错主要发生在文件'/usr/lib64/rsyslog/omazur ...

  8. Fiddler之打断点

    1..Fiddler可以修改以下请求 --Fiddler设置断点,可以修改HTTP请求头信息,如修改Cookie,User-Agent等 --可以修改请求数据,突破表单限制,提交任意数字,如充值最小1 ...

  9. Python基础系列讲解——时间模块详解大全之time模块

    Python中提供处理时间日期相关的内置模块有time.datetime和calendar. time模块中大多数函数调用了所在平台C library 的同名函数,因此更依赖于操作系统层面,所以tim ...

  10. Excel常用操作1

    1.数据透视 所在选项卡:插入-数据透视表 例如:查看下表中各个工龄的平均工资 数据透视:选择所有数据--数据透视表--数据透视字段:选择工作经验和salary 切片器的使用,根据工作经验进行切片(还 ...