波奇学Linux:ip协议

news2024/11/26 4:42:44

ip报文解析 

 4位版本:一般是4表示通信的ip版本号是ipv4还是ipv6

4位首部长度:数值*4=ip报头长度 取值范围为[0101,1111], 报头长度就是[5*4=20,15*4=60]

8位服务类型(TOS):4位TOS位段和3位优先权字段和一位保留字段

4位TOS相当于给路由器转发路径选择提供策略,只能选择一个,最小延时(速度快),最大吞吐量(数据多),最高可靠性(避免丢包),最小成本。

16位总长度:表示ip报文整体长度

8位生存时间:报文在网络中生存时间,表示报文可以经过路由转发的次数,一般为64 每被转发一次,数字减1,防止出现路由循环。

8位协议:把ip的有效载荷交给上层的UDP/TCP等哪个协议

16位首部校验和:校验数据报 头部 在传输中是否出错。

32位源ip地址/32位目的ip地址:源ip和目的ip

ip报头是c语言的结构体

报头和有效载荷如何分离?

固定长度和自描述字段结合,读取20个字节,再读取首部长度计算出报头长度,报头长度-20字节,剩下的部分即为选项的长度。

网络底层是字节流吗?

不是,由ip协议可知实际上是报文流,tcp上层经过处理才变成了字节流的模样。

套接字socket的ip和端口号分别哪层报文?

ip地址保存在ip报文中,端口号保存在tcp/udp报文中。在路由过程中,只会用到网路层,看不到端口号。

为什么应用成要把点分十进制的ip转为4个字节?

ip报文ip就是4个字节

ip地址组成

ip地址=网络号+主机号

网段号:保证相互连接的两个网段具有不同的标识

主机号:同一个网段内,主机有相同的网络号,有不同的主机号

路由器本质上是也是一台主机,也有自己的ip地址,一般为主机号为1

路由器至少连接两个子网,路由器也就相当于同时在两个子网中,立即路由器有多个ip地址,网络号不一样,主机号为1

路由器的功能:ip报文转发,构建子网(给子网内部的设备分配ip地址)

DHCP技术:自动给子网内新增主机节点分配ip地址,避免手动管理ip的不便。

路由器带有DHCP功能, 可以看做一个DHCP服务器。

  过去提出一种划分ip的方法

局限性:浪费ip地址

申请了一个B类网络,一个子网可以支持2^16-2主机允许,但实际上不可能达到这个数量。

CIDR解决方案

(Classless Interdomain Routine)

引入一个额外的子网掩码(subnet mask)来区分网络号和主机号

子网掩码也是一个32位的正整数,通常用一串0结尾

ip地址和子网进行按位与操作,得到的结果就是网络号

网络号和主机号划分与这个ip地址是A类还是B类,C类无关

通过子网掩码计算网络号

主机数为0,和255的不分配给主机

140.252.20.0作为网络号代表局域网

140.252.20.255作为广播用于给所有主机发数据包

子网掩码如何解决问题ip浪费问题?

网络号的位数不再固定,当子网掩码的1变多时,网络号变长,ip地址变少。0变多时,网络号变短,ip地址变少

如当子网掩码变255.255.255.240(ff ff ff f0)

网络号就变成 140.252.20.60

子网地址范围 140.252.20.64~140.252.20.79

子网掩码在路由器中,当ip报文转发时,路由器会子网掩码计算出网络号

增加ip利用上限

动态分配ip地址:只给接入网络的设备分配ip地址,同一个mac地址的设备,每次接入互联网中,得到的ip地址不一定是相同的

ipv6:新的协议,用16个字节128来表示ip地址(ipv4 是 4个字节 32位)

NAT技术

公网ip和私有ip

ip资源划分:

不同国家有国际路由器,且有地址划分 

将源ip替换成每个路由器的wan口ip 

NAT计数,私有ip不断被替换

路由

mac地址

区分同一局域网的不同的主机

ARP:ip地址转换为mac地址

arp报文

nat:将私有ip转为公有ip

nat在替换时,不仅仅会替换ip还会替换ip地址

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

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

相关文章

Redis快速入门操作

启动Redis 进入命令行客户端 字符串命令常用操作(redis默认使用字符串来存储数据) 列表(Lists)常用操作 集合(Sets)常用操作 (无序集合且元素不可重复) 有序集合(So…

windows和虚拟机互传文件

在虚拟机中设置共享文件夹 操作方法:打开VMware–>虚拟机–>设置–>选项–>共享文件夹(见下图),大家在共享文件夹当中就可以把Windows当中的D盘或者其它盘共享到虚拟机中。比如我就是将D盘和E盘共享到了虚拟机中。 共…

密码学 | 椭圆曲线密码学 ECC 入门(三)

目录 7 这一切意味着什么? 8 椭圆曲线密码学的应用 9 椭圆曲线密码学的缺点 10 展望未来 ⚠️ 原文地址:A (Relatively Easy To Understand) Primer on Elliptic Curve Cryptography ⚠️ 写在前面:本文属搬运博客,自己留…

pip下载包opencv出错(报错failed building wheel for opencv-python解决方法)

文章目录 1 报错2 原因3 解决方法参考 1 报错 ERROR: Could not build wheels for opencv-python, which is required to install pypr2 原因 版本不兼容的问题,当使用pip install opencv-python命令安装的是最新版本,当前python版本不支持。需要安装当前版本pyth…

「GO基础」在Windows上安装Go编译器并配置Golang开发环境

文章目录 1、安装Go语言编译程序1.1、下载GoLang编译器1.2、安装GoLang编译器 2、配置Golang IDE运行环境2.1、配置GO编译器2.1.1、GOROOT 概述2.1.2、GOROOT 作用2.1.2、配置 GOROOT 2.2、配置GO依赖管理2.2.1、Module管理依赖2.2.2、GOPATH 管理依赖 2.3、运行GO程序2.3.1、创…

Embedding例子:简单NN网络、迁移学习例子

一、简单例子:构造简单NN网络生成Embedding 1、pytorch例子 2、tensorflow例子 # 1导入模块 import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Embedding import numpy as np# 2构建语料库 corpus[[…

配置静态IP【windows+ubuntu】

Windows配置静态IP 如下图所示,通过“网络和Internet进入设置界面”,依次操作“更改适配器选项”->选择要配置静态ip的网络“属性”->选择IPV4的属性->配置静态ip的地址、子网掩码、默认网关。默认网关应和路由器上的设置保持一致。 Ubuntu配…

2024红明谷杯——Misc 加密的流量

2024红明谷杯——Misc 加密的流量 写在前面: 这里是贝塔贝塔,照例来一段闲聊 打比赛但赛前一波三折,又是成功签到的一个比赛 说起来比赛全名叫红明谷卫星应用数据安全场景赛,但好像真的跟卫星的关系不大,没有bin方…

Redis中的订阅发布(三)

订阅发布 发送消息 当一个Redis客户端执行PUBLISH 命令将消息message发送给频道channel的时候,服务器需要执行以下 两个动作: 1.将消息message发送给channel频道的所有订阅者2.如果一个或多个模式pattern与频道channel相匹配,那么将消息message发送给…

基于SpringBoot+Vue的便利店管理系统 免费获取源码

项目源码获取方式放在文章末尾处 项目技术 数据库:Mysql5.7/8.0 数据表:11张 开发语言:Java(jdk1.8) 开发工具:idea 前端技术:vue 后端技术:SpringBoot 功能简介 (有文档) 项目获取关键字&#…

GUI02-在窗口上跟踪并输出鼠标位置(Win32版)

(1) 响应 WM_MOUSEMOVE 消息获得鼠标位置; (2) 响应 WM_PAINT 将鼠标位置输出到窗口中; (3) 学习二者之间的关键步骤:调用 InvalidateRect() 以通知窗口重绘。 零. 课堂视频 在窗口上跟踪输出鼠标位置-Win32版 一、关键知识点 1. BeginPaint…

Syncovery for Mac:高效文件备份和同步工具

Syncovery for Mac是一款专为Mac用户设计的文件备份和同步工具,凭借其高效、安全和易用的特点,深受用户好评。 Syncovery for Mac v10.14.2激活版下载 该软件具备强大的备份功能,支持多种备份方案和数据格式,用户可以根据需求轻松…

vscode自动生成返回值的快捷键

vscode中类似idea的altenter功能,可以添加返回值 idea中是Introduce local variable, vscode中按下command.(句号) 然后选extract to local variable或者 Assign statement to new local variable都行, 光标在分号前如图: 光标在…

维护SQLite的私有分支(二十六)

返回:SQLite—系列文章目录 上一篇:SQLite、MySQL 和 PostgreSQL 数据库速度比较(本文阐述时间很早比较,不具有最新参考性)(二十五) 下一篇:SQLite数据库中JSON 函数和运算符 1…

前端css中transition的使用

前端css中transition的使用 一、前言二、transition的4个属性三、例子1.源码12.源码1运行效果 四、结语五、定位日期 一、前言 CSS中的transition(过渡),根据字面意思就可以理解成一种变化状态的过程。当我们有一个方形,我们想让…

深度学习数据处理——对比标签文件与图像文件,把没有打标签的图像文件标记并删除

要对比目录下的jpg文件与json文件,并删除那些没有对应json文件的jpg文件,这个在深度学习或者机器学习时常会遇到。比如对一个数据集做处理时,往往会有些图像不用标注,那么这张图像是没有对应的标签文件的,这个时候又不…

MySQL 的事务概念

事务概念 MySQL事务是一个或者多个的数据库操作,要么全部执行成功,要么全部失败回滚。 事务是通过事务日志来实现的,事务日志包括:redo log和undo log。 事务状态 事务有以下五种状态: 活动的部分提交的失败的中止的…

模拟相机拍照——对文档进行数据增强

一. 背景 假如我们有一个标准文件,我们对其进行文字识别、版面分析或者其他下游任务就比较容易。然而,当图片是手机拍照获取的,图片中往往有阴影、摩尔纹、弯曲。 那么,如何通过标准的文档,获得类似相机拍照的图片呢&…

24华中杯C题10页论文+代码+思路

问题1:估算传感点的曲率 问题2:重构平面曲线 问题3:重构平面曲线并分析误差 详细资料如图所示 10页论文 需要的宝子们:2024华中杯A题思路数据可执行代码参考论文https://mbd.pub/o/bread/ZZ6am5dw 2024华中杯B题思路数据可执行…

C语言简单的数据结构:双向链表的实现

目录: 1.双向链表的结构和初始化1.1双向链表的结构1.2双向链表的初始化 2.双向链表的相关操作2.1双向链表的尾插、打印和头插2.11双向链表的尾插2.12双向链表的打印2.13双向链表的头插 2.2双向链表的尾删和头删2.21双向链表的尾删2.22双向链表的头删 2.3双向链表查找…