TCP从连接到释放过程全解
參考书籍:《计算机网络第5版》
TCP是面向连接的协议,採用C/S模型建立连接,由client主动发起连接请求,server端允许请求的模式建立连接,通常称为三次握手建立TCP连接。
准备条件:B的server端先创建传输控制块TCB。准备接受client进程的连接请求,此时server进程处于LISTEN(监听)状态。
SYN(synchronous):同步的
1、A的client进程首先创建传输控制块TCB,然后向server端发出连接请求报文段(SYN=1,seq=x)。
此时client进入SYN-SENT(同步已发送)状态。
2、server端收到client的连接请求报文段后,如允许连接,则向client发送确认(SYN=1,ACK=1,seq=y,ack=x+1)。此时服务端进入SYN-RCVD(同步接收)状态。
3、client进程收到server端的确认后。还要向server端给出确认(ACK=1,seq=x+1,ack=y+1)。
A进入ESTABLISHED(已建立连接)状态。
当B收到确认后,server端进程也进入ESTABLISHED状态。
至此。TCP连接已经全然建立。
相同关于TCP连接释放的过程也存在四次握手经过,简述例如以下。
初始状态:client与server端均处于ESTABLISHED状态。
1、client进程向server端发出连接释放报文段(FIN=1,seq=u)。并停止发送数据。主动关闭TCP连接。
此时进入FIN-WAIT-1(终止等待1)状态。等待server端的确认
2、server端收到client的连接释放报文段后。发出确认(ACK=1,seq=v,ack=u+1)。然后server端进入CLOSE-WAIT(关闭等待)状态。A收到来自B的确认后。进入FIN-WAIT-2(终止等待2)状态。此时TCP连接处于半关闭(half-close)状态。即A已经不能再发数据给B了。但B依旧能够发数据给A。
3、若B没有要向A发送的数据,此时server端向client发出连接释放报文段(FIN=1,seq=w,ack=u+1)。此时server端进入LAST-ACK(最后确认)状态。等待A的确认。
4、client收到server端的连接释放报文段后,发出确认(ACK=1。seq=u+1。ack=w+1)。此时client进入TIME-WAIT(时间等待)状态。server端收到确认后,随即关闭连接(CLOSED)。client经过2MSL后关闭TCP连接。
至此,整个TCP连接释放。
TCP从连接到释放过程全解的更多相关文章
- TCP的连接和释放过程
TCP的连接和释放过程 1.三次握手的过程 1)主机A向主机B发送TCP连接请求数据包,其中包含主机A的初始序列号seq(A)=x.(其中报文中同步标志位SYN=1,ACK=0,表示这是一个TCP连接 ...
- TCP建立连接和释放连接过程
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议.TCP建立连接需要三次握手,释放连接需要四次握手. 1.TCP整 ...
- TCP建立连接与释放连接过程中的几个问题
TCP为何采用三次握手来建立连接,若采用两次握手可以吗,请说明理由? 不可以.采用三次握手是为了防止失效的连接请求报文段突然又传送到服务器,从而发生错误.当客户端发出的连接请求报文段由于某些原因没有及 ...
- TCP建立连接和释放的过程,及TCP状态变迁图
一.TCP报文格式 下面是TCP报文格式图: 重要字段介绍: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记. (2)确认序号:Ack序号,占 ...
- TCP建立连接与释放连接
1.建立连接:(三次握手) (1)客户端发送一个SYN包给服务器,然后等待应答. (2)服务器端回应给客户端一个ACK=1.SYN=1的TCP数据段. (3)客户必须再次回应服务器端一个ACK确认数据 ...
- TCP/IP协议的数据传输过程详解——IP与以太网的包收发操作
MTU:一个网络包的最大长度,以太网中一般是1500字节:(含有头部长度,包括IP头部,TCP头部,不包括MAC头部) MSS:除去头部后,一个网络包所能容纳的TCP的数据的最大长度 下图为TCP/I ...
- 专家揭秘:STM32启动过程全解
电子发烧友网核心提示:本文主要阐述了STM32启动过程全面解析,包括启动过程的介绍.启动代码的陈列以及深入解析. 相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方 ...
- TCP传输连接建立与释放详解
一直以来有许多读者朋友对TCP的传输连接建立和释放过程不是很理解,而这又是几乎网络认证中必考的知识点,包括软考.CCNA\CCNP.H3CNA\H3CNE等,为此再把笔者年度巨作,广受好评的——< ...
- TCP建立连接三次握手和释放连接四次握手
TCP建立连接三次握手和释放连接四次握手 [转载]http://blog.csdn.net/guyuealian/article/details/52535294 在谈及TCP建立连接和释 ...
随机推荐
- 实训day01 python基础
一.编程语言 编程语言:可以被计算机所识别的表达方式. 编程:程序员通过编程语言将自己的想法编写出来,产生的结果就是包含字符的文件. 其中,只有程序在运行时,其中的字符才有特定的语法意义. 二.计算机 ...
- clipboard 实现复制
html <textarea id="bar" cols="62" rows="5" autocomplete="off&q ...
- mysql图形化工具获取表的源码
打开数据库,选择要查看的表,点击右键>对象信息>DDL:
- BZOJ 4695 最假女选手 线段树
题意: 给定一个长度为 N序列,编号从1 到 N.要求支持下面几种操作: 1.给一个区间[L,R] 加上一个数x 2.把一个区间[L,R] 里小于x 的数变成x 3.把一个区间[L,R] 里大于x ...
- CSS 全局样式
设置全局 CSS 样式:基本的 HTML 元素均可以通过 class 设置样式并得到增强效果:还有先进的栅格系统.
- c++基础_字母图形
#include <iostream> #include <algorithm> using namespace std; int main(){ ,m=,c; cin> ...
- java使用ant.jar解压缩文件
ant.jar下载地址http://ant.apache.org/bindownload.cgi 压缩文件代码: import org.apache.tools.ant.Project; import ...
- stark组件之注册与路由系统(三)
在文章stark组件前戏中已经提到过,django的注册功能是通过AdminSite的单例进行组册的,所以在这里也可以进行单例模式. class AdminSite(object): def __in ...
- Python中的列表(6)
列表切片 如何拿到列表中的部分元素,Python 引入了 “切片” 的概念. 上代码: words = ['a','b','c','d'] print(words[0:3]) console: 冒号( ...
- PS一些技巧
色阶的解决办法 我们做效果图的时候经常会使用大面积渐变,时常会出现比较严重的色阶问题,通常出现这些明显色阶的时候,可以通过使用高斯模糊对色阶进行模糊化处理. 在使用PS CC的过程中,笔者经常遇到假死 ...