程序员TCP 基础知识汇编32
34页1、程序员TCP 基础知识这是一篇详细介绍 TCP 各种特点的文章,内容主要包括 TCP 三次握手和四次挥手细节问题、TCP 状态之间的转换、TCP 超时和重传、关于 TCP 包失序和重复问题、TCP 的数据流与窗口管理、TCP 的拥塞控制,思维导图如下。TCP 是一种面向连接的单播协议,在 TCP 中,并不存在多播、广播的这种行为,因为 TCP 报文段中能明确发送方和接受方的 IP 地址。在发送数据前,相互通信的双方(即发送方和接受方)需要建立一条连接,在发送数据后,通信双方需要断开连接,这就是 TCP 连接的建立和终止。TCP 连接的建立和终止如果你看过我之前写的关于网络层的一篇文章,你应该知道 TCP 的基本元素有四个:即发送方的 IP 地址、发送方的端口号、接收方的 IP 地址、接收方的端口号。而每一方的 IP + 端口号都可以看作是一个套接字,套接字能够被唯一标示。套接字就相当于是门,出了这个门,就要进行数据传输了。TCP 的连接建 立 - 终止总共分为三个阶段下面我们所讨论的重点也是集中在这三个层面。下图是一个非常典型的 TCP 连接的建立和关闭过程,其中不包括数据传输的部分。
2、TCP 建立连接 - 三次握手1.服务端进程准备好接收来自外部的 TCP 连接,一般情况下是调用 bind、listen、socket 三个函数完成。这种打开方式被认为是被动打开(passive open)。然后服务端进程处于LISTEN状态,等待客户端连接请求。2.客户端通过connect发起主动打开(active open),向服务器发出连接请求,请求中首部同步位 SYN = 1,同时选择一个初始序号 sequence ,简写 seq = x。SYN 报文段不允许携带数据,只消耗一个序号。此时,客户端进入SYN-SEND状态。3.服务器收到客户端连接后,需要确认客户端的报文段。在确认报文段中,把 SYN 和 ACK 位都置为 1 。确认号是 ack = x + 1,同时也为自己选择一个初始序号 seq = y。这个报文段也不能携带数据,但同样要消耗掉一个序号。此时,TCP 服务器进入SYN-RECEIVED(同步收到)状态。4.客户端在收到服务器发出的响应后,还需要给出确认连接。确认连接中的 ACK 置为 1 ,序号为 seq = x + 1,确认号为 ack = y + 1。TC
3、P 规定,这个报文段可以携带数据也可以不携带数据,如果不携带数据,那么下一个数据报文段的序号仍是 seq = x + 1。这时,客户端进入ESTABLISHED (已连接)状态5.服务器收到客户的确认后,也进入ESTABLISHED状态。6.这是一个典型的三次握手过程,通过上面 3 个报文段就能够完成一个 TCP 连接的建立。三次握手的的目的不仅仅在于让通信双方知晓正在建立一个连接,也在于利用数据包中的选项字段来交换一些特殊信息,交换初始序列号。一般首个发送 SYN 报文的一方被认为是主动打开一个连接,而这一方通常也被称为客户端。而 SYN 的接收方通常被称为服务端,它用于接收这个 SYN,并发送下面的 SYN,因此这种打开方式是被动打开。TCP 建立一个连接需要三个报文段,释放一个连接却需要四个报文段。TCP 断开连接 - 四次挥手数据传输结束后,通信的双方可以释放连接。数据传输结束后的客户端主机和服务端主机都处于 ESTABLISHED 状态,然后进入释放连接的过程。TCP 断开连接需要历经的过程如下1.客户端应用程序发出释放连接的报文段,并停止发送数据,主动关闭 TCP 连接。客
4、户端主机发送释放连接的报文段,报文段中首部 FIN 位置为 1 ,不包含数据,序列号位 seq = u,此时客户端主机进入FIN-WAIT-1(终止等待 1)阶段。2.服务器主机接受到客户端发出的报文段后,即发出确认应答报文,确认应答报文中 ACK = 1,生成自己的序号位 seq = v,ack = u + 1,然后服务器主机就进入CLOSE-WAIT(关闭等待)状态。3.客户端主机收到服务端主机的确认应答后,即进入FIN-WAIT-2(终止等待2)的状态。等待客户端发出连接释放的报文段。4.这时服务端主机会发出断开连接的报文段,报文段中 ACK = 1,序列号 seq = v,ack = u + 1,在发送完断开请求的报文后,服务端主机就进入了LAST-ACK(最后确认)的阶段。5.客户端收到服务端的断开连接请求后,客户端需要作出响应,客户端发出断开连接的报文段,在报文段中,ACK = 1, 序列号 seq = u + 1,因为客户端从连接开始断开后就没有再发送数据,ack = v + 1,然后进入到TIME-WAIT(时间等待)状态,请注意,这个时候 TCP 连接还没有释放。必须
《程序员TCP 基础知识汇编32》由会员沧海****19分享,可在线阅读,更多相关《程序员TCP 基础知识汇编32》请在金锄头文库上搜索。
体育用品买卖合同 简洁版.doc
实习劳动合同(三方协议)
实习协议书实习劳动合同模板
未毕业大学生通用实习生就业协议合同
三方实习协议书(企业、学生、学校).doc
【小学英语】新课标高频核心单词汇总表(可打印)
2023年中.国幼儿园办托育情况研究报告
自然灾害后现金援助的适用方向与可行条件:基于积石山地震后快速调研的考察
2023-2024年全国托育行业发展报告
华为财务管理(6版)(6)
2023年资产证券化发展报告
中.国银行业理财市场年度报告(2023年)
会计师事务所上市公司审计业务监管案例集(2023)
读书笔记读书分享PPT
微信视频号的实时推荐技术架构30
蓝色商务风企业介绍模板
重庆市中考初中语文古诗文汇总(可打印)
科学仪器行业分析&国产化路径
商务风房地产公司简介企业介绍宣传PPT模板
简约商务风公司宣传企业介绍PPT模板
2022-04-25 3页
2022-04-17 1页
2021-11-26 10页
2021-08-29 17页
2021-02-05 37页
2021-01-14 12页
2020-03-20 8页
2020-03-20 6页
2020-03-20 9页