网络编程--TCP/IP协议(一)

2023-11-08

前言

这一部分涉及到的知识点就很多了,而且一篇博客也写不完,抓紧时间吧。

一丶网络基础

<1>认识IP地址

我们在上篇博客简略的介绍了IP地址,说IP地址是用来标识一个主机的地址,并且大致介绍了IP的格式,这里再拓展一下其他的知识。

1>具体格式

IP地址由4个数字组成,每一个数字都是一个八位的二进制数,也就是说IP地址是一个32位的二进制数。

举个“栗子”:比如说一个32位的二进制数是01100100.00000100.00000101.00000110
但是我们一般是用“点分十进制”的方式来表示,即就是:100.4.5.6

2>组成

每一个IP地址都是由网络号和主机号组成。

网络号:标识网段,保证相互连接的两个网段具有不同的表示。
主机号:标识主机,保证同一网段内,主机之间有相同的网络号,但是必须主机号不同

所以如何合理的设置网络号和主机号,就是个问题,我们要保证在相互连接的网络中,每台主机的IP都是唯一的,

3>分类

根据以前提出过的一种网络号和主机号的方案,把所有的IP地址大致划分为五类,如下图所示。

在这里插入图片描述

注意一下,这里A~E类的IP地址划分中,网络号和主机号说的是范围。
对于这五种划分,我们大致知道就好了,不需要具体深究。这里还要提一下一些比较特殊的IP

1.将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网;
2.将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有
主机发送数据包;
3.127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
注:本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),
对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通
信。

4>子网掩码

上述的IP划分其实是有问题的,我们单位一般都会申请B类网络,因为C类网络连接主机是很有限的。所以这个时候就会出现一个问题,B类网路主机连接最大数是65534,我们实际开发中连接的主机数量是远远的小于这个数字的。所以就会造成IP地址的浪费,A类网络就更不用说了,浪费的更严重。

为了解决这个问题,就引入了子码掩网来进行子网划分。

格 式 \color{red}{格式}

子网掩码格式和IP地址一样,也是一个32位的二进制数,左边是网络位,用二进制数字“1”表示,1的数目就是网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目表示主机位的长度。
或者说子网掩码也可以用二进制所有高位1相加的数值来表示。

作 用 \color{red}{作用}

1.划分子网:举个例子,一个B类IP地址,191.100.0.0,按照A~E类分类来说,网络号二进制为16位的网络位+16位的主机号。这个时候如果我们使用子网掩码 255.255.128.0(就是17)来划分的时候,意味着划分子网之后,高17位都是网络位,也就是划分成:网络号16位+子网号1位+主机号15位。

这个时候IP地址的组成就是网络号+子网号+主机号,网络号和子网号统一为网络标识。

2.网络通信的时候,IP地址+子网掩码,就可以计算得到网络号(划分子网后的网络号)以及主机号(划分子网后的主机号)。一般可以用来判断目的IP和本机IP是否是同一个网段。

这里的网段顾名思义,就是指网络段相同的地址。

计 算 方 式 \color{red}{计算方式}

这里的计算方式是将IP地址和子网掩码进行按位与操作,得到的结果就是网络号,如果把子网二进制按位取反,再与IP地址进行按位与计算,就可以得到主机号。

<2>认识MAC地址

什么是MAC地址呢?MAC地址全称是Media Access Control。网络通信本质是网络硬件设备来传输数据,硬件会传输数据到下一个硬件,而下一个硬件的地址就是MAC,那MAC作用是什么呢?就是会用来标识网络设备的硬件物理地址。

这里在引申出下面的内容之前,先引申一个知识点–网卡,什么是网卡?

网卡,即网络接口卡(network interface card),网卡作为TCP/IP层的接口,可以在物理层传输信号,在网络层传输数据包。无论位于哪个层,它都充当计算机或服务器和数据网络之间的中间媒介。当用户发送一个web页面请求时,网卡从用户设备中获取数据,并将其发送到网络服务器,然后接收所需的数据展示给用户。(这里一般都是指的路由器)

对网卡的相关概念有了之后,我们继续往下说

1.主机具有一个或多个网卡,路由器具有两个或两个以上网卡;其中每个网卡都有唯一的一个MAC地址。这里主机虽然有一个或者多个网卡,但是大多数情况只使用一个网卡。一个网卡有全球唯一的MAC地址(网卡出厂就设置好了)
2.网络通信,即网络数据传输,本质上是网络硬件设备,将数据发送到网卡上,或从网卡接收数据。
3.硬件层面,只能基于MAC地址识别网络设备的网络物理地址。

先看下图
在这里插入图片描述

可以看到,我们的网络数据传输,不是直接从源主机B到目的主机C,而是中间一站一站的被传输到主机C的。对于经过的网络设备

主机:配有IP地址,但是不进行路由控制的设备;
路由器:即配有IP地址,又能进行路由控制;
节点:主机和路由器的统称;

所以对于IP地址和MAC地址。

整个路途的起点叫做源IP,终点就做目的IP。是给人使用的网络逻辑地址。
每一站的起点叫做源MAC,每一站的终点叫做目的MAC。是给网络硬件设备使用的网络物理地址。

二丶网络设备及相关技术

在这里讲解之前,要对一个概念进行拓展。我们之前说过,端口是标识主机当中接收数据和发送数据的进程。但是这里要说明一下,端口分为是分为逻辑端口和物理端口的,我们之前说的是逻辑端口,这里两者一起来综合讲一下。

物理端口:硬件设备如集线器(物理层),交换机(网络层)路由器(传输层)等拥有的物理端口。
逻辑端口:进程绑定的端口,是属于操作系统虚拟的一个0~65535范围内的数字。

<1>物理层–集线器

集线器是工作在物理层的网络设备。发送到集线器的任何数据,集线器都会把这个数据复制并且转发到其他所有的端口。(这里指的是集线器后边的物理端口)

<2>数据链路层–交换机

所谓交换机,就是工作在数据链路层的一种设备,交换机内部会记录并且维护一张MAC地址转换表。每一台主机和交换机相连的时候,交换机就记录主机的MAC地址和连接的端口。

1.MAC地址转换表主要记录MAC地址与端口之间的映射(端口指的是交换机后边的
物理端口)
2.主机连接到主机,以及主机发送数据的时候,交换机可以学习并且记录该主机
的MAC地址与端口信息。
3.交换机接收到数据报之后,在MAC地址转换表中,通过目的MAC找到对应的端口
,则目的主机为该端口连接的主机。只需要将数据报转发到对应端口上即可。

讲到这里其实是有一个问题的,就是上述是能通过目的MAC找到对应端口的情况。如果找不到呢?换种说法,我们都知道主机是从上到下一层层封装数据报的,如果封装到数据链路层不知道目的MAC要怎么办呢?

这个时候是知道目的IP的(网络层IP协议数据包中包含目的IP和地址和源IP地址),交换机就会设置数据报目的MAC为广播地址址FF:FF:FF:FF:FF:FF,发送到其他所有的端口,目的主机返回响应之后,交换机再记录该主机MAC与端口的映射信息。这种方式类似广播喊话,xxx,你听到了就应我一声。

<3>传输层–主机(操作系统)

这里按照内容的排序来说,本来应该是说网络层的路由器的,但是路由器当中很多的概念需要提前引申一下,所以这里我就把网络层这一部分放到了后面。所以先说主机这部分。

主机的作用主要是按照网络分层从上到下对数据报进行封装。
在这里插入图片描述

这个我们之前都是已经说过的了,这里继续拓展。
我们在发送数据的时候,首先要判断是否是同一个网段(这里再次提一下,IP地址组成为网络号和主机号,而网段就是网络段相同的地址),根据是否是不同的网段,发送方式就不同。
一步一步来,首先我们如何判断发送端主机(源主机)和接收端主机(目的主机)是否是同一个网段呢?

如果源主机的网络号=目的主机的网络号就是同一个网段,不然的话就不是。(PS:前面子网部分提到过,子网掩码+源IP可以推导源主机的网络号,子网掩码+目的IP可以推导出来目的主机的网络号,这也是判断是否是同一个网段的一种手段)

那么接下来分情况讨论

1.如果是同一网段:整个一跳一跳的过程,就只有一跳。(源主机–>目的主机)

2.如果是不同网段:这个时候如果源主机知道目的IP,但是不知道目的MAC,那么隔空喊话就没用了,这个时候就会发送到网关设备(要知道网关设备的IP,并且要知道网关设备的MAC(不知道就是同段喊话))。

是不是有点乱?那么看下面这个图
在这里插入图片描述

这里如果我们不知道目的MAC就要先发到网关设备,相当于提前先跳一次,由源主机跳到网关设备(一般都是路由器),然后再从路由器跳到下个设备。

<4>主机&路由器–ARP寻址+ARP缓存表

首先,什么是ARP?

ARP是一个介于数据链路层和物理层之间的协议,ARP协议建立了IP地址和MAC地址的映射关系。

那么继续,什么是ARP寻址?

在数据链路层,寻找下一跳设备MAC地址的过程,就叫做ARP寻址。
(1)主机和路由器都保存了一张ARP缓存表,通过IP地址可以找到对应的MAC地址。
(2)根据下一跳设备的IP地址,在ARP缓存表中能找到对应的MAC地址,然后就可以设置目的MAC并且发送数据报。
(3)如果找不到,就要发送ARP广播数据报,目的MAC为广播地址,询问下一跳的设备的MAC地址。

<5>网络层–路由器+NAPT

路由器有两个作用

网关

网关:路由器作为网关,可以划分公网和局域网,甚至某些路由器还可以把局域网划分为多个子网(不同网段)。
注:这里的公网端口就是WAN口,为单独的网卡,具有公网IP地址和公网MAC地址。划分的多个子网,是由局域网端口即LAN口划分,每个端口都有单独的网卡,具有该网段IP地址和MAC地址。每一个路由器都可以找到自己局域网内的的任意主机,并且记录ip以及mac的映射关系(路由器ARP缓存表)

当源主机发送数据到目的主机,如果说源主机和目的主机在同一个局域网中,我们就可以通过ARP缓存表,去找寻对应的目的主机。

如果不在一个局域网中,这个时候可能路由器也不知道目的IP的主机是哪里,这时候发送的数据报

1)源IP       (2)源port

就会通过NAPT技术,把我们源主机的IP和port转换为路由器公网的ip/port。

规划路线

这个大致提一下,知道有这么个功能就好了
所谓路由,即在复杂的网络结构中,找出一条通往终点的路线;
网络通信(网络数据传输),路由器中的路由功能,就类似于规划路线,往哪个方向行进能更快到达目的地。

总结

所以整体来看路由器的功能可以总结出一下几点

1)划分子网(一个局域网,多个不同的网段)
(2)ARP缓存表:记录路由器所在的局域网所有主机的IP和MAC(能找到局域网内所有主机)
(3)具有WAN口:绑定公网IP,如果目的主机不在局域网内,就需要使用NAPT协议,把源主机
和port转换为路由器公网的IP和port
(4)路由功能:如果目的IP是公网主机,能通过路由功能,计算出哪个方向更近

<6>冲突域和广播域

冲突域

冲突域指的是同一时间,多台主机同时发送数据,如果产生冲突,这个范围就是冲突域,冲突域基于第一层物理层,所以也叫碰撞域

集线器:所有的端口构成一个冲突域
交换机:一个端口构成一个冲突域

广播域

广播域是指某个网络中的主机同时向网络中其他所有主机发送数据,这个数据能传播到的范围就叫做广播域。广播域基于第二层数据链路层。

集线器:所有端口处于一个广播域
交换机:所有端口处于一个广播域
路由器:lan口(不同网段),隔离广播域

三丶网络数据传输流程

组网的方式有很多很多种,笔者初学,所以这里就说几种最最基础的几种。

<1>局域网传输流程(同网段):集线器

如果说是用集线器网络互连,就是在一个集线器上面挂几台主机。

在发送端主机发送数据包的时候,需要从上往下的封装数据包。但是封装的时候,封装到数据链路层发现目的MAC可能还不知道
在这里插入图片描述

所以要先进入ARP寻址,主机和路由器都保存了一张ARP缓存表

(1)发送端在本机ARP缓存表中,根据目的IP查找对应的MAC地址
(2)如果找到,则可以在数据链路层以太网帧头中,设置目的MAC并发送数据包
(3)如果没有找到,需要先发送ARP广播数据报(把目的MAC设置为FF:FF:FF:FF:FF:FF,然后喊话所有的主机,你们谁的IP地址是xxx,把你的MAC地址给我),让接收端,即目的主机告诉自己,目的MAC是多少
(4)发送端更新本机ARP缓存表:保存目的IP与目的MAC的映射
(5)有了目的MAC,就可以按照第(2)个步骤发送数据了。

<2>局域网传输流程(同网段):交换机

这里是用交换机进行网络互连,也就是一个交换机上面挂几台主机。
还是老规矩,主机从上到下进行对数据进行封装。
在这里插入图片描述
到数据链路层的时候,如果说能从本机的ARP缓存表中,通过目的IP可以找到对应的MAC地址,那就直接设置到目的MAC就好。如果找不到,那就把目的MAC设置为FF:FF:FF:FF:FF:FF,然后进行喊话,拿到对应的MAC。然后发送到交换机当中。
上面我们也说了,交换机维护了一张MAC地址和端口的映射表,接着交换机就会根据映射关系把这个数据发送到对应的端口。
这个时候有个问题嗷,就是此刻交换机检测到目的MAC为FF:FF:FF:FF:FF:FF,那就把这个把数据包发送到所有的接收端主机,让接收端主机来自己对照,谁的IP地址和这个数据包中记录的一样的?把你的端口号和MAC地址返回给我。通过这种方式拿到端口之后,记录对应的MAC地址和端口之间的映射关系。也就是说本机会喊话,交换机也会喊话!

<3>局域网传输流程(不同网段):交换机+路由器

这里是用交换机+路由器来进行对应的网络连接。

这里的封装流程和前面一样
在这里插入图片描述
但是封装到了这里之后,要进行一个判断,就是目的主机和源主机是否是一个网段内的。

(1)通过目的IP和本机IP分别于本机子网掩码进行按位与运算,得到对应主机的网络号,也就是网段。
(2)如果一样,就是同一网段,那接下里的流程和上面的两种方式就是一样的。
(3)如果不一样,那本机是无法处理不同网段的要求的。这个时候就要让我们的网关–路由器来处理。

那接下来操作如下:

(1)找到对应的网关IP,也就是与本机相连的路由器的IP
(2)然后根据ARP寻址,根据网关IP找到对应的端口,把目的端口改成网关端口

把数据对应的部分改了之后,就把这个数据发送到交换机(类似下面这个格式)
在这里插入图片描述
然后交换机里面不是有记录了MAC和端口映射关系的MAC地址转换表,根据目的MAC,找对应的网关设备,并且发送数据。这个时候数据就来到了我们的路由器当中。
路由器会把这个数据从下到上进行解析。拿到目的主机的IP,再根据ARP寻址找到对应的MAC地址。把内容进行更改
在这里插入图片描述
接着把这个数据报封装,并且发送到目的主机当中。目的主机接收到了之后,解析数据报

数据链路层:目的MAC和我一样,接收
网络层:目的IP和我一样,要处理
传输层:根据端口找对应的进程
应用层:把数据交给应用层,由应用程序根据应用层协议解析

至于返回响应,就是把目的IP和源IP对换,目的端口和源端口对换之后,再把这个流程再走一遍。

<4>广域网数据传输流程

在广域网当中传输数据相对于上面来说是有点特殊的。为什么特殊呢?因为这个时候你的目的IP不在路由器的范围之内,这意味着什么?意味你的目的IP在哪里路由器也不知道。那这个时候就是我们的路由器WAN功能起作用的时候了,
我们的路由器绑定了一个公网IP,可以通过NAPT协议,把源主机IP和port(端口)转换为公网的IP和port(端口)。然后通过路由功能去计算出那条路径离目的主机最近,再接着去发送我们的数据包。总体流程来口述一遍吧!
老规矩,先从源主机封装数据开始
在这里插入图片描述
在这里封装到数据链路层之后,就要用子网掩码和目的IP以及源IP进行按位与计算,拿到对应的网络号,如果网络号相同,那就是在同一网段内,这个没啥说的,流程就是我们上面的同一网段内的局域网传输流程。这里说一下不同网段并且不同局域网的。
如果网络号不同,那么就准备要把这个数据交给网关,也就是路由器去处理。
这个分两种情况:
<1>如果说中间相连的设备是交换机,那就是下面这个场景

1.找到与本机相连的网关IP,也就是路由器的IP
2.根据ARP缓存表的映射关系,通过路由器的IP找到对应的MAC地址

然后把数据报文的目的MAC改为路由器的MAC之后,把这个数据包发送给交换机。交换机里面有MAC地址转化表,它会根据数据的目的MAC地址,把这个数据发送给与对应端口相连的物理设备,即就是把这个数据包发给路由器。

<2>如果说中间相连的设备是集线器

那集线器就会把这个数据报发给相连的所有端口,其中当然也包括我们的目的网关–路由器。

路由器收到这个数据报之后,就会把这个数据包从下到上解析。

1.解析之后,会根据NAPT协议把源IP和源端口转换为路由器公网IP和路由器公网端口。
2.转换完成之后,根据路由技术,通过路由表计算路线,获取正确方向的下一个设备IP。接着会把源MAC改为当前路由器的MAC

这里提一下,这里的转化部分是三个,但是转换的步骤是基于路由器的对应两个功能实现,之后的数据包里面携带的信息应该是这样子的

修改内容为:
源IP:路由器的公网IP 
源端口:路由器的公网端口
源MAC:路由器的MAC 
目的MAC:下一个设备的MAC

找到正确方向的下一个设备的IP之后,就会把这个数据包发给对应的设备,也就是下一个路由器,下一个路由器会先解析,再把源MAC改为自己的MAC,目的MAC改为下一跳设备的MAC。转换之后再基于路由功能转发到之后设备。然后继续重复,直到找到对应的路由器为止。(这里的源IP和源端口不变)
此时的数据报如下(这里的源MAC和目的MAC就没必要写了):
在这里插入图片描述

最终达到目的主机后,目的主机会从下到上进行分用(解析)
在这里插入图片描述

tomcat处理请求之后,会把这个响应封装成一个数据包,其中源IP和目的port,目的IP和目的port与请求的数据包恰好相反。封装好之后,把这个请求按照这一部分的流程再走一遍,回到最初的主机就是一个完整的流程。

四丶总结

这一部分知识点真的挺多的,需要自己去整理总结,好好加油!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络编程--TCP/IP协议(一) 的相关文章

  • CK-GW06-E00与CODESYS TCP通信

    CK GW06 E00与CODESYS TCP通信 CK GW06 E00是一款支持标准工业通讯协议Modbus TCP的网关控制器 方便用户集成 到 PLC 等控制系统中 本控制器提供了网络 POE 供电和直流电源供电两种方式 确保用 户
  • 【网络自定向下学习】——TCP报文段的详细解析

    个人主页 努力学习的少年 版权 本文由 努力学习的少年 原创 在CSDN首发 需要转载请联系博主 如果文章对你有帮助 欢迎关注 点赞 收藏 一键三连 和订阅专栏哦 目录 一 Tcp报文段的结构 二 首部长度 三 窗口大小 四 序列号和确认序
  • 基于ftp协议的文件变化主动监听

    基于ftp协议的文件变化主动监听 前言 实现思路 代码实现思路 具体代码实现 依赖引入 FTPService接口 FTPServiceImpl类 FileChangeEvent接口 FileChangeData实体类 FileChangeT
  • TCP/IP详解 卷1:协议 学习笔记 第十六章 BOOTP:引导程序协议

    一个无盘系统在不知道自身IP地址情况下 进行系统引导时能通过RARP协议获取它的IP地址 使用RARP会有两个问题 1 IP地址是返回的唯一结果 2 RARP使用链路层广播 RARP请求不会被路由器转发 每个实际网络必须设置一个RARP服务
  • Node.js开发入门—HTTP文件服务器

    HelloWorld示例只有演示意义 这次我们来搞一个实际的例子 文件服务器 我们使用Node js创建一个HTTP协议的文件服务器 你可以使用浏览器或其它下载工具到文件服务器上下载文件 用Node js实现的HTTP文件服务器 比我在Qt
  • HTTPS 的加密流程

    目录 一 HTTPS是什么 二 为什么要加密 三 加密 是什么 四 HTTPS 的工作过程 1 对称加密 2 非对称加密 3 中间人攻击 4 证书 总结 一 HTTPS是什么 HTTPS Hyper Text Transfer Protoc
  • TCP/IP协议栈及网络基础,协议栈原理及实现

    1 TCP IP协议栈及网络基础 推荐这个在B站几千观看的视频讲解 底层原理到徒手实现 TCP IP网络协议栈 tcp协议栈 如何实现 C C Linux服务器开发高级架构学习视频点击 C C Linux服务器开发高级架构师 Linux后台
  • STM32H750+LAN8720无操作系统移植lwip

    前言 本文提供移植好的工程 仅使用串口和以太网外设 见本文绑定资源 环境 STM32CubeMX V6 8 1 STM32H7 HAL Pack V1 11 1 硬件连接 STM32H750 GPIO定义如下 LAN8720 GPIO定义如
  • 探讨Socks5代理IP在跨境电商与网络游戏中的网络安全应用

    随着全球互联网的迅猛发展 跨境电商和在线游戏成为了跨国公司和游戏开发商的新战场 然而 与此同时 网络安全问题也日益突出 本文将探讨如何利用Socks5代理IP来增强跨境电商和网络游戏的网络安全 保障数据传输的隐私和安全性 第一部分 Sock
  • ARP与ARP代理的理解

    1 ARP 首先讲到ARP ARP是地址解析协议 它的作用是在以太网环境下 通过第3层的网络层IP地址来找寻2层数据链路层的MAC地址 得到一张ARP缓存表 转发数据的时候根据ARP缓存表来进行传输 下图详细说明数据传输时ARP是如何一步步
  • 查看linux中的TCP连接数

    一 查看哪些IP连接本机 netstat an 二 查看TCP连接数 1 统计80端口连接数 netstat nat grep i 80 wc l 2 统计httpd协议连接数 ps ef grep httpd wc l 3 统计已连接上的
  • linux send recv函数详解

    2009 05 10 21 55 int send SOCKET s const char FAR buf int len int flags 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据 客户程序一般用sen
  • 在外远程登录局域网下的象过河ERP管理系统,无需公网IP

    文章目录 概述 1 查看象过河服务端端口 2 内网穿透 3 异地公网连接 4 固定公网地址 4 1 保留一个固定TCP地址 4 2 配置固定TCP地址 5 使用固定地址连接 转发自CSDN远程穿透的文章 公网远程访问公司内网象过河ERP系统
  • Linux TCP链接查看和调整

    查看Linux的TCP连接数的方法如下 统计80端口连接数 netstat nat grep i 80 wc l 统计httpd协议连接数 ps ef grep httpd wc l 统计已连接上的 状态为 established 的TCP
  • Windows实例如何通过本地安全策略限制远程登录的IP地址

    Windows实例如何通过本地安全策略限制远程登录的IP地址 阿里云 禁止所有的IP地址连接服务器的RDP端口 远程连接登录服务器 单击 开始 选择 运行 输入gpedit msc 单击 确定 打开本地组策略编辑器 在左侧依次找到 计算机配
  • socket编程实现简单的TCP网络程序(下)

    socket编程实现简单的TCP网络程序 下 文章目录 1 封装TCP socket 2 TCP通用服务器 3 英译汉服务器 4 TCP通用客户端 5 英译汉客户端 1 封装TCP socket include
  • TCP协议、VLSM、CIDR思维导图

    ICMP 网络层协议 用来在网络设备间传递各种差错 控制 查询等信息 对于收集各种网络信息 诊断和排除各种网络故障
  • time_wait的快速回收和重用

    问题现象 PC与工控机之间通信 工控机发送SYN PC一直回复FIN或者RST 问题解释 1 time wait产生的原因及作用 下面我们先来简单回顾一下TCP连接关闭动作 在Linux环境下我们可以如下的方式来统计TCP连接的情况 net
  • 鉴赏 tcp vegas

    优秀的 vegas 之后 再鉴赏一下迄今唯一像那么回事的拥塞控制算法 vegas 从下图可看出所有的 对 所有的 aimd 都毫无伸缩性 z 吞吐 x rtt y 丢包率 由 buffer size 直接决定 一下就可看出 rtt 和 bu
  • 分辨公网IP和内网IP的方法

    公网IP一般就是对外的访问地址 内网IP就是对内的访问地址 两者的使用范围是不一样的 那如果区分客户网络的IP地址是公网IP地址还是内网IP地址呢 公网IP的地址范围是很广泛的 我们可以先了解下内网IP 因为内网IP的地址段相对是局限的 一

随机推荐