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

RFC 791 (1)-导论

目录

浅论

IP是啥

IP可以管啥

操作

范例查看


提示:本系列将会开始RFC文档阅读,这里会给出我的一些笔记

浅论

我们这篇RFC文档描述的是IP和ICMP协议,我们都知道,在传统的OSI七层或者是现在被简化的五层:应用层,传输层,网络层,数据链路层以及物理层中,它属于网络层的传输。接触过计算机网络导论的同志们都知道,他是为上层的TCP,UDP提供服务的(为传输层的服务本身提供服务),而又处理下层的数据链路层前来的数据包(卸下Local本地的数据链路层的相关协议信息后,剩下的他认为这是传输数据的那部分)。

IP是啥

一个协议!我相信大家都知道这个浅显的事实,他指挥了

接收上:在网络层工作的机器如何解读下层带来的数据包,然后进一步根据里头的控制信息解读在内层的数据,好向上提交给传输层解析

发送上:接受上面的传输层已经封装好的数据构成一个数据包(Datagram),添加自己的控制信息,目标IP等,向下传递给工作数据链路层的设备

IP正是在本网络层中描绘了设备之间如何根据他给出的IP地址,也就是从源地址到目的地址中,在网络中传递数据(Transmitting Blocks of Data from sources to destination

IP可以管啥

有趣的是:正如RFC文档所描述的是,这个我相信也有不少博主强调过的:

IP不在乎,也不保证比较强的数据可靠性,数据顺序正确性和流控制,人话就是他只管送,不管对不对

那这些谁来做呢?上层做!TCP不正是提供了这些功能吗?(流控制,顺序性等),我们正好省时省力,将每个工作安排的井井有条而不重复做无用工作

操作

IP实现了两个最基本的功能:addressing(寻址)和fragmentation(拆包)。我们在网络层视图中,嗯,实际上就是这样的:

(实际细节如何?不是我们在乎的!我们只在乎到数据刷的从一台设备跑到了另一台设备),我们就这样实现了一种addressing!在浩大的网络层中找到我们的目标设备投递自己的数据包

这里的源地址和目标地址就是我们的IP包内的地址字段!具体的分析在之后的博客中详细阐述。这几台设备制定发送的数据包和解析收到的数据包就是这样由IP指挥规定的

可以在这里就阐述的是:IP它有四个独特的控制信息:

  1. Type Of service:服务种类

    代码说明
    1000 – minimize delay最小延迟 对应于对延迟敏感的应用,如telnet和人login等。
    0100 – maximize throughput最大吞吐量 对应于对吞吐量要求比较高的应用,如FTP文件应用,对文件传输吞吐量有比较高的要求。
    0000 – normal service一般服务
    0001 – minimize monetary cost最小费用
    0010 – maximize reliability最高可靠性 对网络传输可靠性要求高的应用,如使用SNMP的应用、路由协议等等。

    具体的含义等之后详解的时候我会细细说明!

  2. TTL(Time To Live)这是描述这个包还可以存在多久的!一般的,IP可能需要过路由器一次一次扔数据包,扔一次TTL字段咱就减一个1:

    // 显然不是源码,但是这是一个伪代码!
    void getAndSend(IP_Package& package){handlePackage(package);package->ttl--;sendTo(package->dest_addr, package);
    }
  3. Option:这里则是选项,装着时间戳,安全相关和一些特别的调度安排

  4. 头部校验和:咱们是说IP不管数据,他还是得管他自己的控制信息的,但是检查很弱,使用的是校验和检查

范例查看

随便抓点包就OK:我们这里使用的是IPv4!具体一些信息我们将会在后续详细分析!

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

相关文章:

  • 力扣hot100:199. 二叉树的右视图/437. 路径总和 III(dfs/回溯/树上前缀和/哈希表)
  • 浅谈 HTTPS
  • js手动实现unshift
  • Failed to get DISPLAY: Error: All configured authentication methods failed 解决方法
  • 随便聊一下 显控科技 控制屏 通过 RS485 接口 上位机 通讯 说明
  • C++学习笔记(多线程)
  • 解决Redis的键值前出现类似\xAC\xED\x00\x05t\x00*这样的字符序列
  • 分享 Kamailio 5.7.x 预处理一例
  • 学QT的第三天~
  • 数据结构---时间复杂度+空间复杂度
  • Verilog 触发器状态机语言描述
  • 等保保护测评试题中
  • SD-Turbo部署
  • 【ZZULIOJ】1095: 时间间隔(函数专题)(Java)
  • Rust:文件 launch.json 有什么用?
  • vue3实现文字垂直滚动
  • Android4.4真机移植过程笔记(三)
  • PostgreSQL备份恢复与复制
  • spring高级篇(八)
  • UP互助 帮助UP起号做视频 支持B站和抖音
  • *求问?:为何会超时(TLE)?
  • cocosstudio工程文件(.ccs)维护问题
  • Blender动画与云渲染:创造高质量作品的未来路径
  • 【MySQL】3.MySQL核心概念解析:数据完整性、事务处理、索引及聚簇索引与非聚簇索引
  • 【netty系列-03】深入理解NIO的基本原理和底层实现(详解)
  • 大数据Scala教程从入门到精通第二篇:Scala入门
  • Spring Data JPA数据批量插入、批量更新真的用对了吗
  • 数据结构-线性表-应用题-2.2-12
  • 目录页码右对齐快速解决
  • 分红76.39亿,分红率再创新高,成长活力无限的伊利带来丰厚回报