传输控制协议--- Transmission Control Protocol (TCP)

Transmission Control Protocol (TCP)

用于网络通信的传输控制和网络协议套件,包括很多协议,其中最主要的是TCP和IP协议。TCP/IP属于UNIX类系统的内置协议,被广泛应用于网络通信,并且已然成为网络传输的标准。即使是对于拥有专有网络协议的网络操作系统,如Netware。IP协议用于处理数据包,TCP则主要用于网络连接的建立及数据的传输,保障数据包的的可靠传输及传输顺序。

作为IP协议的补充,TCP通过提供可靠的,流式传输的连接,协议弥补了IP协议的很多不足。并且作为IP协议层的下一层,为IP提供了很多功能支持:

  • 流式传输:TCP字节流的形式传输数据,或者说更像一个文件的形式,代替原有的网络数据报形式的传输。
  • 可靠传输:头信息中的序号字段用于保障数据的传输及接收,在确认数据丢失的情况下,TCP协议会启动数据的重新传输。
  • 网络自适应:TCP会根据网络状况,动态的进行传输控制,以在不影响网络的情况下,达到最大吞吐。
  • 流控制:TCP负责管理数据缓冲区,协调处理网络冲突以避免缓冲区溢出。如TCP会间隔的暂停传输比较快发送方以适应接收数据较慢的接收方。

TCP基本的操作包括:

  • 将高层的应用数据包装为一个个数据段。
  • 将数据段包装到IP数据包
  • 绑定特殊的应用端口
  • 每个传输的字节都有对应的序列号
  • 用于建立及关闭连接的特殊数据包
  • 通过确认及超时以保障数据传输的完整性。

TCP数据分段基于32 bit words,包括20字节(5 word)头信息:

  • 源端口号:端口号用于确定数据需要发送,接收的具体应用。不同的端口号应用,也使得不同网络主机间可以同时发送,接收多个数据包到不同的应用。TCP数据流可以通过源地址,源端口,目标地址,目标端口唯一的确定应用传输。
  • 目标端口号:TCP数据传输目标应用
  • 序号:32位数据用于标识当前需要传输数据的第一个字节号
  • 确认序号:32位数据,用以标识发送端期望收到的数据起始序号,接收端可以通过此序号,确定 确认序号-1 的数据都已接收,本地副本可以丢弃。
  • 头信息长度:4字节的头信息长度
  • 标志位:6位标志位用以标识传输数据的类型及状态,部分标志位可以同时使用
  • 校验数据
  • 流控制:流控制是通过数据序号进行控制的,发送序号及确认序号。

序号

32位序号用以标识TCP传输的数据数。每个TCP数据包包含一个标识第一个需要传输的字节的序号及最后一个被远端主机接收的数据序号(确认序号),发送及接收端都需要跟踪这两个序号以保障数据的可靠传输。

TCP使用一些标志位以管理传输,一些标志位可以单独使用,但是对于用于建立及关闭连接,需要可靠传输的SYN、FIN标志位则要结合序号信息。

... ...

猜你喜欢

转载自www.cnblogs.com/niejunlei/p/10503890.html