TCP讲解(2)--------摘自《计算机网络-自顶向下方法》

继续上周的TCP内容。

接下来是说下TCP的连接管理,TCP建立连接是需要三次握手的。

首先第一步客户机的TCP向服务器端发送一个特殊的TCP报文段,里面不包含应用层数据,但是首部的一个标志位(SYN比特)设置为1,同时客户机选择一个起始序号(client_isn),将其放在TCP  SYN报文段的序号字段中。接着这个报文段被封装在一个IP数据报中,发送给服务器。

接着第二步,如果刚那个数据报到达服务器了,则服务器提取出那个数据报中的TCP SYN报文段,为这个TCP链接分配TCP缓存和变量,然后向客户机TCP发送允许连接的报文段,将报文段首部的确认号字段设置为(client_isn+1)并将自己的初始序号(server_Isn)也放入报文段的序号字段中(确认号和序号前面博文里写到,这是用来识别是否丢包后者延迟的标识。)。其中SYN比特也被设置为1。

然后第三步,客户机收到服务器端的SYN ACK报文段后,客户机分配缓存和变量。然后向服务端发送另一个报文段,将(server_isn+1)放入这个报文段首部的确认字段中,并且由于连接建立了,所以SYN比特置0。

接下来是关闭连接,TCP报文段首部有个FIN比特,设置为1就说明是关闭连接的报文段。首先客户机发送这个FIN比特是1的报文段给服务器,服务器收到后返回一个确认报文段,然后服务器向客户端也发送一个FIN比特是1的报文段,客户机收到后给服务器发送确认。这样,连接关闭了,资源也释放了。

紧接着,给大家说下拥塞控制方法。

(1)。端到端拥塞控制。这个方法里,网络层没有为运输层拥塞控制提供显式支持,这个方法中,如果TCP报文段的丢失,就被认为是网络拥塞的一个迹象(超时或者收到3次冗余ACK(确认字段)),TCP就会减小其窗口的长度。

(2)。网络辅助的拥塞控制。如果发生拥塞了,有两种方式可以反馈给发送方,一种是直接由路由器发给发送方,阻塞分组的通知形式。另一种是路由器标记或者更新流向接收方的分组中的某个字段来指示拥塞的产生。一旦接收方收到这个有拥塞标记的分组,就会通知发送方网络发生了拥塞。

TCP的拥塞控制使用第一种方法,让每一个发送方根据感知到的网络拥塞的程序,来限制其能向连接发送流量的速率。TCP控制机制有一个叫拥塞窗口的额外变量(CongWin),由它对网络中发送流量的速率进行限制。

发送方向连接中发送数据的速率为 拥塞窗口/往返时延。

如果出现丢包事件,则发送方就认为出现了拥塞。

当发生了拥塞,那么TCP就用一种叫做TCP拥塞控制算法。里面有三个部分:1.加性增,乘性减。2.慢启动。3.对超时时间做出反应。

1.加性增,乘性减:

当出现丢包事件,那么发送方就降低发送速率就是拥塞窗口的大小,没发生一次,就减半,直到1。如果发现不是拥塞的,那么每次就线性的往上加,类似一字节一字节的往上增加拥塞窗口大小,这个阶段称为避免拥塞。

2.慢启动:

在TCP连接开始时,首先以指数的速度增加,直到发生阻塞,接下来就会像上面一样加性增和乘性减了。

3.超时时间做出反应:

在发生超时后,TCP发送方进入慢启动,拥塞窗口从1开始以指数速度增长,直到在超时前的窗口值的一半,接下来,窗口以线性增长。

TCP控制算法我只能初步的这么说一下,毕竟还没看完。希望大家懂的能给些指点。

/*************** 2012 年 8 月 5 日更新*************/

TCP算法中,当收到超时事件时拥塞窗口被设置为1,但是如果收到3次冗余ACK,那么说明了发送方收到了有些报文段已经收到了,那么TCP就取消慢启动,这个行为被称为快速恢复。

好吧,这章节看到后面真心没懂什么是TCP的公平性,只是知道了UDP是无连接的,所以会占用TCP的带宽。标记下,等以后回过头来复习的时候再看看了,有点不清楚,我看了这么多会不会对我以后有用,不管了,下周开始看网络层,包括IP选址啊啥的,继续加油了。

你可能感兴趣的:(计算机网络--自顶向下方法)