网络原理之网络层、数据链路层

1. 网络层

1.1 IP协议

在这里插入图片描述

1.1.1 基本概念

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

1.1.2 协议头格式

在这里插入图片描述

说明:

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

  • 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位总长度(totallength): IP数据报整体占多少个字节.

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

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

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

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

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

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

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

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

  • 数据: 传输层传来的数据载荷

1.2 地址管理

1.2.1 IP地址

IP地址(Internet ProtocolAddress)是指互联网协议地址,又译为网际协议地址。

IPv4最多可以43亿个IP地址,但是现在上网的设备越来越多,在前文中,我们讨论过使用IPv6的方法,但是由于现在的网络中的主流协议还是IPv4,那么我怎么处理不够用的问题呢??
此时有两种方法

  1. 动态分配置:只给接入网络的设备分配IP地址.因此同⼀个MAC地址的设备,每次接入互联网中,得到的IP地址不⼀定是相同的
  2. NAT技术:见目录下1.2.3介绍

1.2.2 网段划分

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

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

1.2.3私有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)

在这里插入图片描述
在这里插入图片描述

  • 从生活常识中,我们也知道路由器WAN口是插着运营商给定宽带的(光猫),LAN口连接着电脑和其他网络设备
  • ⼀个路由器可以配置两个IP地址,⼀个是WAN口IP,⼀个是LAN口IP(子网IP).
  • 路由器LAN口连接的主机,都从属于当前这个路由器的子网中.
  • 不同的路由器,子网IP其实都是⼀样的(通常都是192.168.1.1).子网内的主机IP地址不能重复.但是子网之间的IP地址就可以重复.
  • 每⼀个家用路由器,其实又作为运营商路由器的子网中的⼀个节点.这样的运营商路由器可能会有很多级,最外层的运营商路由器,WAN口IP就是⼀个公网IP了.
  • 子网内的主机需要和外网进行通信时,路由器将IP首部中的IP地址进行替换(替换成WAN⼝IP),这样逐级替换,最终数据包中的IP地址成为⼀个公网IP.这种技术称为NAT(NetworkAddressTranslation,网络地址转换).
  • 如果希望我们自己实现的服务器程序,能够在公网上被访问到,就需要把程序部署在⼀台具有外网IP的服务器上.这样的服务器可以在阿里云/腾讯云上进行购买

2. 数据链路层

2.1 认识以太网

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

2.2 以太网帧格式

以太网的帧格式如下所示:

在这里插入图片描述

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

2.3 认识MAC地址

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

3. 重要应用层协议DNS(Domain Name System)

概念:域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射
作用: 原来访问一个网络信息,需要知道对方的IP和端口号,很不方便,但是DNS将IP地址和端口号和域名绑定在了一起,直接搜索网址即可
例如:当访问一个京东网页时,我们需要知道csdn的IP和端口号,有那么多网页,很难记住那么多网页的,此时就需要DNS,我们只要访问www.csdn.com即可
在这里插入图片描述

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

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

相关文章

炫酷的3D按钮效果实现 - CSS3高级特性应用

炫酷的3D按钮效果实现 - CSS3高级特性应用 这里写目录标题 炫酷的3D按钮效果实现 - CSS3高级特性应用项目介绍核心技术实现1. 基础结构设计2. 视觉效果实现2.1 背景渐变2.2 立体感营造 3. 交互动效设计3.1 悬停效果3.2 按压效果 技术要点分析1. 深度层次感2. 动画过渡3. 性能优…

Java定时任务的三重境界:从单机心跳到分布式协调

《Java定时任务的三重境界:从单机心跳到分布式协调》 本文将以生产级代码标准,揭秘Java定时任务从基础API到分布式调度的6种实现范式,深入剖析ScheduledThreadPoolExecutor与Quartz Scheduler的线程模型差异,并给出各方案的性能压…

鸿蒙Flutter开发故事:不,你不需要鸿蒙化

在华为牵头下,Flutter 鸿蒙化如火如荼进行,当第一次看到一份上百个插件的Excel 列表时,我也感到震惊,排名前 100 的插件赫然在列,这无疑是一次大规模的军团作战。 然后,参战团队鱼龙混杂,难免有…

PolyBench基准程序详解:编译器优化评测指标

PolyBench基准程序详解:编译器优化评测指标 PolyBench基本概念 PolyBench(Polyhedral Benchmark)是由UCLA(加州大学洛杉矶分校)的Louis-Nol Pouchet及其研究团队开发的基准测试套件,专门用于评估多面体编…

2025年渗透测试面试题总结-某四字大厂实习面试复盘 一面 二面 三面(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 一面 1. 数组和链表各自的优势和原因 2. 操作系统层面解析和进程 3. 线程和进程通信方式及数据安全问…

ruoyi-vue部署4

1.jdk-linux安装 2.tomcat-linux安装 3.ruoy后台部署 4.nginx-linux安装5.ruoyi前端部署​​​​​​​

查看visual studio的MSVC版本的方法

右键项目名称,下拉点击属性 然后点击库目录,下拉点击编辑 就可以看见msvc版本了

【Javascrip】Javascript练习01 REST API using Express.js.

针对该问题的项目路径 要求部分 what you need to doReview the tasks provided in the section below.Obtain the boilerplate code.Use your local development environment to implement a solution.Upload your solution for marking via Gradescope. There is no attempt…

【蓝桥杯速成】| 9.回溯升级

题目一:组合综合 问题描述 39. 组合总和 - 力扣(LeetCode) 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返…

apache-maven-3.9.9 详细安装配置教程(2025版)

apache-maven-3.9.9 详细安装配置教程 一、下载解压二、配置本地仓库镜像源三、配置环境变量四、配置 IDEA 一、下载解压 官网地址: https://maven.apache.org/download.cgi二、配置本地仓库镜像源 解压并新建文件夹,作为 maven 下载仓库。目的&#…

构建企业级数据的愿景、目标与规划历程

文章目录 1. 企业级数据的愿景2. 企业级数据的目标、实施标准和战略3. 企业级数据的蓝图3.1 业务数字化转型的蓝图3.2 大数据平台的架构蓝图 4. 企业级数据的规划历程4.1 第一阶段:数据生产与打通4.2 第二阶段:数据集成、联接、应用 伴随着数字科技、通信…

深入理解 JavaScript/TypeScript 中的假值(Falsy Values)与逻辑判断 ✨

🕹️ 深入理解 JavaScript/TypeScript 中的假值(Falsy Values)与逻辑判断 在 JavaScript/TypeScript 开发中,if (!value) 是最常见的条件判断之一。它看似简单,却隐藏着语言的核心设计逻辑,也是许多开发者…

74HC04(反相器)和74HC14(反相器、施密特触发器)的区别

74HC04和74HC14的具体区别详解 同样具有反相器功能,你知道74HC04和74HC14的具体区别吗? 74HC04 对于74HC04很好理解,输入低电平,输出高电平;输入高电平,输出低电平。 建议操作条件: 下图是TI的…

面向医药仓储场景下的药品分拣控制策略方法 研究(大纲)

面向医药仓储场景下的药品分拣控制策略方法研究 基于多机器人协同与智能调度的分拣系统设计 第一章 绪论 1.1 研究背景与意义 医药仓储自动化需求: 人工分拣效率低、出错率高(如药品批次混淆、过期风险)温控药品(如疫苗、生物制…

AI大白话(三):深度学习——AI的‘大脑‘是如何构建的?

🌟引言: 专栏:《AI大白话》 AI大白话(一):5分钟了解AI到底是什么? AI大白话(二):机器学习——AI是怎么“学习“的? 大家好!继前两篇介绍AI基础和机器学习的文章后,今天我们来聊聊深度学习——这个让AI技术近年来突飞猛进的"神奇引擎"。别担心,我会用…

19681 01背包

19681 01背包 ⭐️难度:中等 🌟考点:动态规划、01背包 📖 📚 import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int N 10001…

DeepSeek R1 本地部署指南 (2) - macOS 本地部署

上一篇: DeepSeek R1 本地部署指南 (1) - Windows 本地部署-CSDN博客 1.安装 Ollama Ollama https://ollama.com/ 点击 Download - Download for macOS 解压下载 zip 启动程序 3. 选择版本 DeepSeek R1 版本 deepseek-r1 https://ollama.com/library/deepseek-r1 模…

威联通 加载swoole记录

命令不是php -v是php7.4 php7.4 安装位置 查看ini路径 php-fpm7.4文件位置 /share/CACHEDEV2_DATA/.qpkg/PHP7.4/bin/ 创建软链接 可以在 /etc/init.d/ 目录下创建一个指向 /share/CACHEDEV2_DATA/.qpkg/PHP7.4/bin/php - fpm7.4 的软链接,这样系统就能识别…

启动方法jupyter(Anaconda)

原本我一直以为需要启动anaconda才能去开启jupyter,但是看到同学的windows可以直接通过菜单去开启并使用jupyter,所以我意识到开启jupyter不需要那么复杂。那么Linux中有没有更方便的方法去启动呢? 首先我们要知道anaconda仅仅是一个集成的环…

ManiWAV:通过野外的音频-视频数据学习机器人操作

24年6月来自斯坦福大学、哥伦比亚大学和 TRI 的论文“ManiWAV: Learning Robot Manipulation from In-the-Wild Audio-Visual Data”。 音频信号通过接触为机器人交互和物体属性提供丰富的信息。这些信息可以简化接触丰富的机器人操作技能学习,尤其是当视觉信息本身…