TCP协议详解

TCP协议是TCP/IP协议族中另一个重要的协议。和IP协议相比,TCP协议更靠近应用层,因此在应用程序中具有更强的可操作性。

        TCP头部信息:


16位端口号:告知主机该报文段是来自哪里(源端口)以及传给哪个上层协议或应用程序(目的端口)的。

32位序号:一次TCP通信过程中某一个传输方向上的字节流的每个字节的编号,

32位确认号:用作对另一方发送来的TCP报文段的响应。其值是收到的TCP报文段的序号值加1。

4位头部长度:标志该TCP头部有多少个32bit字。

16位窗口大小:是TCP流量控制的一个手段。

16位校验和:由发送端填充,接收端对TCP报文段执行CRC算法以校验TCP报文段在传输过程中是否损坏。

16位紧急指针:发送端向接收端发送紧急数据的方法。



三次握手与四次挥手:




TCP状态转移:TCP从建立到关闭的整个过程中通信两端状态的变化。





服务器通过listen系统调用进入LISTEN状态,被动等待客户端连接,因此执行的是所谓的被动打开。服务器一旦监听到某个连接请求,就将该连接放入内核等待队列中,并向客户端发送带SYN标志的确认报文段。此时该连接处于SYN_RCVD状态。如果服务器成功地接收到客户端发送回的确认报文段,则该连接转移到ESTSBLISHED状态。ESTABLISHED状态是连接双方能够进行双向数据传输的状态。


TIME_WAIT状态:在这个状态,客户端连接要等待一段长为2min的时间才能完全关闭, 出现在主动发起断开接连请求的一端。

意义:1、保证可靠的终止TCP连接。

           2、保证迟来的数据报能被识别并丢弃。


TCP协议的可靠性:

1、32位序号保证数据有序。

2、32位确认号保证数据不会丢失(如果没有接收到数据有超时重传机制保障数据)

3、16位窗口大小保证接收端大小与发送端大小的流量匹配。

4、16位校验和保证数据/值完整性。


TCP超时重传:

在异常网络状况下(开始出现超时或丢包),TCP如何控制数据传输以保证其承诺的可靠服务?

TCP服务必须能够重传超时时间内为收到确认的TCP报文段。为此,TCP模块为每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动。如果超时时间内未收到接收方的应答,TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择,以及最多执行多少次重传,就是TCP的重传策略。

TCP一共执行5次重传,每次重传超时时间都增加一倍,在5次重传均失败的情况下,底层的IP和ARP开始接管,直到telnet客户端放弃连接为止。


拥塞控制:TCP模块还有一个重要的任务,就是提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性,这就是所谓的拥塞控制。

拥塞控制的最终受控变量时发送端向网络一次连续写入的数据量,我们称为SWND(Send Window,发送窗口)。不过,发送端最终以TCP报文段来发送数据,所以SWND限定了发送端能连续发送的TCP报文段数量。这些TCP报文段的最大长度称为SMSS。

发送端需要合理地选择SWND的大小。如果SWND太小,会引起明显的网络延迟;反之,如果SWND太大,则容易导致网络拥塞。前文提到,接收方可通过其接受通告窗口(RWND)来控制发送端的SWND。但这显然不够,所以发送端引入了一个称为拥塞窗口(CWND)的状态变量。实际的SWND值是RWND和CWND中的较小者。


拥塞控制四部分:慢启动、拥塞避免、快速重传和快速恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值