网络层--IP协议简要笔记

IP协议是“不可靠无连接”的传输协议,作为TCP/UDP的基础协议,其作用和地位不可置疑,以下做简要的笔记,注意本文主要是针对IPV4;
参考《TCP/IP详解 卷1 协议》


一. 协议定义和组成

这里写图片描述
如上图所示,IP协议首部至少包含20个字节,这20个字节中描述了IP协议包的基本信息;
1.版本(4bit):描述IP协议的版本;
2.首部长度(4bit):4bit表示最多15个32bit字(即60个字节=20字节+额外的字节);
3.服务类型(TOS,8bit):“优先权子字段(3bit,基本废弃)”、“TOS子字段(4bit,分别代表最小时延、最大吞吐量、最高可靠性、最小费用)”、“未用位(1bit)”;
4.协议总长度(16bit):表示最多65535个字节;
5.标识(16bit):用于标识IP包的唯一性,每生成一个数据包,该数字自增;
6.分片标志(3bit):用于告诉IP层,该IP包在是否分片(若分片则等所有包到了才处理);
7.分片偏移(13bit):用于告诉IP层,该IP包在完整IP包中分片偏移;
7.生存时间(TTL,8bit):数据包最多可以经过的路由层数(通常为32或者64),每经过一层路由ttl–,当ttl为0时,路由器发送icmp报文通知主机;
8.协议(8bit):用于表示该IP包用于什么协议,注意该编码时网络层自身的编码,和上层如传输层的编码无关;
9.首部校验和(16bit):将首部每两个字节取反求和(其中的16位检验码部分置0计算),用于校验首部的正确性;
10. 源IP和目的IP(各32bit)

注意:在网络数据流中,IP包是以大端(big endian)的形式封装


二. 其他的一些相关知识

  1. 链路层中最小的数据帧长为46字节,但并不要求能够接收超过576个字节,因此IP层就出现了分片的需求;而TCP包在传输层就对用户数据进行了分片,即这个对TCP的传输效率影响不大;而应用层中使用UDP的高层协议如TFTP,则限制了用户数据长度为512个字节;但现实是,大多数的实现允许超过8192(8K)个字节的IP数据报;
  2. IP层在内存中维护着一个路由表,用于快速进行ARP查询;
  3. NAT中Ping的处理,是利用icmp中的标识符完成类似于tcp/udp端口的作用;

三. IP层中路由的基本知识

1.网络地址和主机地址共同组成了IP地址(IP地址&地址掩码=网络地址,ip地址-网络地址=主机地址);
2.对于接收到的IP包,IP层首先判断自身是否目的地址或者该包是否广播包,如果是的话,则交给指定的协议模块进行处理,如果否定的话,若开启路由模式则根据路由表对IP包进行转发,否则抛弃这个IP包;
3.路由表中每一项有以下信息
(1)目的IP地址,分为网络地址和完整的主机地址,目的地址主机号为0时,则表示网络地址(表示发给该网络的所有主机),若主机号非0,则表示特定主机地址(发给特定主机);
(2)下一站路由器的IP地址;
(3)标志:一个表示网络地址还是主机地址,另一个表示下一站理由器是真正的路由器还是直连的接口;
(4)数据包传输指定的网络接口;

4.IP路由表选择策略
(1)先搜索和目的IP地址完全匹配的表目,并将数据包发给下一站的路由器或直连的网络接口;
(2)再搜索和目的网络地址完全匹配的表目,并将数据包发给下一站的路由器或直连的网络接口;
(3)上述两种都不成功时,则找默认表目进行处理;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章