TCP协议是一种传输控制协议,是一种面向连接的可靠传输协议。它通过在数据传输之前手打双方需要预先建立一条逻辑通路。
TCP协议建立的连接是双向的。
TCP 报文
Source Port:源端口---16位
Destination Port:目的端口---16位
Sequence Number:序列号
Ackonwledgment Number:确认序列号
SYN:同布位
ACK:确认位
FIN:释放tcp连接
Window:窗口大小,代表能接收多少数据
TCP
分段:因为
IP
分片后,
TCP
协议无法保证数据的可靠性传输;故而使用
TCP
协议进行封装的文件不允
许进行
IP
分片,而又因为
MTU
存在,需要将大文件分为小文件,该操作由
TCP
协议完成。
MSS---
最大传输段
===MTU-IP
头部
-TCP
头部
在TCP协议中每个报文都要有序列号信息。
TCP协议可靠性
确认机制
----
每收到一个
TCP
数据段,都需要发送一次确认报文。
重传机制
----
超时重传
,当一个数据段中的某个报文丢失,发送端会主动重新发送一次该报文。
排序机制
----
传输数据段时,被分为多个报文,从不同路径传输,最终达到目的地的顺序会被打乱, 需要根据序列号字段进行重新排序。
流控机制(滑动窗口机制):可以通过调节窗口大小(
Windows
)来对流量进行控制。
面向连接 ----以A1000字节,B3000字节为例
MSL---120S
,指一个数据包在网络中传递的最大时间。
三次握手
SYN=1建立连接通道
ACK=1确认收到报文
四次挥手
FIN=1断开连接
MSL---120S
,指一个数据包在网络中传递的最大时间。
TCP相对于UDP协议的特点
1.面向连接的:使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写,TCP连接是全双工的,即双方的数据读写可以通过一个连接进行。完成数据交换之后,通信双方都必须断开连接以释放资源。TCP协议的这种连接是一对一的,所以基于广播和多播(目标是多个主机地址)的应用程序不能使用TCP服。而无连接协议UDP则非常适合于广播和多播。
1.流式服务:TCP的字节流服务的表现形式就体现在,发送端执行的写操作数和接收端执行的读操作次数之间没有任何数量关系,当发送端应用程序连续执行多次写操作的时,TCP模块先将这些数据放入TCP发送缓冲区中。当TCP模块真正开始发送数据的时候,发送缓冲区中这些等待发送的数据可能被封装成一个或多个TCP报文段发出。