IP协议

前言
TCP/IP协议是一个很大协议族,里面包含了IP协议、TCP协议、UDP协议、ICMP协议、IGMP……等等的协议;而IP、TCP就是其中很重要两个的协议。今天我们就来一起简单的分析一下IP协议。

IP协议简介

IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制;而它的上层协议TCP就具有这个功能。
什么是上层协议?就是距离用户更近的协议,比如http、ftp、TCP等等,而这些协议都是基于IP协议的,所以说是IP协议的上层协议。

IP协议报格式

IP协议

今天先不挨个解释,我们先来看一看其中有趣的两项。
8位生存时间TTL:TTL是一个控制IP数据报在传输过程中的有效时间的类型,详细的可以参考LaoXianYu的TTL,接下来我们来详细的说它后面的那8位。

8位协议:开头说了,IP协议是一个不可靠的协议,它还有可靠的上层协议;那上层协议用的是什么协议呢?究竟是TCP还是UDP,答案就在这 8位协议 上。这儿的8位就指出了IP协议的上层用的什么协议。

Linux系统的朋友可以查看 /etc/protocols 这个文件。
procolos
(注意:这个图没有截完,下面还有很多,一直到了142了吧)
该文件是网络协议定义文件,里面记录了TCP/IP协议族的所有协议类型。文件中的每一行对应一个协议类型,它有3个字段,中间用TAB或空格分隔,分别表示“协议名称”、“协议号”和“协议别名”。

也就是说,如果这儿8位协议的值为 1,那上层就是用的ICMP;如果为 2,那上层用的就是IGMP;如果为 6,那上层用的就是TCP。

现在大家应该知道这两项是干嘛的了吧!

IP路由选择

当一个IP数据包准备好了的时候,IP数据包(或者说是路由器)是如何将数据包送到目的地的呢?它是怎么选择一个合适的路径来”送货”的呢?

最特殊的情况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就可以了。至于是怎么直接传递的,这就要靠ARP协议了。详细请查考LaoXianYu的arp

稍微一般一点的情况是,主机通过若干个路由器(router)和目的主机连接。那么路由器就要通过ip包的信息来为ip包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由。路由器或者主机将会用如下的方式来处理某一个IP数据包

如果IP数据包的TTL(生命周期)以到,则该IP数据包就被抛弃。
1、搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机
2、搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“子网掩码(1.3.)”的协助。如果找到路由器,则将该包发向路由器。
3、搜索路由表,如果匹配同子网路由器失败,则匹配同网号(第一章有讲解)路由器,如果找到路由器,则将该包发向路由器。
4、搜索陆游表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包
5、如果都失败了,就丢掉这个包。
这再一次证明了,ip包是不可靠的。因为它不保证送达。

LaoXianYu将会持续更新@Damon

坚持原创技术分享,您的支持将鼓励我继续创作!