首页 > 其他分享 >TCP传输层协议 特性

TCP传输层协议 特性

时间:2022-09-06 14:55:09浏览次数:59  
标签:断开连接 ACK 报文 特性 TCP 传输层 服务器 连接

TCP特性:

1、工作在传输层

2、面向连接

3、全双工协议

4、半开关

5、错误检查

6、将数据包打包成断,排序

7、确认机制

8、数据恢复,重传

9、流量控制,滑动窗口

更多关于tcp的内核参数,可参看man 7 tcp 详细解释

tcp要建立链接

系统当中没打开一个进程会配pid(系统中的编号,方便管理)

控制位: 来决定     

ACK     FIN   SYN   同步

                  finsh             

tcp         A 和B                       

A想和B建立连接状态 :syn=1 

A和B已经建立连接状态:ACK=1 

A和B 已经断开连接:fin=1          

 

三类:

1、规定好的  知名端口号是20 443 人为规定

2、系统随机分配(客户端去访问服务端系统会自动随机分配一个端口号给你)

3、人类自由使用

 

 

 

去访问服务器

 

下载文件(FTP,TFTP,nfs),访问网页(apche nginx tomact ISIS)

安装软件

提供服务器 我们的端口号一定要固定

客户端--------A服务端

Telnet:

可以远程连接:远程控制服务器

Telnet ip地址 端口号 查看端口号是否打开

 

tcp 面向连接,在我真正传输数据之前 先要打开传输数据的通道和A和B要先联系上

控制位:决定A和B目前处于什么状态??11种了解

ACK FIN SYN

tcp A和B 目前处于什么状态???

A和B请求建立连接状态    syn=1  同部位

A和B已经建立连接状态  ACK=1

A和B 已经断开连接  fin=1

 

控制位:

URG(紧急位):是否有紧急数据

ACK(确认位):前面确认号字段是否有效

PSH(急切位):提示接收端应用程序应该立即从TCP接收缓冲区种读走数据,为接收数据腾出空间。

RST(重置位):如果收到一个rst=1的报文,说明与主机的链接出现了严重错误(如主机崩溃),必须释放连接,然后重新建立连接。

SYN(同步位):在建立连接时使用,用来同步序号。

FIN(断开位):表示通知对方 本端要关闭连接了,标记数据是否发送完毕。

检验和:提供额外的可靠性紧急指针:标记紧急数据字段中的位置。

选项部分:其最大长度可根据tcp首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节

TCP的连接

5.1 TCP连接(三次握手)

首先,想给大家一张两台PC进行通讯的三次握手内容图进行分析:

 

 

 如图所示,PC1微客户端,PC2为服务端,PC1需要向PC2进行请求建立连接

第一步:pc1会发送一个请求建立连接的报文,这个报文以下几个内容:

1、报文的序号(Seq=x)

2、同步位由于PC1和PC2还没有建立连接处于请求建立连接的状态,所以同步位SYN=1,确认位ACK=0。

第二步:pc2收到pc1请求建立连接的报文后,同意pc1的建立连接,所以需要回复一个报文给pc1,pc2发送的报文内容有以下几点:

1、报文的序号(Seq=y)

2、Ack确认号为x+1,即pc2需要pc1回复一个报文序号为x+1的报文

3、控制位SYN=1 ACK=1 ACK=1 pc2同意pc1请求建立连接的请求,即确认位为1,同步为1

第三步:pc1收到pc2的回复报文后

1、会发送一个报文序号为x+1的报文,即Seq=x+1

2、Ack确认号为x+1,即pc2需要pc1请求建立连接的请求,即确认位为1,同步位为1

3、最后将ACK=1封装进数据包中,这时候pc1与pc2已经建立连接同步SYN=0

TCP断开(四次挥手)

下图为TCP断开连接的图片解析

 

 

 

客户A和服务器B都处于建立连接的状态,此时客户A主动与服务器B发出断开连接的请求: 第一步:客户A会发送一个序号为Seq=u的报文给服务器B,此时控制位中的断开位FIN=1,即请求与服务器B断开连接。(PS:此时客户A处于等待断开连接的状态,服务器B的数据传送未结束)

第二步:服务器B需要先将数据传输全部传输结束才能同意断开连接,服务器B会进行下面两步操作:

2.2 服务器B会回复一个报文序号为v的报文给客户A(Seq=1)

需要客户A能回复一个报文序号为u+1的报文给服务器B(确认号ack-u+1)

此时服务器B与客户A仍处于建立连接的状态所以控制位的确认位ACK=1

2.3 服务器B同意了客户A的断开连接请求:服务器B会回复一个同意断开连接的报文:

服务器B发出的报文的序号为w(Seq=w)

需要客户A回复一个报文序号为u+1的报文给服务器B(Ack=u+1)

此时的控制位中,断开位FIN=1,确认位ACK=1(2个控制位表示同意断开连接)

第三步:客户A接收完服务器传输的数据后,收到了服务器B的同意断开连接请求,这个时候客户A会发送一个确认报文给服务器B:

按照服务器B要求,客户A回复了一个报文序号为u+1的报文给服务器B(Seq=u+1)

控制位中确认位为1(ACK=1)

需要服务器B回复客户A一个报文序号为w+1的报文给客户A(此时客户A与服务器相当于完全断开连接,所以客户A最后发送的报文将会被服务器B拒收,服务器B将不再回复客户A)


总结

本章的重点主要是理解,TCP与UDP协议的特性和优缺点对比,重点理解传输层中TCP的三次握手中控制位处于什么状态以及变化。

标签:断开连接,ACK,报文,特性,TCP,传输层,服务器,连接
From: https://www.cnblogs.com/fengxia6/p/16661795.html

相关文章