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

网络层——IP

IP地址

结构:
由32位二进制数组成,通常用点分的形式被分为四个部分,每个部分1byte,最大值为255。

从功能的角度看,ip地址由两部分组成,网络号和主机号。网络号标识了ip所在的网段,主机号标识了在该网段中的唯一的一台主机。二者的区分又需要与掩码配合使用,例如192.168.1.2/24,24表示掩码255.255.255.0,将掩码与ip进行按位与操作,获得了192.168.1.0即为该主机所在网段。

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

将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包

网段的划分:

假如一个组织申请到的网段是122.1.1.0/24,组织有三个部门,A部门有125台主机需要上网,B,C部门各有60台主机上网。首先将网段分为两个部分122.1.1.128/25和122.1.1.0/25,这两个网段都可以容纳126台主机(有一个网络号和一个广播地址),将第一个网段分配给A部门,再对第二个网段划分,分为122.1.1.0/26和122.1.1.64/26,这两个网段刚好够B,C部门使用。

分类:

私有ip和公网ip

因为公网ip的最大数量只有42亿多,数量远远不够,需要使用NAT技术解决这个问题。简单来讲一下NAT技术,运营商路由器连接了公网,我们在连接运营商的路由器后,就会加入到该路由器所组织的一个局域网中,这个局域网中的ip都是私有ip。当有主机要访问公网的服务器时,会在NAT网关建立映射(NAT网关会维护一张映射表,将源ip(私有ip),源端口和访问的外网服务器ip记录下来),将ip的请求报文中的源ip替换为公网ip,相当于运营商替我们访问了外网的服务器然后将返回的响应根据映射表发送给私有ip。

注意:

私有ip不能直接访问公网ip;

不同局域网间的私有ip可以有相同;

路由器有两种端口,WAN连接公网(也可能是上一层路由器组织的局域网),LAN连接局域网

IP协议格式

  • 版本:IP的版本,4就代表了IPv4
  • 首部长度:该值的大小*4就是IP首部的字节数,因此首部长度最大是15*4=60byte
  • 服务类型(Type Of Service): 3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0). 4位 TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个
  • 总长度:整个报文的字节数大小
  • 标识:主机发送的报文的唯一标识,如果主机发送的报文被分片,那么所有的分片的标识都是相同的
  • 标志:标志的第一位保留;第二位是0表示可以分片,是1表示禁止分片;如果进行分片,所有分片的报文除了最后一个第三个标志位是1,其余的都是0,用来标识分片报文的结束 
  • 片偏移:是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前分片 在原报文中处在哪个位置. 实际偏移的字节数是这个值 * 8 得到的. 因此, 除了最后一个报文之外, 其他报 文的长度必须是8的整数倍(否则报文就不连续了)
  • 生存时间:表示报文可以进行的最大跳数,每次递交到路由器后都会减1,如果路由器收到生存时间小于1的报文会直接丢弃
  • 协议:表示上层协议
  • 16位头部校验和: 使用CRC进行校验, 来鉴别头部是否损坏
  • 32位源地址和32位目标地址: 表示发送端和接收端

为什么分片?分片的影响有什么?

因为数据链路层的有效载荷不能太大,最大不超过1500byte,有效载荷越大,数据在传输的过程中越容易发生数据碰撞。分片后,有一个分片丢失,整个报文都会丢失,所以不建议分片。

路由

路由是指数据在复杂的网络中找到通往目的主机的路线。

路由的实现离不开路由器。

路由器其实就是一个子网的主机,其ip一般都是该子网的网络号,有两个功能:实现ip报文的转发,构建子网(局域网)。

路由器自己会维护一张路由表,路由器收到数据包后会查看目的ip,将该ip依次与Genmask作按位与运算,然后与Destination对比,如果符合就直接发送给目标主机或者路由器,如果不符合就发送给默认路由。

假设某主机上的网络接口配置和路由表如下:

假如有一个数据包目的ip是192.168.10.8,就会将该数据包交给端口eth0;

假如有一个数据包目的ip是10.96.0.155,路由器发现没有端口对应这个ip,就交给default的端口eth0

ICMP协议

ICMP协议是介于网络层和传输层之间的协议,ping命令就是基于ICMP的,可以诊断网络的连通性,验证两主机间是否可达。

有些面试官可能会问: telnet是23端口, ssh是22端口, 那么ping是什么端口? 

端口号是传输层的概念,而ping命令是基于ICMP的,是在网络层的概念,不存在什么端口号。

http://www.lryc.cn/news/454559.html

相关文章:

  • 随笔 漫游互联网
  • 8.9K Star,开源自托管离线翻译引擎
  • MySQL基础之DML
  • 男单新老对决:林诗栋VS马龙,巅峰之战
  • Java如何判断堆区中的对象可以被回收了?
  • .Net 6.0 监听Windows网络状态切换
  • UE4 材质学习笔记01(什么是着色器/PBR基础)
  • 算法 | 位运算(哈希思想)
  • 前端提升方向
  • 深度学习基础—残差网络ResNets
  • 鸿蒙ArkUI实战开发-主打自研语言及框架
  • HDU Sit sit sit (区间DP+组合数)
  • Qt开发技巧(十四)文字的分散对齐,设置动态库路径,进度条控件的文本,文件对话框的卡顿,滑块控件的进度颜色,停靠窗体的排列,拖拽事件的坑
  • VirtulBOX Ubuntu22安装dpdk23.11
  • 线性代数书中求解齐次线性方程组、非齐次线性方程组方法的特点和缺陷(附实例讲解)
  • 初识算法 · 双指针(2)
  • React常见面试题目
  • 图解网络OSI模型与TCP/IP
  • 15分钟学 Python 第31天 :Web Scraping
  • 前端编程艺术(2)----CSS
  • 前端的全栈混合之路Meteor篇(二):RPC方法注册及调用
  • 重学SpringBoot3-集成Redis(三)之注解缓存策略设置
  • 【C++11】新特性
  • 【游戏模组】重返德军总部2009高清重置MOD,建模和材质全部重置,并且支持光追效果,游戏画质大提升
  • CGLib动态代理和JDK动态代理Demo、ASM技术尝鲜
  • [C++]使用纯opencv部署yolov11-pose姿态估计onnx模型
  • python you-get下载视频
  • SCUC博客摘录「 储能参与电能市场联合出清:SCUC和SCED模型应用于辅助服务调频市场(IEEE39节点系统)」2024年10月6日
  • Git分支-团队协作以及GitHub操作
  • 力扣刷题 | 两数之和