发布时间:2020-07-18 17:06:09来源:阅读:
TCP(Transmission Control Protocol)传输控制协议,是一种面向连接的,可靠的,基于IP的传输层协议。它的主要目地是为数据提供可靠的端到端的传输。
上一节学习了UDP协议,可以知道UDP协议非常简单,而且容易实现。但是其可靠性较差,一旦将数据包发出,将无法知道对方是否收到。为了解决这个问题,TCP协议就诞生了。使用TCP协议,可以提供网络的安全性。因为使用TCP协议传输数据时,每发出一个数据包都要求确认。如果其中有一个数据包丢失,就收不到确定包,发送方就知道应该重发这个数据包。这样TCP协议就保证了数据的安全性。
上图就是TCP协议三次握手建议的连接。 其中Seq表示请求序列号,Ack表示确认序列号,SYN和ACK为控制位
第一次握手第一次握手建立连接时,客户端向服务器发送SYN报文(Seq=x, SYN=1),客户端进去SYN_SENT状态, 等待服务器确定。
第2次握手首先,服务器收到客户端的请求,向客户端回复一个确认信息(Ack = x + 1)
其次,服务器再次向客户端发送一个SYN包(seq=y)建立连接请求,此时服务器进去SYN_RECV状态
第3次握手第三次握手客户端收到服务器的回复(SYN+ACK报文)。此时,客户端向服务器端发送ACK,此包发送完毕后客户端和服务器端进入ESTABLISHED状态。完成三次握手
在TCP通信中,当每次通信完毕后都会终止连接。该过程包含4个数据包,并且用一个FIN标志来表明连接的终结。
TCP断开需要四个步骤:
客户端通过发送一个设置了FIN和ACK标志的TCP数据包,告诉服务器通信已经完成服务器收到客户端的数据后,发送一个ACK数据包来响应客户端
服务器再次向客户端传输一个自己的FIN/ACK数据包
客户端手动啊服务器的FIN/ACK包后,响应服务器一个ACK数据包。然后结束通信。
答: 因为在客户端与服务器建立连接时,当收到客户端发送 的SYN数据后,是把ACK/SYN放在一起发送给客户端的。 但是当断开连接时,当收到客户端发送的FIN数据后,只能说明数据发送完毕,客户端不再发送数据,但是服务还是连接的。只能说明客户端没有数据发送给服务端了,但不代表服务端没有数据要发送给客户端了。当服务器所有的数据都发送完毕后,才会发送FIN/ACK数据,请求断开连接。
Wireshark 64位 v2.6.5.0
56.78 MB
协议分析工具(网络协议分析软件) v1.0 免费版
1.2M
Kainet LogViewPro(网站日志分析软件) v3.19.4 免费版
5.9M
Pidgin(多协议即时通讯平台) v2.14.0.0 官方版
8.27M
Xinorbis 硬盘内容分析器 V8.1.3 绿色免费版
25.9M
dnaman(分析软件) v8.0.8.789 破解版
15.6M
印Plus分析诊断系统下载
55.3M
飞狐股票软件(股票行情分析工具) 3.0 免费版
23.5MB
AbyssMedia tuneXplorer
2.0M
Alternate DLL Analyzer下载
543KB
Develve下载
4.4MB
Disk Analyzer Pro下载
4.2M
HiDownload下载
10.5M
Rank Tracker下载
308.1M
SqlCel下载
16.7M
WizTree下载 v3.30绿色版
5.1M
ansys下载
12.3GB
visio2003下载
51.7M
2020-07-18
如何更改命令提示符的快捷键
常见问题:T400 R400安装XP系统后设备管理器中未知设备无法安装驱动
小新Air13和Air13pro不支持安装Win7的说明
Git的4个阶段的撤销更改
Linux 查看空间使用情况
Think产品Win7系统下无线双机互联共享拨号上网的方法介绍
女神节 | 程序员如何低调而又不失逼格
家庭版
PHP 5.2/5.3 Hash漏洞补丁发布