第4章-IP基本原理

目录

1. IP协议概述

1.1. 定义

1.2. 功能

1.3. IP网络的结构

1.4. IP头格式

2. IP地址和地址映射

3. IP包转发

4. 其他相关协议介绍


1. IP协议概述

1.1. 定义

        IP协议:IP协议是网际互连协议;

        工作层次:网络层;

        封装:IP头部封装;

        特点:不关心、不保证、不维护;不可靠的、无连接的;

        TCP/IP协议栈(协议堆叠):ARP、RARP、ICMP、IGMP;

1.2. 功能

        1)标识节点和链路-[标记]:分配全局唯一的网络号;

        链路-网段;节点-主机;

        2)寻址和转发-[确定]:路径;

        3)适应各种数据链路-[传递]

        MTU(Maximum Transfer Unit,最大传输单元):最大的IP报文,分片、重组;

        三层的地址到二层地址的映射

        例子:地图、学校找人

1.3. IP网络的结构

        "网段==范围"

        路由器直连PC机

        浪费资源,路由器每个接口都是不同的网段;

1.4. IP头格式

        1、长度

        20~60个字节不等;

        固定+可变;

        字节

        位(bit):是计算机存储的最小单位,"0100-4位";

        位数:计算机能一次处理数据的大小,32位、64位;Windows命令:dxdiag

        字节:计量单位,存储容量,1字节等于8位;例如,字母B;

        2、Versrion | IHL | Type of Service | Total Length

        Versrion:版本号,4或6;("ipconfig");

        IHL:头部长度;

        Type of Service(Tos):优先级,0~63,数字越大,优先级越高;

        场景:广域中的QoS用于流量控制、限制,发送先后顺序、传输率、带宽的大小;

        Total Length:总长度(IP头+数据);

3、Identification | Flags | Fragment Offest

        Identification:标识符,标识分片来自哪一个数据包;

        Flags:标志位;(0是关闭,1是开启)

        1:保留;2:标识数据包是否禁止分片;3:标识数据包是否为最后一个分片;

        Fragment Offset(片偏移):标识某个分片在整个数据包所处的位置或顺序;收发顺序的重组

        补充:

        数据包的分片:一个数据包切分成小数据包,进行分散、重组;传输层,网络层;

        MTU:最大传输单元;接口收发数据支持的单个包的最大长度;

        场景:以太网默认接口MTU1500B;PPPoE默认接口MTU1492B;

        为什么要有MTU?

        数据传输双方之间的协同同步

        4、Time to Live | Protocol | Header Checksum

        Time to Live(生存时间):标识数据包还能再经过几个路由器就已经到达生命的尽头;备注:每经过一个路由器进行减1处理,避免产生环路。("ping")

        Protocol(标识上层协议):封装与解封装,封装传输层头部,IP头部拆掉后是给谁?

        Header Checksum:头部校验和,数据包的差错检测;

        5、Source Address | Destination Address

        源地址、目的地址;

        6、Options | Padding

        Options:可选项;

        Padding(填充项):是4字节的倍数,若不是4的倍数,填充0,达到4个字节的倍数;例如1197就不行

2. IP地址和地址映射

        1、背景引入

        IP地址==门牌号

        IP地址 → 全球唯一 → 专门的机构管理(互联网数字分配机构IANA);

        资源紧缺:ip地址43亿 → 2001年耗尽 → 2022年285亿设备 → 2022年人口80亿;

2、IP地址的概述

        功能:IP寻址,数据包发送给谁?工作在网络层,逻辑地址;

        格式:32位长度,点分十进制(十进制取值范围:0~9)

        组成:网络位+主机位;

        "网络位长度和数字完全一致的地址属于同一网段",例如192.168.1.1 和 192.168.1.2

3、IP地址分类

        A类:大型全国或国际性企业;例如国际物流公司DHL

        B类:大型中型企业,6~65万个主机共享;例如苹果公司

        C类:小型组织、家庭用户、学校;例如机房教室;

        D类:媒体平台;例如直播平台;

        E类:不公开,留给科研机构使用;

        目的:是划分不同的网络规模;

        二分法思维:网络位越长,主机位越短;

4、特殊的IP地址

        ① 127.X.X.X

        定义:本地环回地址,用于标识本机;

        作用:测试本机操作系统中的TCP/IP协议工作是否正常;

        场景:127.0.0.1/无网卡

        ② 主机位全为0的地址

        定义:是网络地址,用于标识网段;

        例如:

        192.168.1.0是网络地址;

        172.168.1.0不是网络地址;

        ③ 主机位全1的地址(二进制的1)

        定义:本网段广播地址,标识广播范围;

        单播(1对1)、组播(1对多)、多播(1对所有)

        ④ 全网广播:255.255.255.255

        全网广播地址,全部网段的所有人;

        ⑤ 通配地址:0.0.0.0

        通配地址,任意IP地址,条件匹配,可以代表任何一个地址;

        例子:斗地主的癞子;

5、公网和私网地址

        公网地址:可以在互联网上寻址的地址,全球唯一,需要运营商分配(ISP),付费;

        私网地址:局域网内,本地随意使用,无法在互联网上寻址;

        自动私有地址:169.254.X.X;用于网段内部通信,无法出网段;

        补充说明:电脑网卡,IP地址模式设置自动获取,无DHCP服务器,自动寻址失败,产生169.254.X.X;

3. IP包转发

        1、ARP协议

        定义:地址解析协议,把IP地址解析为MAC地址;

        问题:IP数据包通过以太网发送时,链路层不能识别IP地址;

        网络层(32位IP地址)—链路层(48位MAC地址)

        工作机制

        ① 主机A广播请求发送ARP,询问主机B的IP对应的MAC地址;

        ② 主机B以单播响应回复A主机本机MAC地址;

        ③ A主机把B主机的IP地址和MAC地址的映射关系写入ARP缓存表;

        场景:arp -a

2、IP数据转发原理

        知识1:封装,完成3层封装后,进行第2层封装;

        知识2:网关(Geteway):本网段出口的IP地址;

        知识3:路由器:连接不同网段;交换机:数据发送给PC机;

        工作机制:

        ① 检查本机IP和目的IP是否一致;

        ② 处理:

        如果目的IP和本机IP属于同一网段,会直接查询目的IP的Mac地址,进行封装;

        如果目的IP和本机IP不属于同一网段,会查询网关IP地址的Mac地址,由路由器将IP包转发给目的主机,进行封装;

        补充:

        不同网段之间,能直接用ARP请求吗?

        不能,广播不能过路由器,路由器会隔离广播域;

        如果路由器不隔离广播,电脑能上网,所有机器都能收到,广播风暴。

4. 其他相关协议介绍

        1、RARP协议

        逆向ARP:逆向地址解析协议;

        根据本机的MAC地址,查询本机的IP地址;

        场景:早期的网吧 → 无盘工作站

2、ICMP

        定义:互联网控制消息协议

        ping命令:测试网络连通性;

        tracert命令:路由跟踪;"tracert www.baidu.com"

        3、代理ARP

        定义:允许一个设备代理另一个设备响应 ARP 请求,常用于在不同的子网之间转发数据包

        场景:路由器转发数据包、负载均衡、网络安全;

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

空调网关BL121AC 实现工业空调设备与OPC UA系统高效通信

随着工业4.0的迅猛发展,人们深刻认识到在工业生产和生活中,实时、可靠、安全的数据传输至关重要。在此背景下,高性能的工业电力数据传输解决方案——协议转换网关应运而生,广泛应用于工业自动化和数字化工厂应用环境中。 钡铼技术…

本地git切换地区后,无法使用ssh访问github 22端口解决方案

问题 由于放假回家,发现之前一直使用正常的git,与github无法通讯,pull和push都无法连接。报错如下: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. 原因 可能是所…

SSL证书免费和付费的有什么区别?

品牌和信任度 免费SSL证书通常由非营利性的组织提供,而付费SSL证书则由知名的证书颁发机构(CA)提供,如DigiCert、GlobalSign、GeoTrust等。相较于免费证书,付费证书的品牌和信任度更高,更容易获得用户的信…

C语言第五弹---分支语句(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 分支语句 1、if语句1.1、if1.2、 else1.3、 分支中包含多条语句1.4、嵌套if1.5、 悬空else问题 2、关系操作符3、 条件操作符总结 C语言是结构化的程序设计语言&…

【C++】类和对象(上篇)

文章目录 🛟一、面向过程和面向对象初步认识🛟二、类的引入🛟三、类的定义📝1、类的两种定义方式📝2、成员变量命名规则的建议 🛟四、类的访问限定符及封装🍩1、访问限定符🍩2、封装…

【EI会议征稿通知】2024年第四届数字信号与计算机通信国际学术会议(DSCC 2024)

2024年第四届数字信号与计算机通信国际学术会议(DSCC 2024) 2024 4th International Conference on Digital Signal and Computer Communications 第四届数字信号与计算机通信国际会议(DSCC 2024)将于2024年4月12日至14日在中国-香港举行。DSCC 2024旨…

Pandas.DataFrame.std() 样本标准差/总体标准差 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本: 本文基于 pandas2.1.2 编写。 关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。 Pandas稳定版更新及变动内容整合专题: Pandas稳定版更新及变动迭持续更新。 Pandas API参…

精密、CMOS、轨到轨输入/输出、宽带运算放大器

MS8601/MS8602/MS8604 分别是单 / 双 / 四通道、轨到轨输入和输出、 单电源放大器,具有极低的失调电压和宽信号带宽。它采用 1.8V 至 5V 单电 源( 0.9 V 至 2.5 V 双电源)供电。 MS8601/MS8602/MS8604 低失调、极低的输入偏置电流和高速…

零售电商经营分析体系建设咨询案例

一、项目背景 在当前经济形式下,外贸出口面临着巨大压力,跨境电商行业在经营上需要更加精细化。为了应对这一挑战,某跨境电商决定进行零售电商经营分析体系的建设,以提升企业的运营效率和决策准确性。 二、项目目标 建立一套完…

Pandas.Series.mean() 平均值 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本: 本文基于 pandas2.1.2 编写。 关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。 Pandas稳定版更新及变动内容整合专题: Pandas稳定版更新及变动迭持续更新。 Pandas API参…

2023 年值得一读的技术文章 | NebulaGraph 技术社区

在之前的产品篇,我们了解到了 NebulaGraph 内核及周边工具在 2023 年经历了什么样的变化。伴随着这些特性的变更和上线,在【文章】博客分类中,一篇篇的博文记录下了这些功能背后的设计思考和研发实践。当中,既有对内存管理 Memory…

idea远程服务调试

1. 配置idea远程服务调试 这里以 idea 新 ui 为例,首先点击上面的 debug 旁边的三个小圆点,然后在弹出的框框中选择 “Edit”,如下图所示。 然后进入到打开的界面后,点击左上角的 “” 进行添加,找到 “Remote JVM De…