网络原理2-网络层与数据链路层

目录

  • 网络层
  • 数据链路层

网络层

网络层做的工作:

1、地址管理–>IP地址

2、路由选择–>数据包传输的路径规划

网络层主要的协议就是IP协议

IP协议的报头结构:
在这里插入图片描述

4位版本: 有两个取值,4表示IPv4,6表示IPv6,默认是IPv4

4位首部长度: IP协议的报头也是可变长的,实际报头长度是该值*4,例如首部长度为10时,实际报头长度是40

8位服务类型TOS: type of service,表示IP协议以哪种模式进行工作。3位优先权已经弃用,1位保留字段,实际上只有4位有效,4位分别表示:最小延迟,最大吞吐量,最高可靠性,最小成本,这4个相互冲突,只能选择一个

16位总长度: IP数据包的总长度,表示IP数据报整体占多少个字节,16位,也就是64kb,IP协议会把大的数据包拆成多个小的数据包,到达接收方后会自动组包。所以不代表IP协议不能传输64kb以上的数据包。

16位标识: 同一个载荷的数据会被分成多个IP数据包来进行传输,这些数据包的16位标识是相同的,

3位标志位: 只有2个有效,其中一个表示这个包是否需要组包(判断是否是拆包的一部分),另一个表示当前包是否是组包中最后一个包。剩下一个是保留位。

13位片偏移: 片偏移决定拼装组包时,数据包的位置

8位生存时间(TTL): 表示一个数据包在网络中最多存活多长时间。TTL的单位是次数,表示经过路由器转发的次数。如果一个IP数据包的中的目的IP写错了,写成不存在的IP地址,这样的数据包不能让它无限传输,当达到了TTL的上限后,这个数据包就会被自动丢弃。发送数据包时会有一个初始的TTL(32、64、128…),数据包每经过一个路由器转发,TTL就会-1,TTL一旦减为0,这个数据包就会被当前的路由器丢弃。

8位协议: 描述了IP数据包携带的载荷,是根据哪种传输层协议进行传输的(TCP、UDP等)

16位首部校验和: 验证数据在传输中是否出错(针对IP报头)

32位源IP地址: 描述IP数据包从哪来的

32位目的IP地址: 描述IP数据包到哪里去

选项: 可选的项

数据: 要传输的数据

关于IP地址:

IP地址一般是用32位整数描述的,一个IP地址分为两部分,左边部分是网络号,右边部分是主机号。至于哪些部分是网络号,哪些部分是主机号,需要根据子网掩码判断。根据子网掩码的二进制形式,判断,子网掩码为1的部分就是网络号,为0的部分就是主机号。例如:

子网掩码为255.255.255.0,IP地址为192.168.100.150,子网掩码换成二进制形式就是:11111111 11111111 11111111 00000000,说明前24位是网络号,也就是192.168.100是网络号,150是主机号。

以上这种子网掩码的方案,是比较常用的一种方式,还有一种方案:ABCDE五类网络,在如今,这种方式只出现在教材中,我们不过多介绍。

特殊的IP地址:

1、主机号全为0:这个IP相当于当前网段(相当于网络号)。给某个设备分配IP地址时不能把主机号设为全0

2、主机号全为1:如192.168.0.255,这个IP是广播IP,往这个IP地址发送数据包,相当于给整个局域网中所有的设备发送了数据包

3、127开头:这个叫环回IP,给这个IP地址发送数据,设备就会从这个IP地址上收到相同的数据,相当于自己给自己发,常见的环回IP是127.0.0.1

我们知道IP地址用是32位表示的,表示的范围也就是0 ~ 42亿9千万,这样的范围放在现在的时代,有非常大的可能会出现IP地址不够用的情况,毕竟光全球人口数量就比42亿多,那么有没有什么办法解决这个问题?

方案1:动态分配IP地址

动态分配就是,当设备上网的时候,就分配IP地址,不上网的时候就不分配。

方案2:NAT(Network Address Translation)网络地址转换

NAT的原理就是,一个设备上网的时候,IP数据包的地址会被NAT设备进行修改。

我们一般把IP地址分为两大类:

一类是私网IP(内网IP):10.开头,前8位是网络号、172.16 ~ 172.31,前12位是网络号,192.168开头,前16位是网络号。这些范围内的都称为私网IP

一类是公网IP(外网IP):除了私网IP范围之外的IP

同一个局域网内,A主机范围主机B是可以的(不涉及NAT);公网上的设备A访问公网上的设备B也是可以的(不涉及NAT);一个局域网中的主机A访问另一个局域网的设备B,NAT机制不允许这样做;NAT主要处理的是:局域网内部的设备A访问公网上的设备B。
在这里插入图片描述

问题是,局域网内不止我一个人使用CSDN,当CSDN收到数据包时,返回数据包,怎么知道是给谁返回呢?网络通信中不止有IP地址信息,还有端口号,在NAT中,端口号可以区分不同主机上的不同应用程序。

在这里插入图片描述

运营商的NAT设备,会保存替换的映射关系,根据映射关系,就能确定是返回给我还是返回给朋友。

方案3:使用IPv6,IPv4使用的是32位表示地址,而IPv6使用128位表示,这个范围可以使地球上的每一粒沙子都能有自己的IP地址,IPv6不是IPv4的升级版,所以想大力推广使用IPv6,需要更换硬件设备,成本非常大,目前咱们普及程度是非常高了~

路由选择:

路由选择就是路线规划,规划数据包在网络中走哪个路由器进行传输。当IP数据包到达路由器时,路由器会查看目的IP,决定数据包是不是能直接发给目的主机,还是说要发送给下一个路由器,如此往复直到达到目的IP地址。具体的流程可以查看资料,咱们Java程序员了解一下即可。

数据链路层

数据链路层中最常见的协议:以太网

以太网数据帧格式如下:
在这里插入图片描述

目的地址和源地址都是mac地址,不是IP地址。

mac地址和IP地址的区别

1、mac地址使用6个字节表示,范围大

2、一般计算机或者其他设备在出厂时,mac地址就被分配好了,不能再修改了,mac地址也能作为设备的身份标识。IP地址可以手动修改

3、mac地址使用在数据链路层,用来实现两个设备之间的数据转发;IP地址是在网络层中使用的。

类型:描述了载荷中是什么样的数据

在这里插入图片描述

ARP是建立IP地址和mac地址的映射关系,当前设备接入网络时,会往广播地址发送ARP报文,收到ARP请求的设备会返回ARP响应,在响应中告知自己的IP和mac地址

46 ~ 1500字节:1500描述了数据链路层数据帧最大载荷长度
以上是网络层和数据链路层的相关介绍,作为Java程序员,我们需要了解的就是这些~

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

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

相关文章

【DVWA】——File Upload(文件上传)

📖 前言:文件上传漏洞是由于对上传文件未作过滤或过滤机制不严(文件后缀或类型),导致恶意用户可以上传脚本文件,通过上传文件可达到控制网站权限的目的。 目录 🕒 1. Low🕒 2. Mediu…

嵌入式单片机程序运行基本机理

1. 程序各种要素说明 大家好,今天用一个最简单的程序跟大家讲清楚程序的构成。 1.1. 概述 硬件首先要知道硬件的组成。 在前面章节我们说过,芯片包含Flash和RAM。 他们虽然不是相同的东西,但是都属于同一个地址空间,32位芯片的地址空间大小是4G。 比如ST32,FLASH通常从…

[云服务器10]使用alist搭建云盘系统

hello大家好啊,今天为大家带来的是使用alist搭建一个网盘系统! 首先我们得明确,人家阿里云盘,百度云盘都是存了PB级的数据,然后我大概算了一下,成本约为 2 554 880 2\space554\space880 2 554 880RMB每个月…

3.1 通信协议

通信协议 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 全双工:发送与接收互不影响 (如串口通信有两根数据线 tx,rx) 半双工 &#xff1…

155K Star,Python 入门到进阶最佳学习资源

Hi,骚年,我是大 G,公众号「GitHub 指北」会推荐 GitHub 上有趣有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注。 导语 如果你正在寻找一个全面、系统、深入的 Python 学习项目&#…

CSP-CCF★★★201903-2二十四点★★★

目录 一、问题描述 二、解答 方法一:穷举法(只列举了一部分) 方法二:中缀表达式直接求值,两个栈,一个存放数值,一个存放符号 方法三:将中缀表达式转换为后缀来计算注意&#xff…

【Git】初识Git

本篇文章的环境是在 Ubuntu/Linux 环境下编写的 文章目录 版本控制器Git 基本操作安装 Git创建 Git 本地仓库配置 Git认识工作区、暂存区、版本库添加文件修改文件版本回退撤销修改删除文件 版本控制器 在日常工作和学习中,老板/老师要求我们修改文档,…

C++11新特性学习

C11 1. C11新特性 自动类型推导(auto)智能指针(提供更安全和更高效的内存管理)移动语义和右值引用 (move语义 &&,使得对象移动而非拷贝,在处理大量数据时提高程序性能)Lambda 表达式(…

胤娲科技:解锁AI奥秘——产品经理的智能进化之旅

当AI不再是遥不可及的科幻 想象一下,你走进一家未来感十足的咖啡厅,无需言语,智能咖啡机就能根据你的偏好调制出一杯完美的拿铁; 打开手机,AI助手不仅提醒你今天有雨,还贴心推荐了最适合雨中漫步的音乐列表…

如何正确使用MMPI量表进行测试?

1、需要初中以上学历,能对测试题准确的理解。 2、应在安静、无干扰的环境中进行,确保自己能够集中注意力完成测试。 3、尽量不要选择“无法回答”这个选项,当然如果确实有无法回答的,也可以选,但是总数不要超过22个。…

java中,怎么使用反射?

在Java中,反射(Reflection)是指在运行时能够获取类、方法、字段、构造函数等信息,并且能够在运行时动态调用类的方法、创建对象或访问字段。Java中的反射机制主要通过java.lang.reflect包中的类来实现。反射可以为开发者提供强大的…

【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统(SDIO接口驱动、雷龙SD卡)——文末资料下载

基于STM32设计的SD卡数据读取与上位机显示系统 演示视频: 基于STM32设计的SD卡数据读取与上位机显示系统 简介:本研究的主要目的是基于STM32F103微控制器,设计一个能够读取SD卡数据并显示到上位机的系统。SD卡的数据扇区读取不仅是为了验证存…

VSCode C++(Code Runner)+ OpenSSL开发环境搭建

本章教程,主要介绍在VSCode中配置OpenSSL环境。 一、安装 OpenSSL 首先,我们需要安装OpenSSL,并配置OpenSSL系统环境变量。 1、下载OpenSSL 下载地址:https://slproweb.com/products/Win32OpenSSL.html 如果下载慢可以通过下方网盘进行下载: 通过网盘分享的文件:Win64Op…

excel如何快速选中某个数字或者某串数字

鼠标光标放在某个数字或者某串数字的末尾,进行双击鼠标左键即可 (就会选中当前鼠标光标前相邻的所有数字):

文本到3D生成

文本到3D生成是一种通过文本描述直接创建三维数字模型的技术。这种技术能够将语言描述转换成可视化的三维模型,使得内容创作者和设计师可以直接从概念阶段跳转到三维可视化,大大加快创作流程并提供更直观的设计和修改过程。 该技术的核心应用之一是基于…

【当当网】电子书城-01-市场背景与项目搭建

市场背景与功能描述 🌿 市场背景 近年来随着计算机的日益普及和网络(特别是因特网)的迅速发展,在全球范围内形成了一种新的企业经营方式,他们把所有的商业活动和贸易往来电子化, 利用发达的网络环境 进行快速有效的商业活动。这就…

什么是java的spi?

Java SPI(Service Provider Interface)是一种提供服务发现机制的设计模式,允许在运行时动态地发现、加载和替换服务的实现。SPI机制的核心思想是:通过接口定义服务,并且使用外部的实现类来提供该服务的具体功能。 目录…

560 和为k的子数组

解题思路: \qquad 一开始看到连续非空序列,会想到是不是可以用双指针表示一个区间,然后通过一次遍历找出所有可能的区间,但看到元素的取值区间就知道行不通,这个方法仅适用于数组元素大于等于0的情况。若数字是负数&a…

【计网】从零开始使用UDP进行socket编程 --- 服务端业务实现

在我们每个人都曾经历过“沮丧”时刻里, 如果我们不能对别人说有益的好话, 那我们最好还是什么也别说。 --- 卡耐基 《人性的弱点》--- 从零开始使用UDP进行socket编程 1 前情提要2 单词翻译2.1 业务需求2.2 设计字典类2.3 服务端与客户端逻辑2.4 运…

Java虚拟机 - 原理篇

一、栈上的数据存储 boolean数据类型保持方式 需求1:编写如下代码,并查看字节码文件中对boolean数据类型处理的指令。 package demo1;public class Demo01 {public static void main(String[] args) {boolean a false;if(a){System.out.println("…