网络基础3【网络层、数据链路层】

news2024/11/13 17:52:39

目录

一.网络层

1.IP协议

(1)基本概念

(2)协议头格式

2.网段划分

3.特殊的IP地址

4.IP地址的数量限制

5.私有IP地址和公网IP地址

6.路由

二.数据链路层

1.以太网

2.以太网帧格式

3.MAC地址

4.对比MAC地址和IP地址

5.MTU

(1)MTU对IP协议的影响

(2)MTU对UDP协议的影响

(3)MTU对TCP协议的影响

6.ARP协议

(1)工作流程

(2)ARP数据报格式

三.其它重要协议和技术

1.DNS

        域名简介

2.ICMP协议

3.NAT技术

(1)转换过程:​编辑

(2)NAPT

(3)NAT技术缺陷

 (4)NAT和代理服务器


前言:这一篇主要是关于网络层和数据链路层的网络基础知识,同时也包括了DNS协议,NAT技术的介绍。

一.网络层

1.IP协议

(1)基本概念

        主机:配有IP地址,但是不进行路由控制的设备。

        路由器: 即配有IP地址,又能进行路由控制。

        节点: 主机和路由器的统称。

(2)协议头格式

        4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.

        4位首部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是60字节(与TCP的首部长度是相同的).

        8位服务类型(Type Of Service): 3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0). 4位TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个. 对于ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重要(一般我们不考虑).

        16位总长度(total length): IP数据报整体占多少个字节(有效载荷 = 总长度 - 首部长度).

要想知道第二行的3个的作用就要先知道数据链路层的MTU:

        MTU相当于发快递时对包裹尺寸的限制. 这个限制是对不同的数据链路对应的物理层产生的限制.

  

        以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;
        最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;

        如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);
        不同的数据链路层标准的MTU是不同的.

 

        16位标识(id): 唯一的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每一个片里面的这个id都是相同的.

        3位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第二位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文. 第三位表示"更多分片", 如果分片了的话,最后一个分片置为0, 其他是1. 类似于一个结束标记.

        13位分片偏移(framegament offset): 是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值 * 8 得到的. 因此, 除了最后一个报文之外, 其他报文的长度必须是8的整数倍(否则报文就不连续了).

        8位生存时间(Time To Live, TTL): 数据报到达目的地的最大报文跳数. 一般是64. 每次经过一个路由, TTL-= 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环(由于网络的BUG或者对端主机不可达等不可控因素的存在,导致IP报文在网络中长时间游离,而不消失).

        8位协议: 表示上层协议的类型(TCP/UDP).【如何分用,向上交付根据是UDP还是TCP来决定】

        16位首部校验和: 使用CRC进行校验, 来鉴别头部是否损坏..

        32位源IP地址: 表示发送端.

        32位目的IP地址: 表示接收端..

        选项字段(不定长, 最多40字节)

2.网段划分

        IP地址分为两个部分, 网络号和主机号:

网络号: 保证相互连接的两个网段具有不同的标识

主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号

IP是如何找到对方的主机的呢?

1.IP的构成:IP = 目的网络 + 目的主机

2.网段划分(曾经已经有角色将我们全球的IP进行过地址划分)

        IP在路由的时候,先根据目的网络进行路由,找到目的2网络之后,再根据目的主机的主机号,进行数据转发。

        不同的子网其实就是把网络号相同的主机放到一起
        如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但是主机号必须不能和子网中的其他主机重复

        通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的IP地址都不相同

        有一种技术叫做DHCP, 能够自动的给子网内新增主机节点分配IP地址, 避免了手动管理IP的不便
        一般的路由器都带有DHCP功能. 因此路由器也可以看做一个DHCP服务器

        过去曾经提出一种划分网络号和主机号的方案, 把所有IP 地址分为五类, 如下图所示:

 A类 0.0.0.0到127.255.255.255
B类 128.0.0.0到191.255.255.255
C类 192.0.0.0到223.255.255.255
D类 224.0.0.0到239.255.255.255
E类 240.0.0.0到247.255.255.255     

        随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就分配完了, 而A类却浪费了大量地址.

        例如, 申请了一个B类地址, 理论上一个子网内能允许6万5千多个主机. A类地址的子网内的主机数更多.
        然而实际网络架设中, 不会存在一个子网内有这么多的情况. 因此大量的IP地址都被浪费掉了.

        针对这种情况提出了新的划分方案, 称为CIDR(Classless Interdomain Routing)(子网掩码的方案):

引入一个额外的子网掩码(subnet mask)来区分网络号和主机号
子网掩码也是一个32位的正整数. 通常用一串 "0" 来结尾
将IP地址和子网掩码进行 "按位与" 操作, 得到的结果就是网络号
网络号和主机号的划分与这个IP地址是A类、B类还是C类无关

发送数据的本质:就是要先找到目标机器(目标网络 + 目标主机)。

子网划分,一次可以排除一大批的子网,便于查找,使得查找目标主机的效率提高。


        可见,IP地址与子网掩码做与运算可以得到网络号, 主机号从全0到全1就是子网的地址范围.

        IP地址和子网掩码还有一种更简洁的表示方法,例如140.252.20.68/24,表示IP地址为140.252.20.68, 子网掩码的高24位是1,也就是255.255.255.0.

3.特殊的IP地址

        将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网
        将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包
        127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1. 

4.IP地址的数量限制

        我们知道, IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方 个IP地址, 大概是43亿左右. 而TCP/IP协议规定, 每个主机都需要有一个IP地址.这意味着, 一共只有43亿台主机能接入网络。
        实际上, 由于一些特殊的IP地址的存在, 数量远不足43亿,另外IP地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个IP地址.
        CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然不是很够用. 这时候有三种方式来解决:

①动态分配IP地址: 只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的
②NAT技术
③IPv6: IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表示一个IP地址; 但是目前IPv6还没有普及

5.私有IP地址和公网IP地址

        如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址

10.*,前8位是网络号,共16,777,216个地址
172.16.到172.31.,前12位是网络号,共1,048,576个地址
192.168.*,前16位是网络号,共65,536个地址
包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP)

        一个路由器可以配置两个IP地址, 一个是WAN口IP, 一个是LAN口IP(子网IP).
        路由器LAN口连接的主机, 都从属于当前这个路由器的子网中.
        不同的路由器, 子网IP其实都是一样的(通常都是192.168.1.1). 子网内的主机IP地址不能重复. 但是子网之间的IP地址就可以重复了.
        每一个家用路由器, 其实又作为运营商路由器的子网中的一个节点. 这样的运营商路由器可能会有很多级,最外层的运营商路由器, WAN口IP就是一个公网IP了.
        子网内的主机需要和外网进行通信时, 路由器将IP首部中的IP地址进行替换(替换成WAN口IP), 这样逐级替换, 最终数据包中的IP地址成为一个公网IP. 这种技术称为NAT(Network Address Translation,网络地址转换).
        如果希望我们自己实现的服务器程序, 能够在公网上被访问到, 就需要把程序部署在一台具有外网IP的服务器上. 这样的服务器可以购买到

6.路由

        路由的过程, 就是这样一跳一跳的过程.
        所谓 "一跳" 就是数据链路层中的一个区间. 具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间。

        当IP数据包, 到达路由器时, 路由器会先查看目的IP;
        路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器;
        依次反复, 一直到达目标IP地址

        路由表可以使用route命令查看.

        如果目的IP命中了路由表, 就直接转发即可.
        路由表中的最后一行,主要由下一跳地址和发送接口两部分组成,当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址.

假设某主机上的网络接口配置和路由表如下:

        这台主机有两个网络接口,一个网络接口连到192.168.10.0/24网络,另一个网络接口连到
192.168.56.0/24网络.
        路由表的Destination是目的网络地址,Genmask是子网掩码,Gateway是下一跳地址,Iface是发送接口,Flags中的U标志表示此条目有效(可以禁用某些 条目),G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发

        转发过程例1: 如果要发送的数据包的目的地址是192.168.56.3

        跟第一行的子网掩码做与运算得 到192.168.56.0,与第一行的目的网络地址不符.
        再跟第二行的子网掩码做与运算得 到192.168.56.0,正是第二行的目的网络地址,因此从eth1接口发送出去.
        由于192.168.56.0/24正 是与eth1 接口直接相连的网络,因此可以直接发到目的主机,不需要经路由器转发.

        转发过程例2: 如果要发送的数据包的目的地址是202.10.1.2

        依次和路由表前几项进行对比, 发现都不匹配.
        按缺省路由条目, 从eth0接口发出去, 发往192.168.10.1路由器.
        由192.168.10.1路由器根据它的路由表决定下一跳地址.

        IP:提供一种能力,将数据包从A主机跨网络送到B主机的能力。

数据链路层用来从该主机通过路由器跳到另一台主机中;

网络层用来找到要跳的主机;

传输层判断过程中是否有问题,若有就重传。

二.数据链路层

1.以太网

        "以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等.
        例如以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等.
        以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等.

2.以太网帧格式

        源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的
        帧协议类型字段有三种值,分别对应IP、ARP、RARP
        帧末尾是CRC校验码

        在一个局域网中,有很多个主机,每个主机有对应的MAC地址。

        如果其中一个主机想要发给另一个主机,这里的格式就为 MAC1 MAC2 0800 数据 CRC。

注意这里显示的是MAC地址,不是IP地址。

        那么在发送该消息时,需要发送到局域网内,此时所有的主机都要在数据链路层获取这个消息,但是只有对应MAC地址的主机才会在数据链路层对其进行解包和分用,而不同的如果没有选择“混杂模式”,就会丢弃该消息。

        因为所有主机发送的消息都要发送到局域网中,所以局域网中在同一时刻只能有一个消息,相当于进程间通信的临界区,发送的消息相当于临界资源,因此如果有其它主机也发送消息,就会发生碰撞。因此同一局域网的主机一定是越少越好,主机越少发生碰撞的概率越低。

         之前我们学过交换机,交换机的其中一个作用就是可以减少碰撞的概率,它是通过把一个局域网切割成多个碰撞域,这样如果某个碰撞域内发生碰撞就不会影响到其它碰撞域,而域内的消息传送,其它碰撞域也不用接收,不过如果要是该域的消息要传给其它域,那就需要让这两域内的主机全部接收了。

        发送消息时,MAC帧的体积最好不要太大,因为体积越大,发送的时间就会越长,机会加大碰撞的概率。因此MAC帧为了让体积更小,就要向上提要求,这就有了MTU。

3.MAC地址

        MAC地址用来识别数据链路层中相连的节点
        长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
        在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)

4.对比MAC地址和IP地址

        IP地址描述的是路途总体的 起点 和 终点
        MAC地址描述的是路途上的每一个区间的起点和终点

5.MTU

        MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制。

        以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位
        最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU
        如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片
        不同的数据链路层标准的MTU是不同的

(1)MTU对IP协议的影响

        由于数据链路层MTU的限制, 对于较大的IP数据包要进行分包

        将较大的IP包分成多个小包, 并给每个小包打上标签
        每个小包IP协议头的 16位标识(id) 都是相同的
        每个小包的IP协议头的3位标志字段中, 第2位置为0, 表示允许分片, 第3位来表示结束标记(当前是否是最后一个小包, 是的话置为1, 否则置为0)
        到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层
        一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据

(2)MTU对UDP协议的影响

        一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报
        这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在网络层被分片, 整个数据被丢失的概率就大大增加了

(3)MTU对TCP协议的影响

        TCP的一个数据报也不能无限大, 还是受制于MTU. TCP的单个数据报的最大消息长度, 称为MSS(MaxSegment Size)
        TCP在建立连接的过程中, 通信双方会进行MSS协商
        最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU)
        双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值
        然后双方得知对方的MSS值之后, 选择较小的作为最终MSS
        MSS的值就是在TCP首部的40字节变长选项中(kind=2)

6.ARP协议

        ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议。

        ARP:地址解析协议(将IP转成MAC地址)

ARP协议建立了主机 IP地址 和 MAC地址 的映射关系:

        在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址
        数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃
        因此在通讯前必须获得目的主机的硬件地址

(1)工作流程

        源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”, 并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播)
        目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中
        每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址

(2)ARP数据报格式

        这里真正的APR数据报格式是从硬件类型开始的后面。而前面3个是以太网帧格式。

        注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。
        硬件类型指链路层网络类型,1为以太网;
        协议类型指要转换的地址类型,0x0800为IP地址;
        硬件地址长度对于以太网地址为6字节;
        协议地址长度对于和IP地址为4字节;
        op字段为1表示ARP请求,op字段为2表示ARP应答

        假设IPA主机想要向IPB主机发送数据,IPA主机的MAC地址为MACA,但是IPA主机不知道IPB主机的MAC地址是什么,因此发送ARP时,就要将目的以太网地址置为FFFFFFFFFFFF,发然后剩下的发送端以太网地址就是MACA,发送端IP地址就是IPA,目的IP地址就是IPB,硬件类型是1(以太网),协议类型是0x0800,硬件地址长度为6,协议地址长度为4。最后一个op则是1。然后再把以太网首部的3个填入就发送该数据报。

        op字段为1表示ARP请求,op字段为2表示ARP应答。因为任何一台主机,都可能向别人发起ARP请求,也可能在接收别人给他的ARP应答。所有需要一个op字段来区分请求和应答

        IPA主机发送了该数据后,各个主机发现目的以太网地址为FFFFFFFFFFFF,就会接收,然后看目的IP地址是否是自己的IP地址,如果不是就丢弃,如果是,那么就接收。

        如果IPB要回应IPA主机,那么目的以太网地址就是MACA了,发送端以太网地址就是MACB,op则是2。

        这时因为目的以太网地址是MACA,所有MACA地址的IPA主机就可以直接接收,这时先看的是op,发现op是2,是传来的应答,然后再看发送端以太网地址是MACB,发送端IP地址是IPB,就知道是MACB地址的主机IPB传来的应答了。

        注意:ARP不是每一次都要发起的,是需要被缓存起来的,谁请求的,就谁缓存。这里的缓存是暂时缓存,一般是15-20分钟,可以自己设置。如果过了这个时间没有新的请求或应答,就会失效,下次需要重新发起。在这个过程中,地址是可能出现变化的,因此每次有新的请求或应答的地址出现变化时,缓存的ARP也会跟着更新。

        这里还有可能存在一个中间人,在主机IPA发出ARP后,他就可以得到IPA的IP地址和MAC地址,然后当主机IPB应答ARP时,他又可以得到IPB的IP地址和MAC地址。然后在接下来主机IPA继续发送给IPB数据时,他就可以把自己的IP地址变为IPB,MAC地址变为MACB,去接收该数据,然后在把自己变成IPA,MAC地址变为MACA,再传给主机IPB,而IPB应答ARP时,也是同理。

三.其它重要协议和技术

1.DNS

        TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆.于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系.

        最初, 通过互连网信息中心(SRI-NIC)来管理这个hosts文件的:

        如果一个新计算机要接入网络, 或者某个计算机IP变更, 都需要到信息中心申请变更hosts文件.
        其他计算机也需要定期下载更新新版本的hosts文件才能正确上网

        这样就太麻烦了, 于是产生了DNS系统:

        一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系

        如果新计算机接入网络, 将这个信息注册到数据库中;
        用户输入域名的时候, 会自动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址.

        至今, 我们的计算机上仍然保留了hosts文件. 在域名解析的过程中仍然会优先查找hosts文件的内容:

cat /etc/hosts

        域名简介

        主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称.

        例如:www.baidu.com

域名使用 . 连接;

        com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等.
        baidu: 二级域名, 公司名.
        www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表示主机支持的协议

2.ICMP协议

        ICMP协议是一个 网络层协议
        一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输. 如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因.

        ICMP正是提供这种功能的协议; ICMP主要功能包括:

        确认IP包是否成功到达目标地址.
        通知在发送过程中IP包被丢弃的原因.
        ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;
        ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6;

3.NAT技术

        NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能.

        NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术方法
        很多学校, 家庭, 公司内部采用每个终端设置私有IP, 而在路由器或必要的服务器上设置全局IP
        全局IP要求唯一, 但是私有IP不需要; 在不同的局域网中出现相同的私有IP是完全不影响的

(1)转换过程:

        NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
        NAT路由器收到外部的数据时, 又会把目标IP从202.244.174.37替换回10.0.0.10;
        在NAT路由器内部, 有一张自动生成的, 用于地址转换的表;
        当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系

        

(2)NAPT

        如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的IP都是相同的. 那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?

        这时候NAPT来解决这个问题了. 使用IP+port来建立这个关联关系

        这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项.

(3)NAT技术缺陷

        由于NAT依赖这个转换表, 所以有诸多限制:

        无法从NAT外部向内部服务器建立连接
        装换表的生成和销毁都需要额外开销
        通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开

        因此这里又有了一个NAT穿透技术,NAT穿透就是通过一个软件,使得外部可以向内部服务器建立连接.

 (4)NAT和代理服务器

        路由器往往都具备NAT设备的功能, 通过NAT设备进行中转, 完成子网设备和其他子网设备的通信过程.

        代理服务器看起来和NAT设备有一点像. 客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户端.

        NAT和代理服务器的区别:

        从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外一些加速器, 也是使用代理服务器.
        从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往往工作在应用层.
        从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网.

        从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上.

        代理服务器是一种应用比较广的技术:

VPN(翻墙):广域网中的代理

负载均衡: 局域网中的代理

        代理服务器又分为正向代理和反向代理.

正向代理用于请求的转发(例如借助代理绕过反爬虫).
反向代理往往作为一个缓存.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/480530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【图】邻接矩阵

图的存储结构分为邻接矩阵和邻接表两种,带权的图叫做网。 邻接矩阵 邻接矩阵适合边多的图 无向图 两个顶点之间的连线是双向的,一个一维数组存顶点,一个二维数组存边 若有边则值为1,反之为0 邻接矩阵需要知道点数、边数、一个二维…

ARM微处理器的指令集概述

ARM处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较为简单。ARM微处理器的指令集是加载(Load)/存储(Store)型的,也即指令集仅能处理寄存器中的数据&#xff0…

【论文笔记】Attention和Visual Transformer

Attention和Visual Transformer Attention和Transformer为什么需要AttentionAttention机制Multi-head AttentionSelf Multi-head Attention,SMA TransformerVisual Transformer,ViT Attention和Transformer Attention机制在相当早的时间就已经被提出了&…

Word2vec原理+实战学习笔记(二)

来源:投稿 作者:阿克西 编辑:学姐 前篇:Word2vec原理实战学习笔记(一) 视频链接:https://ai.deepshare.net/detail/p_5ee62f90022ee_zFpnlHXA/6 5 对比模型(论文Model Architectur…

锐捷(十七)锐捷单臂路由的配置

一 实验拓扑 二 实验需求 用单臂路由实现不同vlan间的通信,即要求vlan10的主机和vlan20的主机之间通过三层实现互访 三 实验分析 路由器的物理接口可以被划分成多个逻辑接口,这些被划分后的逻辑接口被形象的称为子接口。值得注意的是这些逻辑子接口不能…

Redis高级——键值对设计

1、Redis键值设计 1.1、优雅的key结构 Redis的Key虽然可以自定义,但最好遵循下面的几个最佳实践约定: 遵循基本格式:[业务名称]:[数据名]:[id]长度不超过44字节不包含特殊字符 例如:我们的登录业务,保存用户信息&a…

AIGC迈向通用人工智能时代

一、AIGC“起飞”的背后 2023年1月30日,AIGC概念股突飞猛涨。一时间,AIGC再次站上风口浪尖。 AIGC(AI Generated Content)是指利用人工智能技术来生成内容,被认为是继UGC、PGC之后的新型内容生产方式,常见…

哈希的应用 -- 布隆过滤器与海量数据处理

文章目录 布隆过滤器概念布隆过滤器设计思路布隆过滤器的应用布隆过滤器模拟实现布隆过滤器的基本框架布隆过滤器的插入布隆过滤器的探测布隆过滤器的删除 布隆过滤器优点布隆过滤器缺陷布隆过滤器模拟实现代码及测试代码海量数据处理哈希切割哈希切分 布隆过滤器概念 布隆过滤…

【机器学习】HOG+SVM实现行人检测

文章目录 一、准备工作1. 下载数据集2. 解压数据集 二、HOG特征简介1. 梯度(Gradient)2. 格子(Cell)3. 块归一化(Block Normalization)4. HOG特征(HOG Feature)5. 使用skimage.featu…

“五一”假期消防安全知识要牢记之消防安全知识答题活动

“五一”期间,容易出现哪些安全隐患,生产生活中要注意哪些安全事项,一起来看! 森林防火: 1.禁止将火柴、汽油等易燃物带入山林,禁止乱扔火种。 2.景区管理单位要加强防火巡逻,禁止野外火源&am…

smbms项目搭建

目录 1.搭建一个maven web项目 2.配置Tomcat 3.测试项目是否能够跑起来 4.导入项目中会遇到的Jar包 5.项目结构搭建 6.项目实体类搭建 7.编写基础公共类 1.数据库配置文件 2.编写数据库的公共类 3.编写字符编码过滤器 3.1web配置注册 4.导入静态资源 1.搭建一个maven web项目 …

C++前置声明的理解

知识补充 在C/C中引入一个头文件时,在编译器预处理的时候会将引入头文件的地方简单替换成头文件的内容。这样做的后果是很容易引起头文件的重复引用。所以我们在编写头文件是一般有以下规定来防止头文件被重复包含。 MyWidget.h #ifndef MyWidget_H_ #define MyWi…

实验四、彩色图像处理

实验目的 使用MatLab软件对图像进行彩色处理,熟悉使用MatLab软件进行图像彩色处理的有关方法,并体会到图像彩色处理技术以及对图像处理的效果。 作业1:生成一副256*256的RGB图像,使得该图像左上角为黄色或者青色,左下…

day04_基本数据类型丶变量丶类型转换

前置知识 计算机世界中只有二进制。那么在计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。 进制 进制也就是进位计数制,是人为定义的带进位的计数方法 。不同的进制可以按照一定的规则进行转换。 进制的分类 十进制&#x…

Seurat -- Perform linear dimensional reduction

brief 什么是线性降维? 这里是一个很形象的网页演示,其中包括了一个视频链接。 这里是如何用R 包psych做线性降维的演示,其中也有原理的简述。 为什么要做线性降维? 因为下一步的聚类分析需要这里的降维结果作为输入。降维做的好…

14-3-进程间通信-消息队列

前面提到的管道pipe和fifo是半双工的,在某些场景不能发挥作用; 接下来描述的是消息队列(一种全双工的通信方式); 比如消息队列可以实现两个进程互发消息(不像管道,只能1个进程发消息&#xff…

vulnhub靶机Misdirection

环境准备 下载链接:https://download.vulnhub.com/misdirection/Misdirection.zip 解压后双击ovf文件导入虚拟机 网络:DHCP、NAT、192.168.100.0/24网段 信息收集 主机发现 192.168.100.133是新增的ip 端口扫描 发现开放了以上端口,继续…

【Java笔试强训 28】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥猴子分桃…

【Python入门】Python搭建编程环境-安装Python3解释器(内含Windows版本、MacOS版本、Linux版本)

前言 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Python零基础入门系列,本专栏主要内容为Python基础语法、判断、循环语句、函…