数据链路层 + NAT技术

数据链路层:负责设备之间的数据帧的传送和识别。

一、以太网

以太网的帧格式

如何分离报头和有效数据?

报头是固定长度的

如何将数据交给上层协议?

通过类型,如果是0800,则交给IP协议,如果是0806,就交给ARP协议

Mac地址

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

在网络传输时,源IP地址/目的IP地址不变(NAT技术将内网IP替换成公网IP除外),表示横跨多个网络的地址,源Mac地址/目的Mac地址会一直变化,描述的是路径上的每段路途的起点和终点

认识MTU

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

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

所以UDP/TCP发送的数据报文的大小都要在一定的范围内,不然在IP层就会被分片,让数据丢失的概率变大,效率变低。

UDP的报文中的有效数据<=1500-20-8=1472,TCP的报文中的有效数据<=1500-20-20=1460(最大段长度MSS)。TCP在建立连接时就会约定好MSS的大小,取两者的较小值


二、ARP协议

在局域网通信中,我们总是能通过主机的IP地址找到主机的Mac地址,从而将数据发送出去,但是我们如何通过IP地址得到Mac地址呢?--- ARP协议

ARP协议格式

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

这里有三点需要注意:

  • 主机会将收到的ARP结果缓存起来(一段时间后失效) --- 有效减少ARP请求的次数,同时也防止别人的主机换了,我们还在往过期的地址发送数据
  • 一台主机既能收到ARP请求也能收到ARP应答
  • 主机会按照最新的地址信息来跟新缓存

 用arp -a 命令,就能看到主机中缓存的地址

和ARP协议对应的还有一个RARP协议,作用是已知Mac地址要求IP地址,有兴趣可以了解一下


三、DNS协议(域名解析协议)

所谓的域名,就是我们日常输入的网址中写的类似www.baidu.com的字符串,它可以帮助我们记忆网站地址,不需要在使用IP地址。DNS协议的作用在于将域名翻译成IP地址。会有专门的域名解析服务器来帮助我们完成这一动作。

域名使用 . 连接

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

四、ICMP协议

ICMP 协议是一个 网络层协议
一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通, 但是 IP 协议并不提供可靠传输, 如果丢包了,IP 协议并不能通知传输层是否丢包以及丢包的原因,ICMP正是提供这种功能的协议
ICMP 主要功能包括
  • 确认IP包是否成功到达目标地址
  • 通知在发送过程中IP包被丢弃的原因
  • ICMP也是基于IP协议工作的,但是它并不是传输层的功能,因此把它归结为网络层协议
  • ICMP只能搭配IPv4使用,如果是IPv6的情况下,需要是用ICMPv6

 

ICMP 大概分为两类报文 :一类是通知出错原因,一类是用于诊断查询

以下是ICMP协议的一些主要特点和用途:

  1. 错误报告:当IP数据包在传输过程中出现问题时,如无法到达目的主机、TTL(Time To Live)超时等,目标主机会向源主机发送一个ICMP错误报告。这些错误报告有助于源主机了解数据包为何未能成功传输,从而采取相应的措施。
  2. 网络探测和诊断:ICMP协议提供了一些用于网络探测和诊断的工具,如ping命令。ping命令使用ICMP回显请求和回显应答报文来测试两台主机之间的网络连通性。当源主机发送一个ICMP回显请求报文给目标主机时,如果目标主机可达且工作正常,它会返回一个ICMP回显应答报文给源主机。
  3. 路由跟踪:traceroute(在Windows中为tracert)是一个使用ICMP报文和TTL值来追踪数据包从源主机到目标主机所经过的路由器路径的工具。通过逐步增加TTL值并观察ICMP超时或目标不可达报文,traceroute可以确定数据包在传输过程中经过的每一跳路由器。
  4. 网络管理:ICMP协议还可以用于网络管理,如地址掩码请求和应答(用于动态主机配置协议DHCP)以及路由器发现等。

ping命令

  • 注意,此处 ping 的是域名,而不是url,一个域名可以通过DNS解析成IP地址
  • ping命令不光能验证网络的连通性,同时也会统计响应时间和TTL(IP包中的Time To Live,生存周期)
  • ping命令会先发送一个 ICMP Echo Request给对端,对端接收到之后,会返回一个ICMP Echo Reply
  • ping是基于网络层的ICMP协议的,没有端口号

五、NAT技术

NAT技术,全称为Network Address Translation(网络地址转换),是一种在IP网络中用于解决IPv4地址短缺问题的技术。以下是NAT技术的简单介绍:

定义与背景

  • NAT技术是在1994年提出的,旨在通过将一个外部IP地址和端口映射到更大的内部IP地址集来转换IP地址。
  • NAT允许在本地网络中使用私有IP地址,当连接互联网时则使用全局IP地址。

工作原理

  • NAT使用流量表将流量从一个外部(主机)IP地址和端口号路由到与网络上的终结点关联的正确内部IP地址。
  • NAT的实现方式有三种:静态转换(Static NAT)、动态转换(Dynamic NAT)和端口多路复用(OverLoad或PAT)。

NAT技术的缺点:

1、外网无法直接访问内网中的主机,因为转化表是内部主机访问外网时才会创建映射关系

2、 装换表的生成和销毁都需要额外开销

代理服务器

NAT vs 代理服务器

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

内网穿透 && 内网打洞

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

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

相关文章

Debug - nacos配置 第二弹

好的 又是一个蠢蠢的 nacos 配置上出现的问题 在使用 nacos 进行 配置共享时 报错 Description: Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver c…

5.30边缘智能开发工具链全解析 | 2024高通边缘智能创新应用大赛公开课

2024高通边缘智能创新应用大赛系列公开课迎来精彩续篇&#xff01;本期课程将由阿加犀智能科技技术总监秦朝&#xff0c;为大家带来一场关于边缘智能方案与创新应用的深度分享。 作为本次大赛的联合主办方&#xff0c;阿加犀为比赛设备提供强大的软件支持。 各位参赛者将上手…

谷歌忙于手动删除自己搜索引擎中奇怪的人工智能答案

该公司确认正在“迅速采取行动”消除人工智能工具的一些奇怪反应。 社交媒体上充斥着谷歌新的人工智能概述产品的例子&#xff0c;这些产品说了一些奇怪的话&#xff0c;从告诉用户在披萨上涂胶水到建议他们吃石头。混乱的推出意味着&#xff0c;随着各种表情包的发布&#xf…

【Typescript】通过变量的值即可获取变量的类型【typeof 变量】

注意&#xff1a;只要变量的类型准确,则typeof获取变量的类型就不会错 enum Test {a "a0",b "b0" }// 这里的a是一个变量的值 let a: Test.a "a0" as Test.a// 这里的typeof a是一个类型【Test.a】 let x: typeof a Test.a

C++系列-定位new表达式(placement-new)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 我们先来强调一个很关键的问题&#xff0c;那就是在new和delete中的一一对应的问题&#xff0c; 我们先来看一段代码&#xff1a; #include<iostream> using namespace …

北理工提出 LTrack 双摄像头系统 | 专注于暗场景多目标跟踪,自动驾驶和夜间监控的福音!

低光照场景在现实世界应用中很普遍&#xff08;例如自动驾驶和夜间监控&#xff09;。最近&#xff0c;在各种实际用例中的多目标跟踪受到了很多关注&#xff0c;但在暗场景中的多目标跟踪却鲜少被考虑。 在本文中&#xff0c;作者专注于暗场景中的多目标跟踪。为了解决数据集…

shell脚本读写二进制文件

文章目录 shell脚本读写二进制文件读取二进制文件使用xxd命令使用od命令 写入二进制文件使用echo和printf 读取和修改二进制文件使用dd命令 组合使用工具 shell脚本读写二进制文件 在Shell脚本中处理二进制文件时&#xff0c;可以使用一些常用的命令和工具来读取和写入二进制数…

短视频真人配音:成都科成博通文化传媒公司

短视频真人配音&#xff1a;情感传递的新维度 随着数字化媒体的飞速发展&#xff0c;短视频已经成为人们日常生活中不可或缺的一部分。而在这个视觉盛宴的时代&#xff0c;真人配音的加入为短视频注入了新的活力&#xff0c;不仅丰富了内容形式&#xff0c;更使得情感传递达到…

怎样在网上赚点零花钱?推荐十个正规的赚钱兼职平台

今天要和大家探讨一个激动人心的话题——网络赚钱。在这个互联网日新月异的时代&#xff0c;网络赚钱已经变成了触手可及的现实。如果你正打算在网上赚取一些额外收入&#xff0c;那么这篇文章绝对值得一读&#xff01; 在这个信息泛滥的时代&#xff0c;网络赚钱的机遇随处可…

全方位质量保障!龙蜥在内核、软件包、容器镜像、三方模块的 CI 工程实践

编者按&#xff1a;在海量的代码测试和构建中&#xff0c; CI(Continuous Integration)在代码提交阶段&#xff0c;对提高软件质量和开发效率起到了至关重要的作用。2023 龙蜥操作系统大会全面繁荣开发者生态分论坛上&#xff0c;龙蜥社区 QA SIG Maintainer、联通数科 CUlinux…

ai发展会不会带来企业的员工垄断呢

写代码写累了&#xff0c;写点个人不成熟的想法&#xff0c;作为记录 随着gpt-4o发布&#xff0c;可以预计的是&#xff0c;AI逐渐能够通过各种外接设备和传感器和真实世界实时交互。那么未来一个接上摄像头&#xff0c;键盘&#xff0c;音响&#xff0c;可移动身体的的AI还会…

左外连接和右外连接的区别?举例说明——以力扣sql 1378. 使用唯一标识码替换员工ID为例

左外连接&#xff08;LEFT JOIN&#xff09;和右外连接&#xff08;RIGHT JOIN&#xff09;的主要区别在于哪个表的所有行会保留在结果集中 1. 左外连接 (LEFT JOIN) 左外连接会返回左表中的所有行以及右表中符合连接条件的行。如果右表中没有匹配的行&#xff0c;结果集中右…

内存泄漏案例分享1—Activity或Fragment的内存泄漏

背景 笔者优化音乐App内存泄漏时候&#xff0c;遇到了3个典型内存泄漏&#xff0c;泄漏的内存为39kb&#xff0c;一次39KB看上去不多&#xff0c;积少成多很有可能导致OOM&#xff0c;值得重视。 PS&#xff1a;文末有优化方案&#xff0c;优化后内存减少至原先的150分之一。 …

“不是我兄弟”!刘强东内部“狼性训话”流出!

今天&#xff0c;京东创始人刘强东5月24日的线上讲话流出。 在这次线上讲话中&#xff0c;刘强东首先宣布为全体采销员工涨薪20%—100%&#xff0c;随后进行了一番“狼性训话”。往期报道可戳&#xff1a;刘强东怒了&#xff1a;“不是我兄弟”&#xff01; 刘强东在讲话中指…

【Day8:JAVA字符串的学习】

目录 1、常用API2、String类2.1 String类的特点2.2 String类的常见构造方法2.3 String类的常见面试题&#xff1a;2.3.1 面试题一&#xff1a;2.3.2 面试题二&#xff1a;2.3.3 面试题三&#xff1a;2.3.4 面试题四&#xff1a; 2.4 String类字符串用于比较的方法2.5 String类字…

如何使用DevEco Studio创建Native C++应用

简介 本篇主要介绍如何使用DevEco Studio for OpenAtom OpenHarmony &#xff08;以下简称“OpenHarmony”&#xff09;创建一个Native C应用。应用采用“Native C”模板&#xff0c;实现了通过Node-API调用C标准库的功能。本示例通过调用C标准库接口来演示调用过程&#xff0…

windows-386、windows-amd64、windows-arm64这三者有什么区别?

选择文件的版本出现下面问题&#xff1a; Architectures windows-386 &#xff1a;这些是针对 32 位 Windows 系统编译的。windows-amd64 &#xff1a;这些是针对具有 AMD 或 Intel x86-64 架构的 64 位 Windows 系统编译的。windows-arm64 &#xff1a;这些是针对具有 ARM 架…

Golang的内存关系

1.Page Golang的Page,在操作系统对虚拟内存管理的MMU定义的物理页有相似的定义,默认的Page为8KB 2.mSpan 多个连续的Page称之为是一个Span&#xff0c;其定义含义有操作系统的管理的页表相似 3.Size Class Size Class: 相当于 一个等级和刻度, 比如 第二等级 就代表 一个Pag…

从零开始打造教育APP:在线教育系统源码与开发流程

很多人疑问&#xff0c;应该如何从零开始打造一个在线教育APP&#xff1f;今天&#xff0c;小编将详细为大家讲解在线教育系统的源码与开发流程。 一、需求分析 对于在线教育APP&#xff0c;需要要明确以下几点&#xff1a; 1.目标用户&#xff1a;明确APP的用户群体&#xf…

四川景源畅信:抖音小店新手如何做?

随着短视频平台的兴起&#xff0c;抖音小店成为了许多创业者的新选择。但是&#xff0c;对于新手来说&#xff0c;如何在抖音上开设并经营好自己的小店呢?本文将围绕这一问题展开讨论。 一、明确目标和定位作为抖音小店的新手&#xff0c;首先要明确自己的经营目标和定位。是想…