TCP协议(一)

TCP提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放链接。TCP不提供广播和多播。

TCP的主要特点:

  1. TCP是面向连接的运输层的协议。这就是说,应用程序在使用TCP协议之前,必须先建立TCP连接。在传送数据完毕之后必须释放已经建立的TCP连接。
  2. 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
  3. TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达。
  4. TCP提供全双工通道。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据。
  5. 面向字节流。“流”指的是流入进程或从进程流出的字节序列。接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。

TCP的连接:

TCP连接的端点叫套接字,端口号拼接到IP地址即构成了套接字。每一条TCP连接唯一地被通信两端的两个端点所确定。

TCP发送的报文段是交给IP层传送的。但IP层只能提供最大努力服务,也就是说TCP下面的网络所以工的是不可靠的传输。因此,TCP必须采用适当的措施才能是两个运输层之间的通讯变得可靠。

TCP的首部:

TCP虽然是面向字节流的,但TCP传送的数据单元确实报文段。一个TCP报文段分别为首部和数据两个部分,而TCP的全部功能都体现在首部中各个字段的作用。

  1. 源端口和目的端口分别占用两个字节
  2. 序号占四个字节。范围是【0,2^32-1】,共2^32个序号。序号增加到2^32-1后,下一个序号就又回到0.也就是说序号使用mod2^32运算。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。整个要传送的字节流的初始序号必须在连接建立时设置。首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号。
  3. 确认号占四个字节,是期待收到对方下一个报文段的第一个数据字节的序号。记住若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。由于序号字段有32位,可对2^32Byte,即4GB的数据进行编号。
  4. 数据偏移 占四位,他指出TCP报文段数据起始处距离TCP报文段的起始处有多远。即TCP报文段的首部长度。以32位字(即4字节长的字为计算单位)。因此数据偏移的最大值为15*4=60字节。
  5. 保留位6位。
  6. 紧急URG,当URG=1时,告诉系统此报文段中有紧急数据,应尽快传送,而不要按照原来的排队顺序来传送。
  7. 确认ACK,仅当ACK=1时确认号字段才有效。TCP规定,在建立连接后所有传送的报文段都必须把ACK置1.

  8. 推送PSH。当两个应用进程进行交互式通信时,有时在一段的应用进程希望键入一个命令后立即就能收到对方的响应。在这种情况下,TCP就会使用推送操作。这是发送方TCP把PSH置1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快地交付接受应用进程,而不再等到整个缓存都填满了之后再向上提交。

  9. 复位RST。RST=1时,表名TCP连接中出现严重差错,必须释放连接,然后再重新建立连接。RST=1还用来拒绝一个非法的报文段,或拒绝打开一个连接。

  10. 同步SYN 在建立连接时用来进行同步序号。当SYN=1是而ACK=0时,表名这是一个连接请求报文段。若对方同意建立连接,则应在响应的报文段中使用SYN=1和ACK=1。因此,SYN=1就表明只是一个连接请求或连接接受报文。

  11. 终止FIN=1时,释放运输连接。

  12. 窗口占2个字节。指的是发送本报文的一方的接受窗口。窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量。总之,窗口值作为接收方让发送方设置其发送窗口的依据。

  13. 检验和

  14. 紧急指针

  15. 选项,最长40字节。

滑动窗口:

TCP的滑动窗口是以字节为单位的。接收方会把自己的接受窗口数值放在窗口字段中发给对方。因此发送方的发送窗口不能大于接受方的接受窗口数值。

利用滑动窗口来实现流量控制,流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。

这种使发送方暂停发送的状态将持续到主机B重新发出一个新的窗口值为止。只有接收方发给发送方的ACK设置为1,确认号字段才有用。TCP为每一个连接设有一个持续计时器。

控制TCP的传输效率:

三种机制控制TCp报文段发送时机。

  1. TCP维持一个变量,他等于最大报文段长度MSS。只要缓存中的存放的数据达到MSS字节时,就组装成一个TCP报文段发送出去。
  2. 第二种机制是由发送方的应用进程指明要求发送报文段,即TCP支持的PUSH操作。
  3. 发送方的一个计时器期限到了,这时就把当前已有有缓存数据装入报文段发出去。

TCP拥塞控制:

拥塞控制就是防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局的过程,涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。 
TCP进行拥塞控制的算法有4种,即慢开始,拥塞避免,快重传和快恢复。

慢开始和拥塞避免:

基于窗口的拥塞控制。发送方维持一个叫做拥塞窗口的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。

判断网络拥塞的依据四出现了超时。

慢开始算法:当主机开始发送数据时,由于并不清楚网络的负荷情况,所以如果立即把大量数据字节注入网络,那么就有可能引起网络发生拥塞,经验证,较好的方法实现探测一下,即由小到大主键增大发送窗口,也就是说由小到大逐渐增大拥塞窗口数值。

满开始规定,在收到一个对新的报文段的确认后,可以把拥塞窗口增加到最多一个SMSS的数值。

拥塞避免算法:及时让拥塞窗口缓慢增大,即没经过一个往返时间RTT就把发送方的拥塞 窗口加一,而不是像满开始阶段那样加倍增加。

快重传算法:尽早知道发生了个别报文段的丢失。不要等待自己发送数据时才捎带确认,而是立即发送确认,即使受到了失序的报文段也要立即发出对已受到的报文段的重复确认。款重传规定,发送方只要一连收到三个重复确认,则立即进行重传。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值