栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

网络协议记录

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

网络协议记录

一.概述

在互联网时代,整体的服务都是通过网络进行。网络如果出现瓶颈也会影响服务体验,更严重的会导致服务不可用。

了解网络也是能够在搬砖的工作中,能够识别一些坑,并在出现问题的时候能够较快的定位。

二.tcp/ip协议分层

一般有7层协议,四层协议。

用的比较多的是四层协议,这个协议也是我们大多数人关注的。

四层协议发送与接收详细每层数据结构:

可以看到上层复用下层能力,发送的时候从上层往下依次将数据包装,接收的时候则依次解封。如应用层是http协议往传办理层提交数据,传输层会加上自已的数据规范=tcp首部(传输层数据)+http数据。

三.tcp协议 1.tcp三次握手连接

客户端与服务器通过三次握手进行连接,图如下:

 这里为什么是3次,而不是2次或1次。这个本质上是一个概率问题。

3次能保证刚好客户端与服务端都有请求与响应。一定程度上确定了网络及双方服务的可用性。

2.tcp四次握手关闭

 这里有time_wait状态主要是是以下2点考虑:

a.让客户端的响应有机会重试,因为客户端在第4步响应服务器的时候可能出现丢包,所以需要有时间做重试。

b.在客户端关闭连接后,后续又重用了这个端口,网络上的包有可能由于网络原因后面又到达了这个端口。此时如果时间很短就会导致这些包是这个新连接的。

3.tcp要解的几个问题

tcp从参与者来看,有:发送方,网络媒介,接收方三个角色。

滑动窗口解法乱序,重传及接收方处理不过来的问题。

拥塞窗口解法网络阻塞问题。

而在整个网络交互过程中会有以下几个问题:

a.乱序

即发送方发送了a,b两个包,接收方可能接收的顺序是b,a。

策略:

定义包id,自增,接收方确认的时候根据包id顺序确认。同时接收方应用层根据这个id来进行确认,如果出现发送方发了1,2,3三个包,接收方接收到了1,3,这时接收方只能确认1.

b.包超时

发送方发送包时,由于网络或接收方问题会出现包的超时。

策略:

超时重传。

超时重传的策略有:

发送方定时超时重传:这个可以采样网络rt,计算平均rt。

接收方对于未收到的包重发3次期望接收的ack。

接收方将已接收地图发给发送方,由发送方判断,如已接收1,3. 这样发送方就知道2丢了,要重发。

c.接收端处理不过来

接收端处理不过来,一般是发送方发送太快。

d.不能将网络整个塞满

这个一个解法就是碰到丢包问题,就将拥塞窗口减小。

tcp一般会减少原先窗口的n/2. 然后后续每收到一个包就加1.

这个解法缺点也很明显,即网络带宽可能是好的,但是少数包丢失是因为接收方问题,造成了误判。另外一方面在出现丢包问题时,多余的包可能已经将网络中中间设备填满了,这时整体网络环境已经很糟糕了,太迟了。

另一个解法就是用tcp的bbr算法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/333276.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号