博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP从连接到释放过程全解
阅读量:5050 次
发布时间:2019-06-12

本文共 1140 字,大约阅读时间需要 3 分钟。

參考书籍:《计算机网络第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连接释放。

转载于:https://www.cnblogs.com/llguanli/p/8494439.html

你可能感兴趣的文章
爬虫基础
查看>>
jquery.lazyload延迟加载图片第一屏问题
查看>>
OGRE 源码编译方法
查看>>
上周热点回顾(10.20-10.26)
查看>>
web.xml中listener、 filter、servlet 加载顺序及其详解
查看>>
前端chrome浏览器调试总结
查看>>
数据库连接
查看>>
delphi.指针.PChar
查看>>
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
极客前端部分题目收集【索引】
查看>>
第四天 selenium的安装及使用
查看>>
关于js的设计模式(简单工厂模式,构造函数模式,原型模式,混合模式,动态模式)...
查看>>
KMPnext数组循环节理解 HDU1358
查看>>
android调试debug快捷键
查看>>
【读书笔记】《HTTP权威指南》:Web Hosting
查看>>
Inoodb 存储引擎
查看>>
数据结构之查找算法总结笔记
查看>>
Linux内核OOM机制的详细分析
查看>>
Android TextView加上阴影效果
查看>>
Requests库的基本使用
查看>>