图解TCP/IP总结

1.TCP和OSI模型对应

2.TCP可靠传输是通过序列号和确认应答实现的

用图说话,看下图是一个简单的tcp通信过程,发送端要向接收端发送一段数据1-1000,到达接收端之后告诉发送端下一个发送的数据从1000开始,同时发送一个确认号ACK,代表接收端收到了数据,然后发送端向接收端发送1001-2000的数据,这个过程其实就是不同的维度解释三次握手序列号和确认号的变化,这个1-1000就是序列号,接收端收到后发送另一个seq,和ack,ack就是发送端序列号+1,到达发送端之后发送ack给接收端,此时ack就是上一个接收端seq+1.

3.数据的封装(打包)过程

如下图,首先一个数据从应用层发出,然后通过套接字传输到传输层,这个时候会加上TCP首部,它包括源端口号(比如主机浏览器浏览的某个网站的端口号),目标端口号(比如Http:80),可以从图中目标端口号指向数据,为了后面数据解封装能够找到对应的数据;然后到了网络层,网络层会把TCP首部和数据部分整体当做数据打上IP首部,IP首部包括发送端IP地址和接收端IP地址以及协类型,重点解释下协议类型,这个协议类型指向传输层,用来确定传输层是TCP还是UDP;最后到达数据链路层,和之前类似会给整个数据打上MAC头部,MAC头部包括MAC接收地址和MAC发送地址以及协议类型,协议类型指向接收端IP地址,以便于找到网络层数据。总的来说TCP用端口号识别不同的应用,网络层使用IP地址,数据链路层MAC地址。

4.利用窗口提高速度

最传统的传输数据的方式如下图 ,主机A向主机B一片一片(1-1000)发送数据,每收到一片数据接收端就要发送确认应答,这样传输性能非常差,吞吐量低,有一种方式可以实现吞吐量的提高------窗口机制。

如下图,发送端以更大单位发送数据,这个数据在一个窗口,所谓窗口就是无需确认应答的最大数据,也就是说它把很多数据封装在了一起,具体怎么发送的呢?首先发送端发送1-1000的数据,接收端收到后发送一个确认应答,告诉发送端下一个需要从1001开始发送,知道发完这组。再来对比下数据丢失的情况。数据丢失有两种情况,一是传输数据丢失,二是确认应答丢失。在传统传输过程中如果数据丢失,那么会触发重传机制,数据重发,我们知道数据重发消耗资源而且性能也会下降;但是对于窗口机制来说,如果某段数据丢失,那么每次传输数据给接收端时都会发送丢失数据的确认号,当接收端收到3次这样的确认应答时,接收端会重传,这个机制也叫快重传,比如1001- 2000丢失,这时仍然会发送2001-3000的数据,只不过接收端收到数据后会发送需要1001-2000数据的确认应答,当接收端收到3次1001-2000的确认应答之后会进行重传。第二数据丢失指的是确认应答丢失,对于传统的模型来说确认应答丢失则还会向接收端发送数据,对于接收端来说之前接收到过数据,所以此时会丢弃数据,然后发送一个确认应答。而对于窗口机制来说,一个窗口内丢失确认应答不需要重传。

5.流控制

发送数据的时候发送端怎么知道接收端能承受多少数据呢?TCP有个机制------流控制,它可以让发送端根据接收端的实际情况接收数据。具体来说就是接收端会根据自己的实际情况向发送端发送一个窗口,这个窗口大小就是发送端可以传输数据的最大值,窗口越大说明吞吐量越大,如果出现接收端数据溢出的情况,那么窗口也会随之减小发送个发送端。这也是TCP的流量控制机制。

6.拥塞控制

在计算机网络共享环境中,主机进行通信时可能造成网络拥堵,这时候发送一个较大量的数据时可能造成网络瘫痪,为了避免这样的事情发生,TCP通过拥塞控制机制来避免这一问题。拥塞控制具体是发送端向接收端发送一个拥塞窗口,其后面具体实现主要是通过慢开始,拥塞避免,快重传和快开始。如下图

拥塞控制算法:

拥塞控制重要参数:

快重传和快恢复:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#HashMap#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值