TCP的几个常见问题

news/2024/7/20 16:17:25 标签: tcpip, 网络

1.TCP报文头部标志位有哪几个?功能是什么?
在这里插入图片描述
标志位: 6位
URG表示Urgent Pointer字段有意义
ACK表示Acknowledgment Number字段有意义
PSH表示Push功能
RST表示复位TCP连接
SYN表示SYN报文(在建立TCP连接的时候使用)
FIN表示没有数据需要发送了(在关闭TCP连接的时候使用)

2.TCP的状态机是什么样的?
在这里插入图片描述(1)CLOSED 状态时初始状态。
(2)LISTEN:被动打开,服务器端的 状态变为LISTEN(监听)。被动打开的概念:连接的一端的应用程序通知操作系统,希望建立一个传入的连接。这时候操作系统为连接的这一端建立一个连 接。与之对应的是主动连接:应用程序通过主动打开请求来告诉操作系统建立一个连接。
(3)SYNRECVD:服务器端收到SYN后,状态为SYN;发送SYN ACK;
(4)SYN_SENTY:应用程序发送SYN后,状态为SYN_SENT;
(5)ESTABLISHED:SYNRECVD收到ACK后,状态为ESTABLISHED; SYN_SENT在收到SYN ACK,发送ACK,状态为ESTABLISHED;
(6)CLOSE_WAIT:服务器端在收到FIN后,发送ACK,状态为CLOSE_WAIT;如果此时服务器端还有数据需要发送,那么就发送,直到数据发送完毕;此时,服务器端发送FIN,状态变为LAST_ACK;
(7)FIN_WAIT_1:应用程序端发送FIN,准备断开TCP连接;状态从ESTABLISHED——>FIN_WAIT_1;
(8)FIN_WAIT_2:应用程序端只收到服务器端得ACK信号,并没有收到FIN信号;说明服务器端还有数据传输,那么此时为半连接;
(9)TIME_WAIT:有两种方式进入 该状态:1、FIN_WAIT_1进入:此时应用程序端口收到FIN+ACK(而不是像FIN_WAIT_2那样只收到ACK,说明数据已经发送完毕)并 向服务器端口发送ACK;2、FIN_WAIT_2进入:此时应用程序端口收到了FIN,然后向服务器端发送ACK;TIME_WAIT是为了实现TCP 全双工连接的可靠性关闭,用来重发可能丢失的ACK报文;需要持续2个MSL(最大报文生存时间):假设应用程序端口在进入TIME_WAIT后,2个 MSL时间内并没有收到FIN,说明应用程序最后发出的ACK已经收到了;否则,会在2个MSL内在此收到ACK报文;

3.什么是ip分片?
一个IP数据报在以太网中传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。分片传输的IP数据报不一定按序到达,但IP首部中的信息能让这些数据报片按序组装。
IP数据报的分片与重组是在网络层进完成的。

4.TCP怎么分段与重组?
TCP报文段假设非常长的话,会在发送时发生分段,在接受时进行重组。
分段:MSS是TCP里的一个概念(首部的选项字段中)。MSS是TCP数据包每次能够传输的最大数据分段,TCP报文段的长度大于MSS时,要进行分段传输。TCP协议在建立连接的时候通常要协商双方的MSS值,每一方都有用于通告它期望接收的MSS选项(MSS选项只出现在SYN报文段中,即TCP三次握手的前两次)。所以如果用链路层以太网,MSS的值往往为1460。
重组:可以参考TCP的自适应重传算法:https://blog.csdn.net/qq_45255257/article/details/108749090
TCP报文段的分段与重组是在运输层完成的。
TCP分段的原因是MSS,IP分片的原因是MTU,由于一直有MSS<=MTU,很明显,分段后的每一段TCP报文段再加上IP首部后的长度不可能超过MTU,因此也就不需要在网络层进行IP分片了。因此TCP报文段很少会发生IP分片的情况。

5.为什么要三次握手?
客户端只有确定了自己能与服务端连接上才能开始发数据。所以两次握手肯定是最基本的。
假设一下如果没有第三次握手,而是两次握手后我们就认为连接成功了,那么会发生什么?已经失效的连接请求报文段突然又传到服务端,因而产生错误。


http://www.niftyadmin.cn/n/1271919.html

相关文章

用户数据报协议(UDP)

用户数据报协议&#xff08;UDP&#xff09;是无连接协议&#xff0c;也称透明协议&#xff0c;位于传输层。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。 UDP协议与TCP协议的区别 TCP协议参考链接&#xff1a;传输控制协议&#xff08;tcp&…

laravel中的validate验证的使用案例:

第一个是设置&#xff0c;第二个是直接调用。

Nginx--安装和配置

一、编译安装Nginx的要求如下&#xff1a; 1、确保您的操作系统安装有GCC编译器。另外您还必须安装Autoconf 和 Automake工具&#xff0c;它们用于自动创建功能完善的Makefile,当前大多数软件包都是用这一工具生成Makefile的&#xff0c;在CentOS系统下&#xff0c;您可以使用y…

图像处理

算法&#xff1a; 图象扭曲算法 图像处理&#xff08;十二&#xff09;图像融合(1)Seamless cloning泊松克隆-Siggraph 2004 图像处理&#xff08;十三&#xff09;保刚性图像变形算法-Siggraph 2004 网格形变算法 https://cpetry.github.io https://github.com/cpetry http://…

输入框11位号码344分割

<input type"text" maxlength"13" id"inputNum" placeholder"请输入充值手机号码"/>  // 手机号码344分割$(#inputNum).on(keyup,function (e) { var backSpaceCode e.keyCode; var temp ; var str ; if( backSpaceCode ! 8…

Hadoop2源码分析-YARN RPC 示例介绍

1.概述 之前在《Hadoop2源码分析&#xff0d;RPC探索实战》一文当中介绍了Hadoop的RPC机制&#xff0c;今天给大家分享关于YARN的RPC的机制。下面是今天的分享目录&#xff1a; YARN的RPC介绍YARN的RPC示例截图预览下面开始今天的内容分享。 2.YARN的RPC介绍 我们知道在Hadoop的…

RHCS集群理论暨最佳实践

评论(4)27444人阅读 RHCS集群理论暨 最佳实践 什么是集群&#xff1f; 集群是一组&#xff08;>2&#xff09;相互独立的&#xff0c;通过高速网络互联的计算机组成的集合。群集一般可以分为科学集群&#xff0c;负载均衡集群&#xff0c;高可用性集群三大类。 科学…

网络的组建步骤及相关

网络的组建步骤 网络的组建步骤可分为四大类&#xff1a; 1&#xff1a;拓扑规划–ip地址的规划 2&#xff1a;配置 3&#xff1a;维护 4&#xff1a;升级 这里主要对配置进行详细了解。 配置可分为五个步骤&#xff1a; 1>底层ip的配置 2>路由–全网可达 3>策略 4&g…