千家信息网

运输层的TCP协议

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,1.有关TCPTCP是工作在传输层的传输控制协议。特点:1>提供面向连接的服务2>TCP连接是点对点的3>提供可靠交互服务4>提供全双工通信5>面向字节流2.TCP的运输连接管理TCP是面向连接的协议
千家信息网最后更新 2025年02月04日运输层的TCP协议

1.有关TCP

TCP是工作在传输层的传输控制协议。特点:

1>提供面向连接的服务

2>TCP连接是点对点的

3>提供可靠交互服务

4>提供全双工通信

5>面向字节流

2.TCP的运输连接管理

TCP是面向连接的协议,运输连接是用来传送TCP报文的。运输连接有三个阶段:连接建立、数据传送和连接释放

(1)TCP的连接建立(三次握手)

建立连接的过程如图:

假设主机A运行的是TCP客户程序,B运行的是TCP服务程序。最初两端的TCP进程都处于CLOSED状态。图中主机下面的方框分别是TCP进程所处的状态。A主动打开连接,B被动打开连接。

1>B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求,然后服务器就处于LISTEN状态,等待客户的连接请求。如果有,立即作出响应。

A的TCP客户进程也先创建传输控制块TCB,然后向B发出连接请求报文段,这时首部中的同步位SYN=1,同时选择一个初始序号seq=x,规定SYN报文段不能携带数据,但要消耗掉一个序号,这时TCP客户进程进入SYN-SENT(同步已发送)状态。

2>B收到连接请求报文段之后,如果同意连接,就向A发送确认,确认时将SYN、ACK都置1,确认号ack=x+1,同时也为自己选一个序号seq=y,这个报文段也不携带数据,但同样也消耗掉一个序号。这时TCP服务器进程进入SYN-RCVD(同步收到)状态

3> A的TCP客户进程收到B的确认之后,还要向B发送确认。将ACK置1,确认号ack=y+1,自己序号seq=x+1;x+1;ACK报文段可以携带数据,但如果不携带数据则不消耗序号,在这种情况下,下一个数据报文段的序号仍是seq=x+1,这时TCP连接已经建立。A进入ESTABLISHED(已建立连接)状态。

B收到A的确认之后A,也进入ESTABLISHED状态。

(2)TCP的连接释放(四次挥手)

1> A应用进程先向其TCP发出连接释放报文段,并停止在发送数据,主动关闭TCP连接。A将报文首部的终止控制位FIN置为1,序号为seq=u,他等于前面已传送的数据的最后一个字节的序号加1,这时A进入FIN-WAIT-1状态,等待B的确认。规定FIN报文段不携带数据,但要消耗掉一个序号

2>B收到连接释放报文后即发出确认,确认号ack=u+1,自己的序号为v。等于前面已传送的数据的最后一个字节的序号加1。然后B就进入CLOSE-WAIT状态。TCP服务器进程应通知高层应用进程,因此从A到B这个方向的连接就释放了。这时的TCP连接处于半关闭状态,即A已经没有数据要发送给B了,但B若发送数据,A还接收。从B到A这个方向的连接并未关闭。这个状态可能会持续一段时间。

3>A收到来自B的确认后,就进入FIN-WAIT-2状态,等待B发出连接的释放报文段。

B已经没有数据要发送给A了,其应用进程就通知TCP释放连接,这时B发出的报文段FIN=1,假定B序号为w,B重复上次的确认号ack=u+1,这时B就进入了LAST-ACK状态,等待A的确认。

4>A在收到B的连接释放报文段后,必须对此发出确认。将ACK置为1,ack=w+1,seq=u+1。然后进入到TIME-WAIT状态。现在TCP连接还没有释放掉,必须经过时间等待计时器设置的时间2MSL后,A才进入CLOSED状态

B只要收到了A发出的确认,就进入CLOSED状态。

(3)TIME-WAIT--时间等待状态

为什么要设置等待2MSL的时间?

1>为了保证A发送的最后一个ACK报文段能够到达B。这个ACK报文段有可能丢失,因此使处在LAST-WAIT状态的B收不到已发送的FIN+ACK报文段的确认。B会超时重传这个FIN+ACK报文段,而A就能在2MSL时间内收到这个重传的报文段。接着A重传一次确认,重新启动计时器,最后A和B都正常进入CLOSED状态。如果A在TIME-WAIT状态不等待一段时间,而是在发送完ACK报文段之后立即释放连接,就无法收到B重传来的FIN+ACK报文,不会再次发送确认,B就无法按正常状态进入CLOSED状态。

2> 防止"已失效的连接请求报文段"出现在本连接中。A在发送完最后一个ACK报文段之后,在经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样就可以使下一个新的链接中不会出现这种旧的连接请求报文段。

报文 状态 序号 数据 进程 时间 服务 客户 服务器 传输 控制 消耗 运输 同步 应用 主动 主机 可以使 同时 字节 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 越秀区国内网络技术开发咨询报价 软件开发技术堆栈 网络安全综合性法律 创建可以输入中文的数据库 梅州软件开发公司地址 浙江新一代软件开发值得推荐 开电子发票服务器升级中 project软件开发商 信息系统与数据库技术试题 数据库实验基本表的建立 普陀区一站式数据库服务商前景 数据库中导入excel 电脑软件开发属于什么类别 网络安全微信推文素材 黄浦区参考数据库价格查询 学个网络技术 国家统计局企业数据库 武汉木帆创意网络技术有限公司 数据库中性别用什么类型 北京电子软件开发诚信服务 深信服软件开发工作地点 软件开发转测标准化 链接入口服务器失败怎么办 青岛学习软件开发哪个学校好 数据库 图片音频视频 手机在哪里关闭网络安全检测 手机短信服务器 郑州富士康做软件开发 安徽潮流软件开发价格标准 大承网络安全教育
0