网络层_IP

传输层解决的是传输控制,而实际真正决定数据能否发送到对端的是网络层。网络层是有概率传输,而传输层是可靠性传输。所以传输层+网络层就可以做到将数据可靠发送到对端。网络层的常见协议有:IP、ICMP等,其中最重要的是IP协议,IP协议有IP4v和IPv6两种,目前用的最多的是IPv4.

一.IP协议

1.1 IP地址

一般每一个网卡都配有一个IP地址,而IP地址可以标识网络中的唯一一台主机,IP地址有网络号和主机号组成,按照网络号可以快速定位某一个主机在哪个网段,然后根据主机号进一步确认是哪个主机。

  • IPv4地址:32位,用点分十进制标识
  • IPv6地址:128位

环回地址:172.0.0.1 这个ip地址用于网络测试,从该ip发出的数据不会发送到网络中,而是贯穿自己的TCP/IP层,然后交给自己上层程序。

1.2 IP协议格式

image.png

  • 4位版本:4-IPv4
  • 4位首部长度:以4字节为单位,同TCP
  • 8位服务类型:表示IP提供哪种类型的传输方式
    • 最大吞吐量
    • 最小时延:路径选择最近
    • 最高可靠性:丢包概率最低路径路由
    • 最小成本:
  • 16位总长度:解决IP报文的粘包问题
  • 16位标识:用于区分不同IP报文
  • 3位标志:xxx 第一位x保留; 第二位x如果为1表示不能分片,0可以分片;第三位x表示更多分片:如果为1,则表示该分片后有分片。
  • 13位片偏移:该分片的数据在原始报文中的偏移量
  • 8位生存时间:最多可以经过几次路由器转发
  • 8位协议类型:交付给上层哪个协议,TCP or UDP
  • 16位首部校验和
1.3 网段划分

如果用MAC地址在网络中定位某一台主机,那么我们就必须得一台一台主机查,这样查找效率无疑是很低的。如果用IP地址在网络中定位某一台主机,根据网络号把所有主机划分为若干子网,每个子网都有其子网号,这样要查找一台主机,先查找目标主机的网络号,然后再确定具体是该子网中的哪个主机。这样的查找效率是很高的。举个例子,根据你的学号来找你,一定先是确定你的学院,然后确定你的专业,然后确定你的班级,最后找到你,这样查找效率一定是比一个一个找高的。

路由器:

  • 功能:构建子网,DHCP动态为当前子网内的主机分配IP地址

一般路由器就是你当前网段的入口主机,所以一般路由器的ip地址就是当前网段内的1号主机。例如:192.168.3.1 , 网络号:192.168.3,主机号:1。

Internet组织机构定义了五种IP地址,有A、B、C、D、E五类地址。但是由于这种划分子网的方式会导致大量的IP地址浪费,目前解决方案有CIDR,DHCP,NAT技术,IPv6。

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

模拟子网划分方式:在下面的划分方案中,只是为了弄清一些网络机制。
image.png
在两个网络之间,要有一个路由器,这个路由器至少包含有两个IP地址,一个是对内的,一个是对外的。划分到一定程度上,运营商不会按照上述这样一直增大子网掩码,而是建立一个私网。
公网IP与私网IP:
标志规定私网IP有三种,且不能出现在公网中。私有IP可以相同

  1. 10.x.x.x 大型局域网用的私网IP
  2. 192.168.x.x 小型局域网用的私网IP,比如一个家庭
  3. 172.16.x.x - 127.31.x.x 中型局域网用的私网IP,比如一个学校

image.png
任何一台路由器都有两个IP,私有IP(LAN口IP)和公网IP(WAN口IP)。当用户要给公网的一个主机发送消息时,由于私网IP不能出现在公网上,所以报文在经过当前局域网的出口路由器时会将报文的私有IP换为路由器的WAN口IP,然后传输到公网上,经过路由后找到对应的主机。这种技术就是NAT技术(源ip不断被替换)。

1.4 路由

IP数据包的转发是不断进行查找路由表的过程,通常一个路由器会直连两个子网,如果查找路由表发现目的IP地址不是这两个子网,路由器就会将该IP数据包转发到默认路由,进行下一次查找;如果查找路由器发现目的IP在级联的两个子网中,就会将该IP数据包发送给目的子网
image.png
路由表:route命令查看路由表
image.png

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

1.5 分片与组装

由于MAC协议规定,一次传输的字节数(MTU)不超过1500字节。因此,如果IP数据包的大小超过1500字节,就要进行分片传送,然后到达对端主机的网络层再进行组装成一个完整的报文。在IP协议中有三个字段:16位标识,3位标志,13位片偏移。通过这三个字段可以实现对同一个包的分片进行组装。但IP数据包如果分片了,那么就会增加丢包概率,所以TCP向下交付的数据尽量不要过大,一般应该为1480。其中TCP报头20字节,有效载荷1460字节(MSS,最大段尺寸),最终加IP报头20字节,最后传输到数据链路层的总大小为1500字节。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

el-table的border属性失效问题解决方案

目录 问题: 使用的代码: 官方文档的说明: 可能的问题所在: 关于使用了作用域插槽: a.自定义内容的样式覆盖: b.表格结构的改变: 解决方案: 通过css样式解决: 下面…

Unity AI Navigation插件快速使用方法

AI Navigation插件使您能够创建能够在游戏世界中智能移动的角色。这些角色利用的是根据场景几何结构自动生成的导航网格。障碍物可以让您在运行时改变角色的导航路径。 演示使用的Unity版本为Tuanjie 1.0.0,团结引擎是Unity中国的引擎研发团队基于Unity 2022 LTS版本为中国开发…

HTML、XHTML和HTML5系列对比

目录 HTML HTML的优点: HTML的缺点: 应用场景: XHTML XHTML的优点: XHTML的缺点: 应用场景: HTML5 HTML5的优点: HTML5的缺点: 应用场景: 回首发现&#xff0…

面试经典-31-随机链表的复制

题目 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节…

C语言- strcat(拼接函数的使用和模拟)

strcat&#xff08;拼接函数的使用和模拟&#xff09; strcat的语法 strcat 是 C 语言标准库中的一个字符串拼接函数&#xff0c;它用于将一个字符串&#xff08;source&#xff09;拼接到另一个字符串&#xff08;destination&#xff09;的末尾。该函数定义在 <string.h…

Java开发从入门到精通(九):Java的面向对象OOP:成员变量、成员方法、类变量、类方法、代码块、单例设计模式

Java大数据开发和安全开发 &#xff08;一)Java的变量和方法1.1 成员变量1.2 成员方法1.3 static关键字1.3.1 static修饰成员变量1.3.1 static修饰成员变量的应用场景1.3.1 static修饰成员方法1.3.1 static修饰成员方法的应用场景1.3.1 static的注意事项1.3.1 static的应用知识…

基于暗通道的图像去雾算法,Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供有偿…

MongoDB简单CRUD操作(含GO中的库操作)

MongoDBCRUD操作&#xff08;含GO中的库操作&#xff09; 这周开始尝试做新项目&#xff0c;涉及到了文章的存储&#xff0c;查了查MongoDB在这方面用的比较多&#xff0c;因此对MongoDB和他在Golang中的用法进行了学习&#xff0c;以下是我的整理 文章目录 MongoDBCRUD操作&a…

IDEA中的Project工程、Module模块的概念及创建导入

1、IDEA中的层级关系&#xff1a; project(工程) - module(模块) - package(包) - class(类)/接口具体的&#xff1a; 一个project中可以创建多个module一个module中可以创建多个package一个package中可以创建多个class/接口2、Project和Module的概念&#xff1a; 在 IntelliJ …

vue3模块化引用组件和引用ts,调用ts中的接口

以简单的登录功能为例子 1.在util中创建loginValidators.ts import { ref, reactive } from vueinterface User{email: string;password: string; }export const loginUserreactive<User>({email: ,password: })interface Rules{email: {required: boolean;message: …

Html提高——HTML5 新增的语义化标签

引入&#xff1a; 以前布局&#xff0c;我们基本用 div 来做。div 对于搜索引擎来说&#xff0c;是没有语义的。 但是在html5里增加了语义化标签&#xff0c;如 <header>&#xff1a;头部标签 <nav>&#xff1a;导航标签 <article>&#xff1a;内容标签 &…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:ListItem)

用来展示列表具体item&#xff0c;必须配合List来使用。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。该组件的父组件只能是List或者ListItemGroup。 子组件 可以包含单个子组件。 接口 从API…

[江苏工匠杯]easyphp

先看源码 <?php highlight_file(__FILE__); $key1 0; $key2 0; ​ $a $_GET[a]; $b $_GET[b]; ​ if(isset($a) && intval($a) > 6000000 && strlen($a) < 3){if(isset($b) && 8b184b substr(md5($b),-6,6)){$key1 1;}else{die("…

遗传算法及基于该算法的典型问题的求解实践

说明 遗传算法是一个很有用的工具&#xff0c;它可以帮我们解决生活和科研中的诸多问题。最近在看波束形成相关内容时了解到可以用这个算法来优化阵元激励以压低旁瓣&#xff0c;于是特地了解和学习了一下这个算法&#xff0c;觉得蛮有意思的&#xff0c;于是把这两天关于该算法…

大模型训练准备工作

一、目录 1 大模型训练需要多少算力&#xff1f; 2. 大模型训练需要多少显存&#xff1f; 3. 大模型需要多少数据量训练&#xff1f; 4. 训练时间估计 5. epoch 选择经验 6. 浮点计算性能测试 二、实现 1 大模型训练需要多少算力&#xff1f; 训练总算力&#xff08;Flops&…

分割等和子集 最后一块石头的重量II 目标和

416. 分割等和子集 力扣题目链接 本题中每一个元素的数值既是重量&#xff0c;也是价值。 dp[j]表示 背包总容量&#xff08;所能装的总重量&#xff09;是j&#xff0c;放进物品后&#xff0c;背的最大重量为dp[j] 如果背包容量为target&#xff0c; dp[target]就是装满 背…

helm部署hadoop

&#xff08;作者&#xff1a;陈玓玏&#xff09; 参考helm仓库的文档&#xff1a;https://artifacthub.io/packages/helm/apache-hadoop-helm/hadoop helm helm repo add pfisterer-hadoop https://pfisterer.github.io/apache-hadoop-helm/ helm install hadoop pfistere…

机器学习 --- 模型评估、选择与验证

Java实训代码、答案&#xff0c;如果能够帮到您&#xff0c;希望可以点个赞&#xff01;&#xff01;&#xff01; 如果有问题可以csdn私聊或评论&#xff01;&#xff01;&#xff01;感谢您的支持 第1关&#xff1a;为什么要有训练集与测试集 1、下面正确的是&#xff1f;&…

升入理解计算机系统学习笔记

磁盘存储 磁盘是广为应用的保存大量数据的存储设备&#xff0c;存储数据的数量级可以达到几百到几千千兆字节&#xff0c;而基于RAM的存储器只能有几百或几千兆字节。不过&#xff0c;从磁盘上读信息的时间为毫秒级&#xff0c;比从DRAM读慢了10万倍&#xff0c;比从SRAM读慢了…

《剑指 Offer》专项突破版 - 面试题 79 ~ 84 : 详解回溯法(C++ 实现)

目录 一、回溯法的基础知识 二、集合的排列、组合 面试题 79 : 所有子集 面试题 80 : 包含 k 个元素的组合 面试题 81 : 允许重复选择元素的组合 面试题 82 : 包含重复元素集合的组合 面试题 83 : 没有重复元素集合的全排列 面试题 84 : 包含重复元素集合的全排列 一、…