一条信息的网络请求过程

一条信息的网络请求过程,第1张

最近有用户手机用流量无法登陆app,最终发现原因是ip被防火墙拉黑了,本来想去了解ip的分配机制,随着一个个知识点的了解,发现还是系统记录下来更能加深理解,特此记录。

以太网络上面的传输使用网络卡卡号为基准的 MAC 讯框,配合 CSMA/CD 的标准来传送讯框,这就是硬件部分。在软件部分,我们知道 Internet 其实就是 TCP/IP 这个通讯协议的通称,Internet 是由 InterNIC所统一管理的, 但其实他仅是负责分配 Internet 上面的 IP 以及提供相关的 TCP/IP 技术文件而已。

当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图所示。

不论是服务器端还是客户端,都必须要透过一次 SYN 与 ACK 来建立联机,所以总共会进行三次的交谈

封包发起时,在 TCP 的表头当中,必须要带有 SYN 的主动联机(SYN=1),并且记下发送出联机封包给服务器端的序号 (Sequence number = 10001) 。

当服务器接到这个封包,并且确定要接收这个封包后,就会开始制作一个同时带有 SYN=1, ACK=1 的封包, 其中那个 acknowledge 的号码是要给 client 端确认用的,所以该数字会比(A 步骤)里面的 Sequence 号码多一号 (ack = 10001+1 = 10002), 那我们服务器也必须要确认客户端确实可以接收我们的封包才行,所以也会发送出一个 Sequence (seq=20001) 给客户端,并且开始等待客户端给我们服务器端的回应喔

目前IP有两个版本。 IPv4 (Internet Protocol version 4, 因特网协定第四版)和IPV6,目前运用最广泛的还是IPV4,所以下面讲的是IPV4。

我们知道 IP (Internet Protocol) 其实是一种网络封包,而这个封包的表头最重要的就是那个 32 位的来源与目标地址! 为了方便记忆,所以我们也称这个 32 bits 的数值为 IP 网络地址就是了。

IP 最小可以由 0000 一直到 255255255255 ,主要分为 Net_ID (网域号码)与 Host_ID (主机号码) 两部份。

在同一个网段内,Net_ID 是不变的,而 Host_ID 则是不可重复; Host_ID 在二进制的表示法当中,不可同时为 0 也不可同时为 1 , 因为全为 0 表示整个网段的地址 (Network IP) 而全为 1 则表示为广播的地址 (Broadcast IP)

在同一网域内,这些主机都可以透过 CSMA/CD 的功能直接在区网内用 广播 进行网络的联机。透过 路由器 (router) 来进行沟通才能将两个网域连结在一 起。

在 IPv4 里面就只有两种 IP 的类别,分别是:

私有 IP 也分别在 A, B, C 三个 Class 当中各保留一段作为私有 IP 网段,那就是:

用来达成子网的切分

如果我们以 19216800 ~ 1921680255 这个网段来说,要是给予 Net_ID 是 26 位时,总共分为几段呢? 因为 26-24=2 ,所以总共用掉两个位,因此有 2 的 2 次方,得到 4 个网段 。再将 256 个 IP 平均分配到 4 个网段去, 那我们就可以知道这四个网段分别是:

局域网络使用的设备-以太网络。

整个以太网络的重心就是 以太网络卡 。所以说,以太网络的传输主要就是 网络卡对网络卡之间的数据传递而已 。 每张以太网络卡出厂时,就会赋予一个独一无二的卡号,那就是所谓的 MAC (Media Access Control) 。

CSMA/CD 传送出去的 MAC帧 数据,其实就是 MAC !我们又简称网卡卡号为 MAC。

上图中的目的地址与来源地址指的就是网卡卡号 (hardware address, 硬件地址)

地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代

在发送数据包时,首先要通过目的IP(主机或路由器)获取局域网内要发送对象的MAC地址,再将MAC地址封装到数据包内发送。 而ARP的作用就在通过IP获取MAC地址,通过广播来发送ARP请求报文

假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:

(1) 主机A首先查看自己的 ARP表 ,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。

(2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后 以广播方式发送一个ARP请求报文 。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送, 该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理

(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址 存入自己的ARP表中 。之后以 单播方式发送ARP响应报文给主机A ,其中包含了自己的MAC地址。

(4) 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。

NAT名字很准确,网络地址转换,就是 替换IP报文头部的地址信息 。NAT通常部署在一个组织的网络出口位置,通过将 内部网络IP地址替换为出口的IP地址 提供公网可达性和上层协议的连接能力。

一个对外的访问请求在到达目标以后,表现为由 本组织出口设备发起 ,因此被请求的服务端可将响应由Internet发回出口网关。出口网关再将 目的地址替换为私网的源主机地址 ,发回内部。这样一次由私网主机向公网服务端的请求和响应就在通信两端均无感知的情况下完成了。依据这种模型,数量庞大的内网主机就不再需要公有IP地址了。

路由器根据收到数据包中的 网络层地址 以及路由器内部维护的 路由表 决定输出端口以及下一跳地址,并且 重写链路层数据包头 实现 转发数据包 。路由器通过 动态维护路由表 来反映当前的网络拓扑,并通过网络上其他路由器 交换路由和链路信息 来维护路由表。

路由器的主要工作就是为经过路由器的每个数据帧寻找一条最佳传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即 路由算法 是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据―― 路由表 (RoutingTable),供路由选择时使用。

分级路由 广泛应用于互联网路由中,并且使用了多种路由协议。使用 DV(距离向量)算法 来查找节点间的最佳路由,在分级路由中,路由器被分成很多组,称为区域。每个路由器都 只有自己所在区域路由器的信息 ,而没有其他区域路由器的信息。所以在其路由表中,路由器只需要存储其他每个区域的一条记录。再使用 路由表转发最长匹配原则 进行数据分发。

关于路由查找的几个重点内容:

多数情况下,某主机决定向另一个主机发送数据,通过某些方法(如ARP)获得路由器的地址后,源主机发送指向该路由器的 物理(MAC)地址的数据包 ,其协议地址是指向目的主机的。

路由器查看了数据包的目的协议地址后,确定是否知道如何转发该包,如果路由器不知道如何转发,通常就将之丢弃。如果路由器知道如何转发,就 把目的物理地址变成下一跳的物理地址 并向之发送。下一跳可能就是 最终的目的主机 ,如果不是,通常为 另一个路由器 ,它将执行同样的步骤。当分组在网络中流动时,它的 物理地址在改变 ,但其 协议地址始终不变

路由器是 第三层网络设备 ,这样说大家可能都不理解,就先说一下集线器和交换机吧。 集线器工作在第一层(即物理层) ,它没有智能处理能力,对它来说,数据只是电流而已,当一个端口的电流传到集线器中时,它只是简单地将 电流 传送到其他端口,至于其他端口连接的计算机接收不接收这些数据,它就不管了。 交换机工作在第二层(即数据链路层) ,它要比集线器智能一些,对它来说,网络上的数据就是 MAC地址的集合 ,它能分辨出帧中的源MAC地址和目的MAC地址,因此可以在任意两个端口间建立联系,但是交换机并不懂得IP地址,它只知道MAC地址。路由器工作在 第三层(即网络层) ,它比交换机还要“聪明”一些,它能理解数据中的 IP地址 ,如果它接收到一个数据包,就检查其中的IP地址,如果目标地址是本地网络的就不理会,如果是其他网络的,就将数据包转发出本地网络。

上面介绍路由的转发,是说只替换MAC地址来进行转发,但IP却不会改变,这种转发在Internet内传播是没有问题的,因为IP都是公共IP。

但如果路由器是连接这局域网和外部网络,这是IP就不能通用了,必须经过NAT转换成外部网络IP。我们日常家用的路由器都是NAT模式, 先进行NAT(如地址转换、端口转换等),再根据路由表进行转发

如果看完联网上面介绍的知识点,对于这个标题其实就已经有了大概的答案了。重点还是在路由器上,由它执行数据发送。

ARP详解

NAT(地址转换技术)详解

路由表转发最长匹配原则

路由表

路由表的原理和作用

路由

一次完整的>

打开运行窗口,进行查看。

1、按win键加R键,然后打开运行窗口,输入CMD,然后点击确定按钮。

2、找到后面的位置。

3、在输入框中输入“tracert >

4、然后按一下回车键,就能看到经过的路由节点了。

1、 向ISP了解相关的局端参数:

如果是静态IP方式,请了解如下参数:静态IP地址,子网掩码,网关,DNS服务器,备用DNS服务器。

如果是动态IP方式:能够从局端获取IP地址,如果需要手动设置DNS服务器地址,请向局端咨询。

如果是PPPOE方式,请了解如下参数:用户名,密码。

2、 按照说明书提示,连接好硬件。

3、 如何进入TL-R410/460路由器设置界面?

路由器的出厂默认设置信息:

IP地址:19216811,子网掩码:2552552550。用户名/密码:admin/admin。

将与路由器相连的网卡IP设置在1921681×网段(×表示2-254),在浏览器输入>

RPC 框架本身的 服务发现和路由寻址(接入注册中心来完成), 目标地址问题,对于客户端透明:

解决问题:客户端 只需知道 服务端 的 接口和方法 , 不需 知道服务具体由 哪些 IP 提供

解决方法: 大规模请求时,微服务系统对请求服务 集群化 ,负载均衡达到降压。

概要:一、 注册中心 接入方法,实现,二、SOFRPC 中的几种 路由 实现,扩展方式   三、 负载均衡 的几种比较。

provider 将 地址 信息注册到 注册中心 ,服务 调用 者可以 从注册中心订阅 到provider的 地址列表 (包括地址变化事件)。

注册中心 场景依赖于 各类注册中心的 实现 。

抽象类 Registry:注册中心配置、启动、注册、反注册、订阅 等方法。

客户端接入 过程,可通过配置来 激活 Zookeeper、Consul、local 等注册中心 注册进启动类中,请求时通过 注册中心 进行 相应路由。

SOFARPC 内置 多种 注册中心实现,部分注册中心实现CodeReview。

LocalRegistry,调用 register(ProviderConfig config) 注册,文件读写。

原理 : 本地 注册 文件 保存 服务发布和订阅信息,用于 本地研发测试 。

ZookeeperRegistry(SOFARPC 默认 注册中心),Zookeeper 提供服务 注册与发现 ,让集成者简洁调用。

发布 SOFARPC 服务时 ,要在 Zookeeper 中注册服务提供者相关信息:接口属于哪个 系统、服务 IP、端口号、请求 URL 、权重 等。SOFARPC 存储 服务信息,把服务注册信息的 更新及通知 到 服务消费者 。

作为服务调用者,SOFARPC 调用端在 调用时 ,路由链路若有 注册中心 ,从中获取 服务注册信息 ,调用时根据 负载均衡策略 来发送请求。

ConsulRegistry 与 Zookeeper 看起来一致。支持 多数据中心,>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13199810.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-19
下一篇 2023-06-19

发表评论

登录后才能评论

评论列表(0条)

保存