[转帖]TCP连接建立/断开

tcp,连接,建立,断开 · 浏览次数 : 0

小编点评

**TCP 数据段格式** | 控制位 | 描述 | |---|---| |URG | 紧急 | | ACK | 确认 | | PSH | 推送 | | RST | 重置 | | SYN | 请求 | | FIN | 完成 | **建立连接的过程** 1. **客户端**发出段1,**SYN**位表示连接请求,序号是1000。 2. **服务器**发出段2,带有**SYN**位,同时置**ACK**位表示确认,**序号**是1001。 3. **客户端**发出段3,对**服务器**的连接请求进行应答,**序号**是8001。 4. **服务器**发出段4,包含从**序号**1001开始的20个字节数据。 5. **服务器**发出段5,确认**序号**为**1021**,对**序号**1001-1020的数据表示确认收到,同时请求发送**序号**1021开始的数据。 6. **客户端**发出段6,对服务器发来的序号为**8001-8010**的数据表示确认收到,请求发送**序号**8011开始的数据。 7. **服务器**发出段7,**FIN**位表示关闭连接的请求。 8. **服务器**发出段8,应答客户端的关闭连接请求。 9. **服务器**发出段9,其中也包含**FIN**位,向客户端发送关闭连接请求。 10. **客户端**发出段10,应答服务器的关闭连接请求。

正文

首先粗略了解一下TCP数据段的格式

其中URG、ACK、PSH、RST、SYN、FIN是六个控制位

建立连接的过程:三次握手

1.客户端发出段1,SYN位表示连接请求。序号是1000,这个序号在网络通讯中用作临时
的地址,每发一个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正
确顺序,也可以发现丢包的情况,另外,规定SYN位和FIN位也要占一个序号,这次虽然没发数据,但是由于发了SYN位,因此下次再发送应该用序号1001。mss表示最大段尺寸,如果一个段太大,封装成帧后超过了链路层的最大帧长度,就必须在IP层分片,为了避免这种情况,客户端声明自己的最大段尺寸,建议服务器端发来的段不要超过这个长度。


2.服务器发出段2,也带有SYN位,同时置ACK位表示确认,确认序号是1001,表示“我
接收到序号1000及其以前所有的段,请你下次发送序号为1001的段”,也就是应答了客户端
的连接请求,同时也给客户端发出一个连接请求,同时声明最大尺寸为1024。


3.客户端发出段3,对服务器的连接请求进行应答,确认序号是8001。
在这个过程中,客户端和服务器分别给对方发了连接请求,也应答了对方的连接请求,
其中服务器的请求和应答在一个段中发出,因此一共有三个段用于建立连接,称为’‘’三
方握手(three-way-handshake)”’。在建立连接的同时,双方协商了一些信息,例如双
方发送序号的初始值、最大段尺寸等。

数据传输的过程: 


1.客户端发出段4,包含从序号1001开始的20个字节数据。


2.服务器发出段5,确认序号为1021,对序号为1001-1020的数据表示确认收到,同时请
求发送序号1021开始的数据,服务器在应答的同时也向客户端发送从序号8001开始的10个字
节数据,这称为piggyback。


3.客户端发出段6,对服务器发来的序号为8001-8010的数据表示确认收到,请求发送序
号8011开始的数据。

关闭连接的过程:四次握手

1.客户端发出段7,FIN位表示关闭连接的请求。
2.服务器发出段8,应答客户端的关闭连接请求。
3.服务器发出段9,其中也包含FIN位,向客户端发送关闭连接请求。
4.客户端发出段10,应答服务器的关闭连接请求。

文章知识点与官方知识档案匹配,可进一步学习相关知识

与[转帖]TCP连接建立/断开相似的内容:

[转帖]TCP连接建立/断开

首先粗略了解一下TCP数据段的格式 其中URG、ACK、PSH、RST、SYN、FIN是六个控制位 建立连接的过程:三次握手 1.客户端发出段1,SYN位表示连接请求。序号是1000,这个序号在网络通讯中用作临时 的地址,每发一个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正 确顺

[转帖]计算机网络【TCP的序号 确认号详解 TCP三次握手 和 四次挥手】

文章目录 初始TCP三次握手--建立连接再聊TCP的序号和确认号TCP建立连接--三次握手为什么需要三次握手,二次握手为什么不行?假如第三次握手失败,是如何处理的?TCP释放连接--四次挥手为什么断开连接需要4次挥手TCP释放连接--状态解读 初始TCP三次握手–建立连接 在发送方和接收方方收发TC

[转帖]tcp、http和socket的区别

https://www.jianshu.com/p/88d69454bdde 一:tcp协议 tcp协议属于传输层协议(UDP也属于传输层协议,但是UDP协议是无状态的)。建立一个TCP连接需要三次握手,断开一个TCP连接需要四次挥手。手机能够使用联网功能,是因为手机底层实现了TCP/IP协议,使用

[转帖]TCP/IP常见的一些调优措施

文章目录 前言TCP/IP连接建立状态解释调优tcp_synack_retries :INTEGERtcp_keepalive_time :INTEGERtcp_keepalive_probes:INTEGERtcp_keepalive_intvl:INTEGERtcp_retries1 :INTE

[转帖]linux tcp 半连接队列和全连接队列

TCP建立连接的“三次握手”过程 上图就是tcp建联的三次握手过程。 Server端需要先调用bind()方法,绑定ip和端口号,再调用listen()方法,然后就可以等待来自Client连接了Client 调用connect()后,就会发送SYN包到Server,此时Client端处理SYN_SE

[转帖]net.ipv4.tcp_max_syn_backlog & net.core.somaxconn

https://www.cnblogs.com/apink/p/15632882.html TCP SYN_REVD, ESTABELLISHED 状态对应的队列 TCP 建立连接时要经过 3 次握手,在客户端向服务器发起连接时,对于服务器而言,一个完整的连接建立过程,服务器会经历 2 种 TCP 

[转帖]性能分析之TCP全连接队列占满问题分析及优化过程(转载)

https://cloud.tencent.com/developer/article/1420726 前言 在对一个挡板系统进行测试时,遇到一个由于TCP全连接队列被占满而影响系统性能的问题,这里记录下如何进行分析及解决的。 理解下TCP建立连接过程与队列 从图中明显可以看出建立 TCP 连接的时

[转帖]性能分析之TCP全连接队列占满问题分析及优化过程

https://www.cnblogs.com/wx170119/p/12068005.html 前言 在对一个挡板系统进行测试时,遇到一个由于TCP全连接队列被占满而影响系统性能的问题,这里记录下如何进行分析及解决的。 理解下TCP建立连接过程与队列 从图中明显可以看出建立 TCP 连接的时候,有

[转帖]性能分析之TCP全连接队列占满问题分析及优化过程(转载)

https://www.cnblogs.com/wx170119/p/12068005.html 前言 在对一个挡板系统进行测试时,遇到一个由于TCP全连接队列被占满而影响系统性能的问题,这里记录下如何进行分析及解决的。 理解下TCP建立连接过程与队列 从图中明显可以看出建立 TCP 连接的时候,有

[转帖]Web技术(六):QUIC 是如何解决TCP 性能瓶颈的?

文章目录 一、QUIC 如何解决TCP的队头阻塞问题?1.1 TCP 为何会有队头阻塞问题1.2 QUIC 如何解决队头阻塞问题1.3 QUIC 没有队头阻塞的多路复用 二、QUIC 如何优化TCP 的连接管理机制?2.1 TCP连接的本质是什么2.2 QUIC 如何减少TCP 建立连接的开销2.3