TCP(传输控制协议)简介


TCP是一个面向连接的、端到端的可靠的传输层协议。位于TCP/IP网络分层架构中的第三层,底层是IP协议。IP把TCP段封装在数据报中发送到网络上。

 


TCP的正式标准是RFC793,后序又有许多其他RFC补充了TCP其他方面的附加信息,其中一些是为适应现代网络所做的增强。

793

传输控制协议

813

窗口和确认策略

879

最大段长度和相关专题

1122

互联网主机要求——通信层

1323

TCP高性能扩展

2018

TCP选择性确认

2581

TCP拥塞控制

2757

细长网络

2988

计算TCP重传定时器


TCP协议在传输数据之前先在两台设备之间建立一条虚拟连接,之后就可以双向传输数据。它使用端口为应用程序提供传输层寻址,这样允许多个进程使用同一个IP地址(不同端口)与不同主机上的多个进程通信。

TCP主要完成如下功能:

(1)数据封装和传输

TCP建立连接时会与对方协商最大的段大小(Maximum Segment Size, MSS),应用程序的数据按MSS的大小分成多个TCP段,段的前面是TCP首部,后面是应用程序的数据。IP协议再把TCP段封装到数据报中发送到网络上。

TCP可以在两个方向上传输连续的字节流,与UDP不同,TCP发送的数据长度没有协议上设置的限制,只受限于双方处理数据的缓冲区。

(2)可靠性

TCP的底层IP协议是不可靠的,网络通信设备也会有干扰和故障,这些都会导致数据丢失、破坏、失序、重复。TCP需要从这些错误中恢复。

1. 每个TCP段都要计算校验和,用于监测数据是否被破坏。如果接收方发现校验和不正确,就抛弃该TCP段,不发送确认,发送方收不到对该数据的确认便会重新发送。

2. TCP为数据中的每一个字节分配一个序号,接收主机可以根据序号校正失序或重复的数据。

3. TCP发送的数据,要求接收主机的确认,如果在发送主机设定的时间内,确认没有到达,将进行重传。只有收到确认后,TCP才会把已经确认的数据从队列缓冲区中删除。

(3)流量控制

TCP对两端传输的数据流加以管理。发送方根据接收方反馈的“通告窗口”控制数据的发送数量。“通告窗口”指明接收方可以接受的序列号范围,发送方在接收到进一步的允许之前,发送的数据不能超出这个范围。

发送端也有一个“拥塞窗口”用于控制流量。“拥塞窗口”根据网络拥塞情况得出。如果发送出去的数据连续得到确认,“拥塞窗口”会不断增加,以提高效率。

允许发送的数据量是“拥塞窗口”和“通告窗口”中的最小值,“通告窗口”是接收方的流量控制,而“拥塞窗口”是发送方施加的流量控制。

(4)拥塞避免

一旦发生拥塞,“拥塞窗口”将设置为一个MSS大小,当新的数据被确认时再增加“拥塞窗口”。

(5)多路复用

IP地址和端口号构成一个socket,一对socket唯一标识一个连接。这样允许多个进程使用同一个IP地址(不同端口)与不同主机上的多个进程进行TCP通信。

(6)连接管理

当两个进程进行TCP通信时,需要先建立连接。建立连接使用三次握手机制,每一方都发送它的初始序列号,并接收对方的确认。

通信完成时,需要终止连接,释放资源。两个主机不需要同时终止连接,每台主机都可以发送FIN,通知另一方它已经完成了数据发送任务,关闭从它到对方的数据发送任务,但它仍然可以接收对方发过来的数据,直到对方也关闭了连接为止。


【学习资料】 《Winsock网络编程经络》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值