首页 > 其他分享 >IP协议讲解

IP协议讲解

时间:2024-11-06 22:18:18浏览次数:3  
标签:ip 协议 公网 IP 报文 讲解 分片 路由器

发送报文->我们需要进行路径选择

主机和路由器统称为节点

IP协议:解决什么问题呢?

提供一种能力,将数据包跨网络从B发送到A主机

目标地址=所在城市+目标景点

IP地址=目标网络+目标主机

在学习网络时认识

1.网络不是凭空产生的,是有人为我们建设的

2.网络世界时精心设计的,像OS

IP报头

1.如何分离

4位首部长度 【0,60】标准报头大小20

16位总长度 = 4位首部长度(报头+选项) + 数据

2.如何分用

4位版本: IPV4 / IPV6

8位协议:发送方填充,对方识别,决定是用udp/tcp通信

​8位服务类型(Type Of Service): 3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0).4位TOS分别表示: 最小延时,最大吞吐量,最高可靠性,最小成本,这四者相互冲突,只能选择一个.对于ssh/telnet这样的应用程序,最小延时比较重要; 对于ftp这样的程序,最大吞吐量比较重要.

8位生存时间:报文经过路由器所经历的跳数,防止报文环路问题,当报文每经过一个路由器就将生存时间减减,为0,直接丢弃该报文

32位源IP:发送端IP

32位目的IP:目的端IP

16位标识 3位标志 13位片标识

数据链路层规定,单个数据帧不能太大

​​

mtu:最大传输单元 上图为1500字节,代表ip的报文不能超过1500字节

如果此时IP就要发送3000的报文,这就要求网络层ip学会,分片与组装,同层网络层发送方分片,接受层组装。

我们接下来谈的三个字段就是为了实现分片与组装

网络层ip的分片策略是无奈的,分片策越会使得丢包效率变得更高,1个报文分成10个报文去发,在传输途中如果丢了一片,接收方就无法组装,这时候就需要补发10个报文,使得传输效率遍变低

那么如何做到不分片呢,这时候就要去要求传输层

tcp发送报文,不能只按照接收方的缓冲区接收能力,去直接发一整个大报文,而是按照自己的切片可能性,设置自己报文的大小。

如果mtu为1500,在不考虑ip与tcp报文中的选项,他们的报头都是20字节,也就是说传输层发送的最大数据大小就是1460,它叫做MSS(最大数据段尺寸)

16位标识

如果报文被分片了,16位标识都是相同的

3位标记

第一位1表示保留;留给后面用

第二位1表示禁止分片:表示如果报文超过了mtu,该报文应该被直接丢弃

第三位1表示“更多分片”:分片的最后一片为0,表示一个报文分片的最后一个分片,在此分片之前该值都为1

13位片偏移

分片相对于原始IP的开始处的偏移,表示分片在原报文的所处的哪个位置,要*2的3次方得到相对于报文的实际位置

尝试下分片

例如一个ip报文3000字节,mtu为1500。

​​​

尝试下组装
0.你怎么知道上层报文分片

看到报文的3位标志,更多分片为1,证明分片,如果是结尾分片,查看片偏移。

按照16为表示,收集相同报文的分片

1.首先我得保证分片收全了

a.首先第一个切片的13位片偏移为0,如果切片中没有13位片偏移为0的切片,则没有头部切片,

b.我们按照报文中16位总长度是知道报文总大小的,13位片偏移*2的3次方,再加上头部切片报文总大小,就可以知道下一个切片的片偏移应该为多少,

下一个切片再用,第二个切片的有效载荷大小加上13为片偏移找到,依次类推 (第二个切片是多加了一个报头的)

最后一个切片依靠他的3位标志第三位为0。

2.正确按序组合

按照片偏移与3位标志即可

网段划分(重要)

​​​

路由器既属于上一个子网,又属于下一个子网,主机标识往往是1

例如:我们的路由器一端是自己构建的子网,另一端是运营商的子网

路由器不仅构建子网,还对子网中的IP进行分配管理(DHCP)

1.网段划分是什么?

​​

然而我们根本不会存在子网有这么多的情况

新的划分方案CIDR

IP地址与子网掩码按位与得到网络号

子网掩码会在路由表中

像B类地址,8位主机号根本用不到,让主机号的前8位作为网络号的一部分,这样就可以在一个B类网络再构建出2的8次方子网。

子网掩码就提高了网络号的利用率

私有IP地址和公网IP地址

私有IP地址:构建局域网

公网IP地址:构建Internet

如果一个组织内部组建局域网,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);

2.为什么要设计网段划分?

1.提高定位和查找主机的效率

根据目标网络进行路由

运营商角色

2.内网ip不能出现在公网中,不同的子网ip允许重复,大大缓解了IP资源不足的问题.​

那么内网ip怎么达到公网呢?

任何一个内网路由器,在转发的时候会将报文中src ip地址替换成自己的WAN口ip。(NAT技术)重要

那么如何从路由器到我们这台主机呢?

我们知道我们源IP到达公网是由路由器进行更换的,但是路由器不仅仅做了替换,路由器还构建了一张NAT转化表,内网ip与公网ip的转换互为键值(一一对应)

所以路由器可以做到内网ip到公网ip的转换,同时做到了当接收报文时,将公网ip替换成内网ip,当报文返回时,就可以通过这张转化表原路返回。

路由器还有可能将端口号替换了

当一个子网内两台主机的不同进程的端口号相同时,如果路由器不去更改端口号,转换成的公网ip+端口号是相同的,因为此时公网ip是同一个路由器Wanc号

由于转换表需要一一对应,所以得更换到公网的端口号。

路由器映射关系很多

家庭路由器&&企业路由器

​​

NAT技术

NAT技术是解决IP不够用的主要手段,是路由器的必备技术

a.NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;

b.NAT路由器收到外部的数据时,又会把目标IP从202.244.174.37替换回10.0.0.10;

c.在NAT路由器内部,有一张自动生成的,用于地址转换的表;d.

当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

NAT技术的缺陷

1.由于NAT转换表是由内网主机向外网发送消息建立的,外网主机无法直接访问内网主机。

2.NAT设备出现异常,所有TCP通信都会断开

从家里出去的网是直接到公网吗?

大概率不是,要先到运营商的局域网中 ​

真实的网络情况: 公网+私网(家用网络和运营商私网)构建的网络拓扑结构​

3.怎么做到利用网段划分?

路由

ip=目标网络+目的主机

每经过一个路由器都会匹配一下网络号

route命令查看路由表

将目标ip与对应的掩码按位与再与Destination对比

当查看路由表之后没找到,会去default路由

由此可知,

网络层ip提供一种能力,将数据包跨网络从B发送到A主机,跨网络就是无数次局域网转发。

但是数据是怎么在局域网中转发的

数据链路层。。。

那么IP解决了什么问题呢?->IP解决的就是从哪去哪的问题。路径选择和路由的问题

传输层可靠性保护

而应用层只要考虑如何处理数据

标签:ip,协议,公网,IP,报文,讲解,分片,路由器
From: https://blog.csdn.net/bossface/article/details/143580937

相关文章

  • 基于微信小程序的智慧停车系统设计与实现(源码+springboot+uinapp+部署文档+讲解等)
    收藏关注不迷路!!......
  • javascript模块 (Module) 简介
    https://blog.csdn.net/chehec2010/article/details/119804381   随着ES6的出现,js模块已经成为正式的标准了。曾经为了解决js模块问题而发展起来的民间秘籍,requireJs(AMD)、SeaJs(CMD)、Node(CommonJs),已经或者不久的将来会成为历史。了解历史也是很重要的,因为正式标准就是......
  • 基于SpringBoot+Vue的学生档案管理系统(源码+LW+调试文档+讲解)
    背景及意义目的档案信息整合与存储:基于SpringBoot+Vue的学生档案管理系统,目的是将学生的各类档案信息进行整合和存储。包括学生的个人基本信息(姓名、性别、出生日期、民族、籍贯等)、学业信息(入学成绩、每学期各科成绩、考试排名、奖惩情况等)、家庭背景信息(家庭成员、......
  • 多校A层冲刺NOIP2024模拟赛18
    多校A层冲刺NOIP2024模拟赛18T1选彩笔(rgb)签到题,但是没签上。。。没想到三维前缀和,直接上了个bitset。就是直接二分答案,然后枚举这三维每维的区间的起点,前缀和查数量是否大于等于$K$即可,也可以把二分答案改为第一维的双指针,少一个$log$。T2兵蚁排序(sort)比T1还签......
  • CSP2024 前集训:NOIP2024加赛 2
    前言T2开太晚了,没打完,别的没怎么挂。哦对,T1以为埃筛复杂度是\(nlog^2\),实际上是\(n\ln(\ln(n))\),结果以为复杂度是错的,然后本地不开O2都飞快,我甚至还在惊叹本地竟然能跑\(5e9\)……还有我之前不知道树的直径的中点时唯一的……T1新的阶乘直接埃筛做完了。点击查......
  • 快速删除iPhone照片:释放你的空间,加速你的手机
    随着时间的推移,我们的iPhone往往会积累下大量的照片,这不仅占用了大量的存储空间,还可能影响手机的性能。如果你正寻找一种快速、高效的方法快速删除iPhone照片,以下的策略将会大有帮助。此外,本文还将介绍如何利用CleanMyPhone这一工具,以实现更加快速和系统的照片清理。理解存储......
  • C语言数据结构--详细讲解算法复杂度
    C语言数据结构-算法复杂度前言一、时间复杂度1.大O渐进表示法2时间复杂度的计算二、空间复杂度1.什么是空间复杂度2时间复杂度的计算总结前言我们都清楚计算机存储和组织数据是通过数据结构来实现的。当计算机对这些数据结构中的数据进行遍历等操作时,这个过程就......
  • 一种windows获取本机IPV4和IPv6的方法
    代码测试环境windows11编译器MSVC获取思路先遍历本机物理网卡,再遍历每块网卡上所有的IP使用效果ipv4ipv6说明说明说明之前有篇文章,也描述了windows获取本机IP的方法,实践测试发现并不是特别准确。文章地址:https://www.cnblogs.com/pandamohist/p/137564......
  • NOIP2024 模拟赛 #15 总结
    Larunatrecy:信心赛。赛时T1求中位数,想起前两天做过的[ABC203D]Pond,考虑了二分答案。看出二分答案后不会做了,罚坐\(20\)min。然后发现我傻逼了,选出一个区间翻转,可以通过钦定右端点,找到最优的左端点得到,神仙Heldivis就出过一道这样的题。写完后调了下二分边界过了大样......
  • 使用nvme-cli学习NVMe协议篇一:nvme id-ctrl
    本节最好搭配NVMe1.4协议5.15.2.2IdentifyControllerdatastructure(CNS01h)节享用https://nvmexpress.org/wp-content/uploads/NVM-Express-1_4c-2021.06.28-Ratified.pdfnvmeid-ctrl命令的空输出为如下,该命令的用途:向给定NVMe设备发送标识主控命令,并以人类可读或二进......