目录
浅论
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它有四个独特的控制信息:
Type Of service:服务种类
代码 说明 1000 – minimize delay
最小延迟 对应于对延迟敏感的应用,如telnet和人login等。 0100 – maximize throughput
最大吞吐量 对应于对吞吐量要求比较高的应用,如FTP文件应用,对文件传输吞吐量有比较高的要求。 0000 – normal service
一般服务 0001 – minimize monetary cost
最小费用 0010 – maximize reliability
最高可靠性 对网络传输可靠性要求高的应用,如使用SNMP的应用、路由协议等等。 具体的含义等之后详解的时候我会细细说明!
TTL(Time To Live)这是描述这个包还可以存在多久的!一般的,IP可能需要过路由器一次一次扔数据包,扔一次TTL字段咱就减一个1:
// 显然不是源码,但是这是一个伪代码! void getAndSend(IP_Package& package){handlePackage(package);package->ttl--;sendTo(package->dest_addr, package); }Option:这里则是选项,装着时间戳,安全相关和一些特别的调度安排
头部校验和:咱们是说IP不管数据,他还是得管他自己的控制信息的,但是检查很弱,使用的是校验和检查
范例查看
随便抓点包就OK:我们这里使用的是IPv4!具体一些信息我们将会在后续详细分析!