网络层IP协议的基本原理 数据链路层ARP协议 域名解析以及一些重要技术

目录

  • 1 网络层
    • IP协议
      • 协议头格式
      • 网段划分
      • DHCP
      • CIDR:基于子网掩码的划分方式
      • 特殊的IP号
      • IP地址的数量限制
      • 私有IP地址和公网IP地址
      • 路由
        • 路由表
  • 2 数据链路层 — 局域网的转发问题
    • 以太网
      • 认识以太网
      • 以太网帧格式
        • 局域网通信原理
      • MTU
        • MTU对IP协议的影响
        • MTU对UDP协议的影响
        • MTU对TCP协议的影响
      • ARP协议
        • ARP数据报格式
        • ARP协议工作过程
  • 3 DNS(Domain Name System)
    • 域名简介
    • 域名解析工具
  • 4 NAT技术
    • NAPT
    • NAT技术的缺陷
    • NAT和代理服务器
  • 5 ICMP协议
  • 6 网络总结
    • 数据链路层
    • 网络层
    • 传输层
    • 应用层
    • 传输层
    • 应用层

1 网络层

网络层作用:在复杂的网络环境中确定一个合适的路径。

tcp/ip协议,tcp解决可靠性与效率,ip提供在网络中传输的能力。

传输层决定了单次向下交付数据包的大小。

IP协议

IP(Internet Protocol)协议是一种网络层协议,用于在互联网上进行数据传输。它定义了数据如何在网络中进行分组、寻址和路由。IP协议是互联网的核心协议之一,它为互联网上的每个设备分配一个唯一的IP地址,以便进行数据交换。

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

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

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

协议头格式

封装和解包:定长报头+自描述字段

如何交付(分用):报头的8位协议:udp or tcp

image-20230722145013994

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

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

  • 8位服务类型(Type Of Service): 3位优先权字段(已经弃用), 4位TOS字段,和1位保留字段(必须置为0).

  • 4位TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个. 对于
    ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重要.

    • 16位总长度(total length): IP数据报整体占多少个字节.
  • 16位标识(id): 唯一的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每一个片里面的这个
    id都是相同的.

  • 3位标志字段:

    • 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到)

    • 第二位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文.(比如配合管理工作做MTU的大小探索时)

    • 第三位表示"更多分片", 如果分片了的话,最后一个分片置为1, 其他是0. 类似于一个结束标记.

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

  • 8位生存时间(Time To Live, TTL): 数据报到达目的地的最大报文跳数. 一般是64. 每次经过一个路由, TTL -= 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环

  • 8位协议: 表示上层协议的类型

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

  • 32位源IP地址和32位目标IP地址: 表示发送端和接收端.

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

链路层由于物理特征的原因,一般无法转发太大的数据,链路层有一次可以转发到网络的报文大小的限制(默认1500字节,MTU,最大传输单元)。

image-20230723185134802

分片:将一个比较大的ip报文,拆分成为多个小的,满足条件的报文。分片的行为是网络层做的,同样组装的行为也必须由对方的网络层做。

为什么要组装?

对方给自己的网络层是一个完整的TCP报文,接收方,在网络层向上交付也必须是一个完整的报文。协议的一致性,也减少了协议编写和维护的成本。IP分片和组装的行为TCP是不知道也不关心的。

分片是如何做到的?

在网络层中,分片是通过IP协议来实现的。IP协议定义了将数据包分割成较小的片段并在网络上进行传输的机制。 以下是分片的工作过程:

  1. 数据包分割:发送端将较大的数据包分割成较小的片段,每个片段称为分片。每个分片都包含IP头部和一部分数据。

  2. 分片标识:每个分片都被赋予一个唯一的标识号,以便接收端能够将它们重新组装成原始的数据包。这个标识号存储在IP头部的标识字段中。

  3. 分片偏移:每个分片还包含一个分片偏移字段,指示该分片在原始数据包中的位置。这个偏移值用于确定分片的顺序以及它们在重新组装时的位置。

  4. 分片大小:每个分片都有一个最大长度限制,这是由网络的最大传输单元(MTU)决定的。如果数据包的大小超过了MTU的限制,就需要进行分片。

  5. 分片传输:分片被单独发送到目的地,通过网络传输。每个分片都独立地经过路由器和其他网络设备,可能会采取不同的路径到达目的地。

  6. 分片重组:接收端收到分片后,根据IP头部的标识号和分片偏移字段,将它们重新组装成原始的数据包。接收端使用这些信息确定分片的顺序和位置,以正确地重建原始数据包。

需要注意的是,由于网络的不可靠性,分片的丢失或延迟可能会导致数据包无法正确重组。因此,网络层的分片机制需要依赖上层的传输层协议(如TCP)来确保数据的可靠传输。

分片严重不推荐,分片的坏处:

  • 丢包是有概率的,分片会增大丢包的概率

网段划分

每个国家的IP地址,在开始的时候,就已经被划分好了,国际上的路由器都有自己的路由表,可以进行国家和国家的转发。

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

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

image-20230724101338033

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

划分原因

  1. 便于定位
  2. 提高查找效率

DHCP

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

手动管理子网内的IP,是一个相当麻烦的事情。

有一种技术叫做DHCP,能够自动的给子网内新增主机节点分配IP地址,避免了手动管理IP的不便

一般的路由器都带有DHCP的功能,因此路由器也可以看做一个DHCP服务器

CIDR:基于子网掩码的划分方式

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

image-20230726171954537

  • 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类却浪费了大量地址。

针对这种情况提出了新的划分方案,称为CIDR。

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

不同路由器配置不同位数的子网掩码即可看到不同的网络号

image-20230726172223601

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

特殊的IP号

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

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还没有普及;

私有IP地址和公网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);

默认网关:特定子网中的第一台主机

image-20230724140953236

一个路由器有两套地址:

  • 对内:Lan口IP,局域网ip
  • 对外:WAN口IP,自己所在上级子网给自己分配的ip

路由器LAN口连接的主机, 都从属于当前这个路由器的子网中。

不同的路由器,子网IP其实都是一样的(通常都是192.168.1.1)。子网内的主机IP地址不能重复,但是子网之间的IP地址就可以重复了。

子网内的主机需要和外网进行通信时, 路由器将IP首部中的IP地址进行替换(替换成WAN口IP), 这样逐级替换,最终数据包中的IP地址成为一个公网IP.。这种技术称为NAT(Network Address Translation,网络地址转换)。

如果希望我们自己实现的服务器程序,能够在公网上被访问到,就需要把程序部署在一台具有外网IP的服务器上。这样的服务器可以在阿里云/腾讯云上进行购买。

源IP地址在不同内网,不同层级的网络节点中转发,被替换的技术,叫做NAT。

路由

路由是指在计算机网络中,根据特定的算法和规则,将数据包从源主机传送到目的主机的过程。路由是网络通信中的核心概念,它决定了数据包在网络中的传输路径和下一跳的目的地。

在复杂的网络结构中,找出一条通往终点的路线。

路由的过程,相当于一跳一跳“问路”的过程。所谓的“一跳”,就是数据链路层中的一个区间,具体在以太网中指从源MAC地址之间的帧传输区间。

IP数据包的传输也和问路一样:

  • 当IP数据包, 到达路由器时, 路由器会先查看目的IP;
  • 路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器;
  • 依次反复, 一直到达目标IP地址;
  • 通过每个节点内维护的路由表判定当前数据包应该发送到哪里。

路由表

路由表是路由器或交换机中存储的一张表格,用于决定数据包在网络中的传输路径。路由表包含了网络地址和对应的下一跳信息,用于指导数据包的转发。

路由表可以由网络管理员手动维护(静态路由),也可以通过一些算法自动生成(动态路由)。

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

小结:

  1. 目的ip
  2. 子网划分
  3. 路由表查找与路由算法
  4. IP没有解决设备在转发的具体功能,IP提供的是转发的策略,即路径选择。

局域网数据转发问题——>数据链路层解决

2 数据链路层 — 局域网的转发问题

用于两个设备(同一种数据链路节点)之间进行传递。

每一个节点本质都是子网转发。

以太网

认识以太网

以太网(Ethernet)是一种常用的局域网(LAN)技术,用于在计算机和其他网络设备之间传输数据。它是一种基于共享介质的传输技术,最初由Xerox、Intel和DEC(Digital Equipment Corporation)共同开发。

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

猫:调制解调器,连接光纤

以太网帧格式

image-20230724161018505

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

局域网通信原理

image-20230724170736387

如果局域网中,同时有多台主机都在发送数据,数据之间就发生了碰撞问题。发生碰撞,数据则不能使用,因此尽量不能发生碰撞问题。

一旦发生数据碰撞问题。会触发碰撞避免算法。

碰撞避免算法:发送主机会休息随机时间,然后再重新发送。

为了减少数据碰撞,此时使用交换机。

交换机:划分碰撞域。

局域网资源本质类似于一个临界资源。

注意:

  • 局域网中主机越少越好
  • 局域网数据帧发送的时候,数据帧过短会导致携带有效信息较少,数据帧太长会容易产生数据碰撞,因此以太网帧中的数据长度规定最小46字节,最大1500字节。

MTU

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

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

MTU对IP协议的影响

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

将较大的IP包分成多个小包, 并给每个小包打上标签;

每个小包IP协议头的 16位标识(id) 都是相同的;

每个小包的IP协议头的3位标志字段中, 第2位置为0, 表示允许分片, 第3位来表示结束标记(当前是否是最后一个小包, 是的话置为1, 否则置为0);

到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层;

一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据;

MTU对UDP协议的影响

一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报.

这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在网络层被分片, 整个数据被丢失的概率就大大增加了.

MTU对TCP协议的影响

TCP的一个数据报也不能无限大, 还是受制于MTU. TCP的单个数据报的最大消息长度, 称为MSS(MaxSegment Size);

TCP在建立连接的过程中, 通信双方会进行MSS协商.

最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU).

双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值.

然后双方得知对方的MSS值之后, 选择较小的作为最终MSS.

MSS的值就是在TCP首部的40字节变长选项中(kind=2);

image-20230726174152891

局域网受到攻击原理

向局域网中发送大量垃圾请求导致数据碰撞。

ARP协议

ARP(Address Resolution Protocol)是一种网络协议,用于将IP地址映射到MAC地址,以实现在局域网中的主机之间进行通信。

在局域网中,主机之间通常使用IP地址进行通信,而以太网(Ethernet)使用MAC地址来标识每个网络接口。ARP协议充当了IP地址和MAC地址之间的桥梁,通过查询和维护一个ARP缓存表,将IP地址解析为对应的MAC地址。

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

ARP数据报格式

image-20230724202042144

  • 硬件类型:链路层网络类型,1指以太网
  • 协议类型指:要转换的地址类型,0x0800为IP地址
  • 硬件地址长度:对于以太网地址为6字节;
  • 协议地址长度:对于和IP地址为4字节;
  • op:
    • 字段为1:ARP请求
    • 字段为2:ARP应答。

注意:

  • 任何主机可能之前向目标主机发起过ARP请求,注定了,未来会收到对应的ARP应答
  • 局域网中:任何一台主机收到ARP的时候,可能是一个应答,有可能是一个请求。因此收到arp,应该首先查看op,查看是请求还是应答,如果是请求,再查看目的IP与自己是否匹配,如果不匹配则丢掉。

image-20230726095927372

ARP协议工作过程

  1. ARP请求:当主机A需要与主机B通信时,它首先检查本地的ARP缓存表,查看是否已经知道主机B的MAC地址。如果没有,主机A将发送一个ARP请求广播到局域网上的所有主机,询问“谁拥有IP地址为B的设备的MAC地址?”该请求包含主机A的IP地址和MAC地址。

  2. ARP应答:当主机B收到ARP请求后,它会检查自己的IP地址是否与请求中的目标IP地址匹配。如果匹配,主机B将发送一个ARP应答,包含自己的IP地址和MAC地址。

  3. ARP缓存更新:主机A收到ARP应答后,将主机B的IP地址和MAC地址添加到本地的ARP缓存表中,以便将来的通信使用。

  4. 数据通信:在主机A知道主机B的MAC地址后,它可以使用MAC地址作为目标地址,将数据包直接发送到主机B。

ARP协议使用广播方式进行通信,因此只能在同一个局域网中进行操作。如果通信的目标设备不在同一个局域网中,需要使用其他协议(如ARP的扩展协议Proxy ARP)或者路由器来实现跨网络的地址解析。

如何获取一下所处的局域网中,所有主机的MAC和IP地址?

  • ifconfig 查询后,将自己的IP地址和子网掩码进行按位与,得到网络号
  • 例如得到网络号172.28.71.0,这是使用while循环进行ping
    • while [1.254] ping -c1 172.28.71.number ; number++; done
  • 则可缓存各IP跟MAC之间的映射关系
  • 可以通过arp -a查看刚才缓存的映射关系

arp伪装

在A和B不知情的情况下成为中间人,arp欺骗

image-20230726102256061

注意:

  • 在网络转发过程中,目的IP不变,MAC帧报头会改变。
  • 任何一个主机都暂时无法得知下一跳的MAC地址,必须知道要不然无法封装MAC帧。通过arp协议知道目的IP地址的MAC地址。
  • arp请求成功之后,请求方会暂时将IP和MAC地址的映射关系暂时保存下来(保存一段时间)。
  • arp的过程会在网络中的任何路径随时发生

3 DNS(Domain Name System)

属于应用层协议,DNS是一整套从域名映射到IP的系统,用于将域名解析与对应IP地址的网络协议。

TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆。

于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系.

image-20230726105354548

最初,通过互联网信息中心(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这样的格式,来表示主机支持的协议。

域名解析工具

可以使用dig工具分析DNS过程

yum insatll bind-utils
dig www.baidu.com

域名解析服务呈现出一定的区域性,区域的域名解析服务。

根域名服务器:

根域名解析服务器是互联网域名系统(DNS)中的最高级别服务器。它负责解析全球范围内的顶级域名(如.com、.net、.org等)的IP地址,并将请求转发给相应的顶级域名服务器。根域名解析服务器的主要作用是提供域名解析的起始点。当用户在浏览器中输入一个域名时,例如www.example.com,浏览器会向本地域名解析服务器发送一个域名解析请求。如果本地域名解析服务器无法直接解析该域名,它会向根域名解析服务器发送一个请求。根域名解析服务器的IP地址是固定的,因此本地域名解析服务器可以直接发送请求到根域名解析服务器的IP地址。根域名解析服务器会根据请求中的顶级域名信息,将请求转发给相应的顶级域名服务器。顶级域名服务器负责解析该顶级域名下的二级域名(如example.com)的IP地址,并将结果返回给根域名解析服务器。根域名解析服务器通常由互联网域名系统的管理机构维护和管理,例如国际互联网名称与数字地址分配机构(ICANN)。全球共有13台根域名解析服务器,分布在世界各地,以提供高可靠性和负载均衡的服务。

有时候QQ、微信、游戏等登陆正常,但是网页打不开?

DNS解析可能出现问题。DNS解析将域名转换为IP地址,如果DNS服务器出现故障或配置错误,就无法正确解析域名,导致网页无法打开。

思考:在浏览器输入一个url后,会发生哪些过程?

4 NAT技术

NAT(Network Address Translation,网络地址转换)技术是一种在计算机网络中常用的技术,用于将私有IP地址转换为公共IP地址,以实现多个设备共享一个公共IP地址的功能。

NAT技术的主要作用是解决IPv4地址资源的短缺问题。由于IPv4地址空间有限,无法为每个设备都分配一个唯一的公共IP地址。NAT技术通过在网络边界设备(如路由器或防火墙)上进行地址转换,将内部私有IP地址映射到外部公共IP地址上,从而实现多个设备共享一个公共IP地址。

NAT技术的工作原理如下:

  1. 内部设备发送数据包到外部网络时,源IP地址被替换为路由器的公共IP地址,同时在NAT表中记录映射关系。
  2. 外部网络返回数据包给路由器时,路由器根据NAT表中的映射关系将目标IP地址转换为内部设备的私有IP地址。
  3. 内部设备接收到数据包后进行处理。

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

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

NAPT

image-20230726140158159

在进行源地址转换的过程中,可能不一定只替换源IP,必要的时候,源端口也要被替换。

路由器在NAT转换的过程中,除了单纯的替换,还会为我们根据报文请求的四元组构建一个映射关系。

源IP表示唯一的一台主机,源端口表示该主机上的唯一的一个进程。则源IP+源端口表示当前内网中唯一的一个进程。

无论从内向外,还是从外向内,都能在各自的网络中表示唯一性,所以,这个映射关系是互为KEY值的。

NAT技术的缺陷

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

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

内网穿透技术

如果一个客户端从未访问过外网,在理论上外网是不能够直接访问内网的。但是有很多基于NAT原理的软件,能够实现从外网访问内网。这种技术成为内网穿透。

NAT和代理服务器

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

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

NAT和代理服务器的区别是什么?

  • 从应用上讲, NAT设备是网络基础设备之一,解决的是IP不足的问题。代理服务器则是更贴近具体应用,比如通过代理服务器进行翻墙,另外像迅游这样的加速器,也是使用代理服务器。
  • 从底层实现上讲,NAT是工作在网络层,直接对IP地址进行替换。代理服务器往往工作在应用层。
  • 从使用范围上讲,NAT一般在局域网的出口部署,代理服务器可以在局域网做,也可以在广域网做,也可以跨网。
  • 从部署位置上看,NAT一般集成在防火墙,路由器等硬件设备上,代理服务器则是一个软件程序,需要部署在服务器上。

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

  • 翻墙:广域网中的代理。
  • 负载均衡:局域网中的代理。

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

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

5 ICMP协议

一个网络层协议,基于IP协议工作。用来确认IP包是否成功到达目标地址,通知在发送过程中IP包被丢弃的原因。
ICMP只能搭配IPv4使用,如果是IPv6的情况下,需要是用ICMPv6。

6 网络总结

数据链路层

  • 数据链路层的作用: 两个设备(同一种数据链路节点)之间进行传递数据
  • 以太网是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
  • 以太网帧格式
  • 理解mac地址
  • 理解arp协议
  • 理解MTU

网络层

  • 网络层的作用: 在复杂的网络环境中确定一个合适的路径.
  • 理解IP地址, 理解IP地址和MAC地址的区别.
  • 理解IP协议格式.
  • 了解网段划分方法
  • 理解如何解决IP数目不足的问题, 掌握网段划分的两种方案. 理解私有IP和公网IP
  • 理解网络层的IP地址路由过程. 理解一个数据包如何跨越网段到达最终目的地.
  • 理解IP数据包分包的原因.
  • 了解ICMP协议.
  • 了解NAT设备的工作原理

传输层

  • 传输层的作用: 负责数据能够从发送端传输接收端.
  • 理解端口号的概念.
  • 认识UDP协议, 了解UDP协议的特点.
  • 认识TCP协议, 理解TCP协议的可靠性. 理解TCP协议的状态转化.
  • 掌握TCP的连接管理, 确认应答, 超时重传, 滑动窗口, 流量控制, 拥塞控制, 延迟应答, 捎带应答特性.
  • 理解TCP面向字节流, 理解粘包问题和解决方案.
  • 能够基于UDP实现可靠传输.
  • 理解MTU对UDP/TCP的影响.

应用层

  • 应用层的作用: 满足我们日常需求的网络程序, 都是在应用层
  • 能够根据自己的需求, 设计应用层协议.
  • 了解HTTP协议.
  • 理解DNS的原理和工作流程.
    P地址, 理解IP地址和MAC地址的区别.
  • 理解IP协议格式.
  • 了解网段划分方法
  • 理解如何解决IP数目不足的问题, 掌握网段划分的两种方案. 理解私有IP和公网IP
  • 理解网络层的IP地址路由过程. 理解一个数据包如何跨越网段到达最终目的地.
  • 理解IP数据包分包的原因.
  • 了解ICMP协议.
  • 了解NAT设备的工作原理

传输层

  • 传输层的作用: 负责数据能够从发送端传输接收端.
  • 理解端口号的概念.
  • 认识UDP协议, 了解UDP协议的特点.
  • 认识TCP协议, 理解TCP协议的可靠性. 理解TCP协议的状态转化.
  • 掌握TCP的连接管理, 确认应答, 超时重传, 滑动窗口, 流量控制, 拥塞控制, 延迟应答, 捎带应答特性.
  • 理解TCP面向字节流, 理解粘包问题和解决方案.
  • 能够基于UDP实现可靠传输.
  • 理解MTU对UDP/TCP的影响.

应用层

  • 应用层的作用: 满足我们日常需求的网络程序, 都是在应用层
  • 能够根据自己的需求, 设计应用层协议.
  • 了解HTTP协议.
  • 理解DNS的原理和工作流程.

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

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

相关文章

人类文明进入下个纪元奇点:UFO听证会-恒温超导发现-GPT大模型

今年以来,科技领域出圈的事件频繁发生,每一个事件都意味着一个领域的重大突破的可能。这些事件是UFO听证会、恒温超导LK99的论文、GPT类大模型的广泛应用,我常将这些事件串在一起思考,细思极恐,一种”火鸡与农场主“的…

C语言手撕顺序表

目录 一、概念 1、静态顺序表:使用定长数组存储元素。 2、动态顺序表:使用动态开辟的数组存储 二、接口实现 1、对顺序表的初始化 2、对数据的销毁 3、对数据的打印 4、检查是否需要扩容 5、尾插 6、头插 7、尾删 8、头删 9、在pos位置插入x …

使用ComPDFKit PDF SDK 构建iOS PDF阅读器

在当今以移动为先的世界中,为企业和开发人员创建一个iOS应用程序是必不可少的。随着对PDF文档处理需求的增加,使用ComPDFKit这个强大的PDF软件开发工具包(SDK)来构建iOS PDF阅读器和编辑器可以让最终用户轻松查看和编辑PDF文档。 …

IDEA 模块不加载依旧是灰色 没有变成小蓝色的方块

Settings > Build, Execution, Deployment > Build Tools > Maven > Ignored Files下降对应的模块勾选掉 但通常在Maven的配置中,您会找到一个名为“ignoredFiles”的列表,其中包含被忽略的文件和目录。您可以通过取消选中所需的文件或目录…

本地非文字资源无法加载

目录 方法A.静态/动态绑定路径 方法B.require导入(运行时加载) 方法C.import导入(x)(编译时加载) 方法D.ref直接操作元素赋值(x) 相关知识 import和requir区别 模板路径&#…

基于opencv与机器学习的摄像头实时识别数字!附带完整的代码、数据集和训练模型!!

前言 使用摄像头实时识别数字算是目标检测任务,总体上分为两步,第一步是检测到数字卡片的位置,第二步是对检测到的数字卡片进行分类以确定其是哪个数字。在第一步中主要涉及opencv的相关功能,第二步则使用机器学习的方式进行分类…

源码学习初章-基础知识储备

文章目录 学前准备源码地址引言extern "C" 宏定义平台宏跨平台宏vstdio平台禁用警告宏 连接、双层宏定义函数宏系统函数宏自定义函数宏多语句执行宏do while0 普通宏定义 C的一些必备函数知识回调函数和函数指针回调函数wireshark-4.0.7源码例子函数指针wireshark4.0…

通讯录的实现(超详细)——C语言(进阶)

目录 一、创建联系人信息(结构体) 二、创建通讯录(结构体) 三、define定义常量 四、打印通讯录菜单 五、枚举菜单选项 六、初始化通讯录 七、实现通讯的的功能 7.1 增加加联系人 7.2 显示所有联系人的信息 ​7.3 单独查…

《MySQL45讲》笔记—索引

索引 索引是为了提高数据查询效率,就像书的目录一样。如下图,索引和数据就是位于存储引擎中: 索引常见模型 哈希表 以键值对存储的数据结构。适用于只有等值查询的场景。 有序数组 在等值查询和范围查询场景中性能都特别优秀。但是有…

开放自动化软件的硬件平台

自动化行业的产品主要以嵌入式系统为主,历来对产品硬件的可靠性和性能都提出很高的要求。最典型的产品要数PLC。PLC 要求满足体积小,实时性,可靠性,可扩展性强,环境要求高等特点。它们通常采用工业级高性能嵌入式SoC 实…

Vue 3:玩一下web前端技术(三)

前言 本章内容为VUE工作过程与相关使用讨论。 上一篇文章地址: Vue 3:玩一下web前端技术(二)_Lion King的博客-CSDN博客 下一篇文章地址: Vue 3:玩一下web前端技术(四)_Lion Ki…

SpringBoot 注解

SpringBoot SpringBoot(SpringBootApplication)问题引入我们的工程在引入spring-boot-starter-web依赖的时候,为什么没有指定版本(版本锁定)spring-boot-starter-web是个啥,为什么引入了它之后,…

【业务功能篇59】Springboot + Spring Security 权限管理 【下篇】

UserDetails接口定义了以下方法: getAuthorities(): 返回用户被授予的权限集合。这个方法返回的是一个集合类型,其中每个元素都是一个GrantedAuthority对象,表示用户被授予的权限。getPassword(): 返回用户的密码。这个方法返回的是一个字符…

springboot编写mp4视频播放接口

简单粗暴方式 直接读取指定文件,用文件流读取视频文件,输出到响应中 GetMapping("/display1/{fileName}")public void displayMp41(HttpServletRequest request, HttpServletResponse response,PathVariable("fileName") String fi…

stm32通过ESP8266接入原子云

1. ESP8266模块需要烧录原子云固件,此原子云固件和正常的ESP8266固件相比添加了ATATKCLDSTA 和 ATATKCLDCLS 这两条指令: 2. 原子云账号注册及设备建立 设备管理-新增设备-ESP8266 新建设备后新建分组,将设备加入到此分组中: 至此…

ICASSP 2023 | Cough Detection Using Millimeter-Wave FMCW Radar

原文链接:https://mp.weixin.qq.com/s?__bizMzg4MjgxMjgyMg&mid2247486540&idx1&sn6ebd9f58e9f08a369904f9c48e12d136&chksmcf51beb5f82637a3c65cf6fa53e8aa136021e35f63a58fdd7154fc486a285ecde8b8521fa499#rd ICASSP 2023 | Cough Detection Usi…

SwipeDelMenuLayout失效:Could not find SwipeDelMenuLayout-V1.3.0.jar

一、问题描述 最近在工作上的项目中接触到SwipeDelMenuLayout这个第三方Android开发库,然后我就根据网上的教程进行配置。这里先说一下我的开发环境:Android Studio版本是android-studio-2020.3.1.24-windows,gradle版本是7.0.2。 首先是在se…

RWEQ模型——土壤风蚀模拟

详情点击链接:基于“RWEQ”集成技术在土壤风蚀模拟与风蚀模数估算、变化归因分析中的实践应用及SCI论文撰写 前沿 土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一,土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的…

【Docker】Docker应用部署之Docker容器安装Tomcat

目录 一、搜索镜像 二、拉取镜像 三、创建容器 四、测试使用 一、搜索镜像 docker search tomcat 二、拉取镜像 docker pull tomcat:版本 三、创建容器 首先在宿主机创建数据卷的目录 mkdir /root/tomcat # 创建目录 cd /root/tomcat # 进入目录 docker run -id -…

前端框架学习-Vue(二)

最近在学习Vue框架,Vue中的内容很多。相当于把之前后端的MVC,V层转移到前端来编写和部署。下面是学习Vue时的大纲。 Vue生命周期是Vue应用的生命周期Vue脚手架,即vue-cli,使用node.js 来创建和启动vue项目Vue组件知识,…