当前位置: 首页 > news >正文

9.3.3网络原理(网络层IP)

一.报文:

1.4位版本号:IPv4和IPv6(其它可能是实验室版本).

2.4位首部长度:和TCP一样,可变长,带选项,单位是4字节. 

3.8位服务类型 

4.16位总长度:IP报头 + IP载荷

传输层是不知道载荷长度的,需要网络层来计算.

IP报文 - IP报头 = IP载荷 = TCP报文

TCP载荷 = IP载荷(TCP报文) - TCP报头

5.16位标识,3位标志位和13位偏移量共同表示IP数据报拆包组包的过程.

16位标识:拆出的多个包,16位标识是相同的.

13位偏移量:区分先后顺序,前一个包片偏移小,后一个大.

3位标志位:一个不用,一个表示是否允许拆包,最后一个表示结束标记(为0表示最后一个包).

6.8位生存时间(TTL)

单位是次,

有初始值(32/64/128),

每经过一个路由转发TTL 减1,

减到0(说明目标地址不存在)就丢弃

7.8位协议: 传输层使用哪种协议(TCP/UDP/KCP......)

8.16位首部校验和:只需校验IP首部即可,载荷部分有传输层自己的校验.

二.IP地址

1.IP地址:一个32位整数(4字节),使用点分十进制,使用三个点分出四段,每段表示一个字节(8个bit位)的大小(0~255)(无符号).

2.IP地址不够用的三种处理方法:

a.动态分配IP地址(DHCP):需要上网就分配IP,否则不分配.

b.NAT机制(网络地址转换):把IP地址分为内网IP和外网IP两大类.

1)内网IP:在一个局域网内不能重复.

10.*

172.16.* ~ 172.31.*

192.168.*

2)外网IP:不能重复.

3)要想进行网络通信,就要有一个带有外网IP的设备进行中转,此时就涉及到NAT机制,当数据报到达路由器的时候,路由器会将自己的外网IP替换掉原IP(内网IP),服务器不知道具体是那个主机和自己通信,只知道发送数据报的路由器的外网IP(只知道大概的范围,不知道具体的设备).对于NAT设备(路由器),触发NAT的时候会维护一个映射表.

4)NAT的缺点:

a)效率不高.

b)非常繁琐.

c)不方便自己访问局域网内的设备.

5)NAT的有点:纯软件实现.

c.IPv6:

1)IPv4:4字节,2^32(41亿9千万).

2)IPv6:16字节,2^128.

三.关于IP地址其它知识点:

a.IP地址的组成:

1)网络号:

2)主机号:

规定:同一个局域网内,网络号必须相同,主机号必须不同.不同的局域网,网络号必须不同.

b.IP地址中网络号和主机号的区分:

使用子网掩码来区分.

 

c.特殊IP地址:

1)将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网.

2)将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据报(只能使用UDP,不能使用TCP).

3)127.*的IP地址用于本机还回(loop back)测试,通常是127.0.0.1.

4)本机还回主要用于本机到本机的网络通信(系统内部未来性能,不会择网络的方式传输),对于开发网络通信的程序而言,常见的开发方式都是本机到本机的网络通信.

四.路由选择:

每个路由器内部有一个数据结构,称为路由表,数据报到达路由器的时候,就需要查询路由表(问路),如果查到了,就可以直接按照这个方向继续转发,如果没查到路由器会给一个默认的方向(下一跳地址),沿着默认的方向,往往走到上级路由器.

 

相关文章:

9.3.3网络原理(网络层IP)

一.报文: 1.4位版本号:IPv4和IPv6(其它可能是实验室版本). 2.4位首部长度:和TCP一样,可变长,带选项,单位是4字节. 3.8位服务类型 4.16位总长度:IP报头 IP载荷 传输层是不知道载荷长度的,需要网络层来计算. IP报文 - IP报头 IP载荷 TCP报文 TCP载荷 IP载荷(TCP报文) …...

代码随想录算法训练营第四十八天| LeetCode121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III

121. 买卖股票的最佳时机 题目描述: 121. 买卖股票的最佳时机. 解法 dp class Solution(object):def maxProfit(self, prices):if not prices:return 0dp0 0# 0表示不持有股票,1表示持有股票dp1 0-prices[0]for i in range(1,len(prices)):# 当前没有股票# 两…...

C++新经典10--vector以及其使用

vector vector类型是一个标准库中的类型,代表一个容器、集合或者动态数组这样一种概念。既然是容器,那就可以把若干个对象放到里面。当然,这些对象的类型必须相同。简单来说,可以把一堆int型数字放到vector容器中去,复…...

std : : vector

一.简介 std::vector 的底层实现通常基于动态数组(dynamic array),它是一种连续分配的内存块,允许元素的快速随机访问。下面是 std::vector 的一些关键特点和底层实现细节: 连续内存块:std::vector 内部使…...

AJAX学习笔记8 跨域问题及解决方案

AJAX学习笔记7 AJAX实现省市联动_biubiubiu0706的博客-CSDN博客 跨域:指一个域名的网页去请求另外一个域名资源.比如百度页面去请求京东页面资源. 同源与不同源三要素:协议,域名,端口 协议一致,域名一致,端口一致.才算是同源.其他一律不同源 新建项目测试: 1.window.open();…...

webhook--详解(gitee 推送)

一、简介 webhook 是一种基于 HTTP 的回调函数,可在 2 个应用编程接口(API)之间实现轻量级的事件驱动通信。是一种新型的前后端交互方式,一种对客户端-服务器模式的逆转,在传统方法中,客户端从服务器请求数…...

高速路自动驾驶功能HWP功能定义

一、功能定义 高速路自动驾驶功能HWP是指在一般畅通高速公路或城市快速路上驾驶员可以放开双手双脚,同时注意力可在较长时间内从驾驶环境中转移,做一些诸如看手机、接电话、看风景等活动,该系统最低工作速度为60kph。 如上两种不同环境和速度…...

Leetcode113. 路径总和 II

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 官方题解:力扣(LeetCode)官网 - 全…...

分布式锁之redis实现

docker安装redis 拉取镜像 docker pull redis:6.2.6 查看镜像 启动容器并挂载目录 需要挂在的data和redis.conf自行创建即可 docker run --restart always -d -v /usr/local/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/docker/redis/data:/dat…...

Idea中如何在一个项目中引入其他子模块?

首先在Settings打开Project Structure,然后找到Modules,点击加号点击import module,将需要引进的module引进来。 然后点击Artifacts 可以看到比如说day22…这个是我现在的项目,day16是我需要引入的。那么就在红色横线上面右键点第…...

UDP协议概述

传输层里比较重要的两个协议,一个是 TCP,一个是 UDP。TCP 是面向连接的,UDP 是面向无连接的。 所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结…...

Python-tracemalloc-跟踪内存分配

tracemalloc 模块是一个用于对 python 已申请的内存块进行debug的工具。它能提供以下信息: 定位对象分配内存的位置 按文件、按行统计python的内存块分配情况: 总大小、块的数量以及块平均大小。 对比两个内存快照的差异,以便排查内存泄漏 显示前10项 显示内存…...

02 CSS技巧

02 CSS技巧 clip-path 自定义形状&#xff0c;或者使用自带的属性画圆等circle HTML结构 <body><div class"container"></div> </body>CSS结构 使用*polygon*自定义形状 .container {width: 300px;height: 300px;background-color: re…...

Yarn资源调度器

文章目录 一、Yarn资源调度器1、架构2、Yarn工作机制3、HDFS、YARN、MR关系4、作业提交之HDFS&MapReduce 二、Yarn调度器和调度算法1、先进先出调度器&#xff08;FIFO&#xff09;2、容量调度器&#xff08;Capacity Scheduler&#xff09;3、公平调度器&#xff08;Fair …...

android上架备案公钥和md5获取工具

最近很多公司上架遇到了一个问题&#xff0c;就是要提供app的备案证明&#xff0c;现在android上架都需要备案了&#xff0c;但是我们的证书都是通过工具生成的&#xff0c;哪里知道公钥和md5那些东西呢&#xff1f;无论安卓备案还是ios备案都需要提供公钥和md5。 包括ios的备案…...

SpringBoot系列(12):SpringBoot集成log4j2日志配置

最近项目上有使用到log4j2日志模板配置&#xff0c;本文简单总结一下之前的学习笔记&#xff0c;如有纰漏之处&#xff0c;请批评指正。 1. log4j2日志依赖 使用log4j2日志模板时&#xff0c;需要引入相关依赖&#xff0c;下边的两种依赖方式均可。 1.1 使用sl4j依赖时 <…...

HTML事件列表

鼠标事件 属性描述DOMonclick当用户点击某个对象时调用的事件句柄。2oncontextmenu在用户点击鼠标右键打开上下文菜单时触发ondblclick当用户双击某个对象时调用的事件句柄。2onmousedown鼠标按钮被按下。2onmouseenter当鼠标指针移动到元素上时触发。2onmouseleave当鼠标指针…...

并发-Executor框架笔记

Executor框架 jdk5开始&#xff0c;把工作单元与执行机制分离开来&#xff0c;工作单元包括Runable和Callable&#xff0c;执行机制由Executor框架来提供。 Executor框架简介 Executor框架的两级调度模型 Java线程被一对一映射为本地操作系统线程 java线程启动会创建一个本…...

【C进阶】分析 C/C++程序的内存开辟与柔性数组(内有干货)

前言&#xff1a; 本文是对于动态内存管理知识后续的补充&#xff0c;以及加深对其的理解。对于动态内存管理涉及的大部分知识在这篇文章中 ---- 【C进阶】 动态内存管理_Dream_Chaser&#xff5e;的博客-CSDN博客 本文涉及的知识内容主要在两方面&#xff1a; 简单解析C/C程序…...

深入理解 JVM 之——字节码指令与执行引擎

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 类文件结构 Write Once&#xff0c;Run Anywhere 对于 C 语言从程序到运行需要经过编译的过程&#xff0c;只有经历了编译后&#xff0c;我们所编写的代码才能够翻译为机器可以直接运行的二进制代码&#x…...

C++:vector

目录 一、关于vector 二、vector的相关函数 三、相关函数的使用 ①构造函数 ②size ③[] ​编辑 ④push_back ⑤迭代器iterator ⑥reserve ⑦resize ⑧find ⑨insert ⑩erase ⑪sort 一、关于vector vector比较像数组 观察可知&#xff0c;vector有两个模板参数…...

Android Automotive编译

系统准备 安装系统 准备一台安装Ubuntu系统的机器&#xff08;windows系统的机器可以通过WSL安装ubuntu系统&#xff09; 安装docker 本文使用docker进行编译&#xff0c;因此提前安装docker。参考网络链接安装docker并设置为不使用sudo进行docker操作。 参考链接&#xff…...

什么是50ETF期权开户条件,怎么开期权交易权限?

50ETF期权是指上证50ETF期权&#xff0c;标的物是上证50ETF&#xff0c;代码是&#xff08;510500&#xff09;&#xff0c;期权是一种在上证50ETF基础上进行衍生品交易的金融工具&#xff0c;下文科普什么是50ETF期权开户条件&#xff0c;怎么开期权交易权限&#xff1f;本文来…...

React 从入门到精通——本文来自AI创作助手

React是一个流行的JavaScript库&#xff0c;用于构建用户界面。以下是React入门到精通的步骤&#xff1a; 入门 安装React 你可以在npm上下载React包&#xff0c;也可以使用其他包管理器。首先需要安装node.js&#xff0c;然后使用以下命令安装React&#xff1a; npm insta…...

【51单片机实验笔记】前篇(三) 模块功能封装汇总(持续更新)

文章目录 通用函数public.hpublic.c 延时函数delay.hdelay.c LED模块数码管模块smg.hsmg.c LED点阵模块独立按键模块矩阵按键模块外部中断模块定时器模块串口通讯模块ADC模块PWM模块 通用函数 包含常用头文件&#xff0c;宏定义&#xff0c;自定义类型&#xff0c;函数工具等。…...

Excel VSTO开发4 -其他事件

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 4 其他事件 针对插件的事件主要有Startup、Shutdown这两个事件&#xff0c;在第2节中已经讲解。在开发窗口中&#xff0c;选择对象…...

语音识别数据的采集方法:基本流程数据类型

“人工智能是一种模仿人类功能的产品。数据采集的方法需要针对特定的场景需求。”—–Mark Brayan (澳鹏CEO) 我们一直说&#xff0c;对于一个高质量的人工智能产品离不开高质量的训练数据。对于不同的人工智能我们需要不同的数据对其训练。要采集正确的数据去训练特定的模型才…...

oracle数据库给用户授权DBA权限Oracle查看哪些用户具有DBA权限

oracle数据库给用户授权DBA权限 步骤一&#xff1a;以sysdba身份登录到Oracle数据库 在授予DBA权限之前&#xff0c;我们首先要以sysdba身份登录到Oracle数据库。使用以下命令登录&#xff1a; sqlplus / as sysdba步骤二&#xff1a;创建用户&#xff08;如有用户跳过&#…...

024-从零搭建微服务-系统服务(六)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;https://gitee.com/csps/mingyue 源码地址&#xff08;前端&#xff09;&#xff1a;https://gitee.com/csps…...

Arduino驱动TCS3200传感器(颜色传感器篇)

目录 1、传感器特性 2、硬件原理图 3、控制器和传感器连线图 4、驱动程序 TCS3200颜色传感器是一款全彩的颜色检测器,包括了一块TAOS TCS3200RGB感应芯片和4个白色LED灯,TCS3200能在一定的范围内检测和测量几乎所有的可见光。TCS3200有大量的光检测器,每个都有红绿蓝和清…...

做网站开发学什么语言/关键词搜索排名推广

ArrayList遍历&#xff1a;取出ArrayList集合中的数据方式一&#xff1a;for循环方式二&#xff1a;增强for循环&#xff1a;foreach方式三&#xff1a;Iterator&#xff1a;迭代器方式四&#xff1a;ListIterator&#xff1a;双向迭代器免费视频教程推荐&#xff1a;java在线教…...

岳阳网站建设/什么是百度竞价排名服务

通过api使用sparksql 实现步骤&#xff1a; 1&#xff09;打开scala IDE开发环境&#xff0c;创建一个scala工程 2&#xff09;导入spark相关依赖jar包 3&#xff09;创建包路径以object类 4&#xff09;写代码 代码示意&#xff1a; package cn.tedu.sparksql import …...

乐清做网站建设/如何找外包的销售团队

网址栏输入 Chrome 黑色模式指令&#xff1a; chrome://flags/#enable-force-darkdefault——默认白色 enabled——启用黑色...

毕业设计wordpress/seo基础课程

2017年高考已经圆满结束&#xff0c;出国留学网高考频道第一时间为大家提供2017自贡高考成绩查询系统已开通 &#xff0c;更多高考分数线及高考志愿填报信息请关注我们网站的更新&#xff01;点击下面图片即可进入四川省教育考试院查询2017年高考成绩&#xff1a;开通时间&…...

如何给wordpress文章排版/网站域名查询ip

使用xgboost多分类模型识别手写数字当然啦&#xff01; 在许多网站上都有着类似的数据。安装xgboost大家可以去这个网站是python外包库的下载网站找到xgboost下载&#xff0c;然后打开cmd输入pip install xgboost下载路径。既可以了。在安装好了后。就可以提取训练集和测试集了…...

如今做哪个网站能致富/视频外链在线生成

http://www.opengpu.org/forum.php?modviewthread&tid7164&extrapage%3D1火影忍者鸣人 疾风传 终级风暴2以超越动画作为目标的游戏视觉效果。去年&#xff0c;被看作达到动画般的画面品质的[火影忍者鸣人终级风暴]&#xff0c;与其说是震惊了游戏界&#xff0c;不如说…...