From 2f3b637fb7f367938ba36f4544a9722d46f018d1 Mon Sep 17 00:00:00 2001 From: wolverinn Date: Wed, 26 Feb 2020 08:28:37 +0800 Subject: [PATCH] Update Computer Network.md --- Computer Network.md | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/Computer Network.md b/Computer Network.md index d8be547..5ecdd92 100644 --- a/Computer Network.md +++ b/Computer Network.md @@ -8,7 +8,7 @@ * [TCP的拥塞控制是怎么实现的?](#TCP的拥塞控制是怎么实现的) * [TCP与UDP的区别](#TCP与UDP的区别) * [TCP如何保证传输的可靠性](#TCP如何保证传输的可靠性) - * [什么是TCP粘包?](#什么是TCP粘包) + * [~~什么是TCP粘包?~~](#什么是TCP粘包) * 应用层:HTTP和HTTPS * [HTTP和HTTPS有什么区别?](#HTTP和HTTPS有什么区别) * [GET与POST的区别?](#GET与POST的区别) @@ -214,25 +214,6 @@ HTTP不可以使用UDP,HTTP需要基于可靠的传输协议,而UDP不可靠 5. 超时重发:发送方发出数据之后,启动一个定时器,超时未收到接收方的确认,则重新发送这个数据; 6. 流量控制:确保接收端能够接收发送方的数据而不会缓冲区溢出 -### 什么是TCP粘包? -TCP粘包就是指发送方发送的若干包数据到达接收方时粘成了一包,从接收端缓冲区来看,后一包数据的头紧接着前一包数据的尾。 - -如果发送方发送的多组数据本来就是同一块数据的不同部分,比如说一个文件被分成多个部分发送,这时当然不需要处理粘包现象;如果多个分组毫不相干,甚至是并列关系,那么这个时候就一定要处理粘包现象了 - -出现粘包的原因: - -- 发送方:默认使用**Nagle算法**(主要作用:减少网络中报文段的数量),将多次间隔较小、数据量较小的数据,合并成一个数据量大的数据块,进行发送; -- 接收方:TCP将接收到的数据包保存在**接收缓存**里,然后应用程序主动从缓存读取收到的分组。如果TCP接收数据包到缓存的速度大于应用程序从缓存中读取数据包的速度,多个包就会被缓存,应用程序就有可能读取到多个首尾相接粘到一起的包。 - -##### 如何解决粘包问题? - -
-展开 - -- 发送方:关闭Nagle算法; -- 接收方:在应用层进行处理。将所有数据全部读完之后,再进行分组。分组的方法可以通过规定开始符和结束符的方法;也可以在每组数据前加上数据长度。 -
- ### HTTP和HTTPS有什么区别? 1. 端口不同:HTTP使用的是80端口,HTTPS使用443端口; @@ -382,4 +363,4 @@ Cookie保存在客户端本地,客户端请求服务器时会将Cookie一起 - [什么是TCP粘包?怎么解决这个问题](https://blog.csdn.net/weixin_41047704/article/details/85340311) ### 待完成 -- [ ] 发送窗口的大小,如何最大利用带宽,假设延迟100ms,发送端10Mb/s,接收端100Mb/s. [reference](https://blog.csdn.net/bad_sheep/article/details/6158676) \ No newline at end of file +- [ ] 发送窗口的大小,如何最大利用带宽,假设延迟100ms,发送端10Mb/s,接收端100Mb/s. [reference](https://blog.csdn.net/bad_sheep/article/details/6158676)