您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

TCP/IP协议——IP协议

时间:2022-06-15 09:09:19  来源:  作者:爱分享的网络程序猿

引言

IP协议是TCP/IP协议族中最核心的协议,所有的TCP,UDP、ICMP以及IGMP等协议都以IP数据报的格式传输。IP协议提供最好的传输服务,其提供无连接、不可靠的数据传输。或许这句话读起来很矛盾,为什么说是最好的传输服务,但同时又是不可靠的呢。

最好的传输可以认为IP协议会尽一切能力到达目的主机,若中途发生错误无法到达目的主机,也会返回一个ICMP错误报文。收到IP协议返回的错误报文后,本机就知道报文没有成功到达目的主机。而接下来的传输可靠性,即重传,则不属于IP协议的范畴,而是通过TCP协议(或者自己实现的应用层协议)来保证。

不可靠是指即使传输过程中出现错误,IP协议并不负责处理报文重传的工作,而是交给上层协议。

无连接是指IP协议的首部中不保存维护任何关于后续数据报的相关状态信息。

3.2.IP首部

IP数据报的格式如图3-1:

TCP/IP协议——IP协议

3-1

版本:IP协议的版本号,IPV4即为4

首部长度:包含任意选项,以32位字为单位的长度。由于是一个4比特字段,可知IP首部最长为16*4字节,即64字节

服务类型:包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须置0。4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。

总长度:代表IP数据包的总长(包括其后承载的协议首部与用户数据),由于其有16bit,单位为字节数,可知IP数据报的总长度为65536字节。不过尽管IP首部允许其传输如此大的字节数,以太网封装的链路层也是不允许的,以太网封装的链路层,最大允许承载的IP数据报长度为1500字节。并且主机也要求不能接收超过576字节的数据报。该限制不会影响到TCP协议,因为TCP协议会主动将数据包分段传输。

标识:唯一的标识主机发送的每一份数据报,通常每发送一份数据报就会加1,在IP分片中起到顺序重组的作用。

标志:标志该报文类型,在IP分片中代表该报文是否是分片报文

片偏移:分片报文中指明偏移量

生存时间TTL:设置数据报可以经过的路由跳数,每经过一个路由则减1,减到0仍为到达目的主机则丢弃该报文。可解决黑洞路由,报文一直占用带宽的问题。TTL最大值为255.

协议:即指明IP首部后承载的协议类型,如ICMP/IGMP/TCP/UDP等,前文曾提到该字段。

首部检验和:仅包括IP数据报首部的检验和,检验和的计算不包含其承载的IGMP/ICMP等协议的报文内容。检验和可以检验IP数据报在传输过程中,首部是否出现的错误。RFC 1071包含了如何计算检验和的方法,感兴趣可以了解。

源IP地址:即前文所述的32位互联网地址,代表报文的始发主机。

目的ip地址:代表报文的目的主机。

选项:是一个任选项,可以用作以下领域,但很少被使用。

  • 安全和处理限制(详细内容可参考RFC 1108)
  • 记录路径(即报文传输过程中,让经过的路由器记录其地址)
  • 时间戳(即报文传输过程中,让经过的路由器记录其时间与地址)
  • 宽松的源站选路(为数据报选定一系列必须经过的IP地址)
  • 严格的源站选路(与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址)

很少被使用且并不是所有的主机与路由器都实现了这些选项。值得注意的是选项字段必须是32位的整数倍,因为首部长度是32bit的整数倍。若未达到32位的整数倍,可以用0填充。

3.3.IP路由选路

IP协议提供的最本质的服务之一就是为报文提供选路功能。

IP层的路由功能存在两种模式,一种是路由器模式,一种是主机模式。一般来说,主机是不作为路由器模式使用。

路由器模式与主机模式的本质区别在于系统是否转发从网络口接收进来的报文。若配置为主机模式,则对目的ip非本机的报文,系统做丢弃处理,而路由器则会去查找路由表(提供选路信息的转发表),若查找到则将该报文从对应的网络接口转发出去,转发之前需要更改报文的源目mac地址,且TTL-1(如前文所述,为了防止黑洞路由占用带宽),若TTL被减为0,则做丢弃处理不转发。两种模式对于目的ip属于本机或者为广播地址(广播地址即前文所述的5类互联网地址中主机号为全1的互联网地址)的报文,数据报就被送到由I P首部协议字段所指定的协议模块进行处理。

包含选路信息的路由表中,一般都包含以下这些信息:

目的IP地址:可以是一个主机地址(即全掩码的IP地址,主机号包含非0值,这种称为主机路由),也可以是一个网络地址(即非全掩码的IP地址,主机号为全0,这种称为网络路由)

下一跳路由器的IP地址或直连IP的网络地址:下一跳路由器的IP地址即报文需要转发到的下一个网络接口的IP地址(这个网络接口与当前的路由器直连);而直连IP的网络地址会直接标明该网段IP地址的路由出口,报文直接从该出口转发(前提是该报文的目的IP必须存在,可通过ARP报文探测验证)。

标志:指明路由的类型,例如路由是直连网络地址还是真正的下一跳地址,路由时OSPF协议计算地址还是BGP协议学习地址等。

网络接口:为数据报传输指定一个网络接口。

IP路由选择是逐跳地(hop-by-hop)进行的。从这个路由表信息可以看出,IP并不知道到达任何目的的完整路径(当然,除了那些与主机直接相连的目的)。所有的I P路由选择只为数据报传输提供下一站路由器的IP地址。它假定下一站路由器比发送数据报的主机更接近目的,而且下一站路由器与该主机是直接相连的。

IP路由选择主要完成以下这些功能:

  1. 搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号都要匹配)。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。
  2. 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。目的网络上的所有主机都可以通过这个表目来处置。例如,一个以太网上的所有主机都是通过这种表目进行寻径的。这种搜索网络的匹配方法必须考虑可能的子网掩码。关于这一点我们在下一节中进行讨论。
  3. 搜索路由表,寻找标为“默认(default)”的表目。如果找到,则把报文发送给该表目指定的下一站路由器。

如果上面这些步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”(即IP协议附属ICMP协议报文)的错误。

图3-2,是我在一个路由器查看路由表的结果:

TCP/IP协议——IP协议

3-2

S代表该路由时静态配置,不是通过协议生成。重点关注标注的三条路由,分别是主机路由、网络路由和默认路由。查表时,优先查找主机路由表,若能匹配中,则报文直接按照查表结果转发。若无法匹配中,则继续查找网络路由表,若匹配中网络路由则按照查表结果转发。若仍无法匹配中,查找是否存在默认路由,存在的话匹配默认路由转发。若所有的都无法匹配中,那么丢弃该报文。

举个例子,一个目的IP是200.1.1.2的报文进来,那么直接命中主机路由表,报文直接按照查表结果,往下一跳网络接口IP为192.168.3.1的路由器转发。若进来的报文目的IP为200.1.1.3,那么无法命中主机路由表,而命中了网络路由表,那么就往下一跳网络接口IP为192.168.4.1的路由器转发。若进来的报文目的IP为100.1.1.2,那么既不能命中主机路由表,也不能命中网络路由表,只能命中默认路由,那么就往下一跳网络接口IP为101.0.0.1的路由器转发.

这里有人可能会疑问,明显主机路由能更精确匹配,直接全部使用主机路由就完事了,为什么还需要网络路由的存在。这里主要考虑的是资源容量问题,硬件资源是有限的,一个路由表不可能无限大,能让你容纳那么多的主机路由。因此,网络路由是很有必要的,网络路由的存在大大缩减了对路由表容量的要求。

值得注意的是,在这个转发过程中,报文中的目的IP地址始终都未修改(使用源路由选项时会修改,但这种情况很少出现),所有的路由决策都是通过这个目的IP来决策。

3.4.子网寻址与子网掩码

现在所有的主机都要求支持子网寻址(RFC 950规定)。不再把一个互联网IP地址单纯的认作由网络号与主机号组成,而是将主机号再次进行划分,主机号分为子网号和主机号两部分。这么做的主要好处在于使得互联网地址的使用更加灵活,因为往往一个网络号后是用不了这么多主机的,例如B类的互联网地址,有16位的主机号,即可以包含2^16的主机数量,而往往这一个网络号下不会存在这么多主机,存在极大的浪费。图3-3展示了B类地址的一种子网编址方式。

TCP/IP协议——IP协议

3-3

这种对B类地址的子网划分是比较典型的划分方法,这种方式在利用点分十进制的方式表示IP地址时,可以很容易的区分子网号和主机号。大部分对互联网地址的划分都是对B类互联网地址的划分,其实对C类地址也是可以划分的,只是C类地址的主机号本身只有8位,可用来划分的位数较少。不止C类地址,A类地址也是经常会被划分。

总结一句,这种划分子网的方式非常灵活,不一定需要8位一个整体的划分,可以通过子网掩码来精确划分到具体的位。例如一个A类地址表示成40.40.40.2/24,那么24就标识前24位属于网络号+子网号,而我们知道A类地址的网络号只有8位,可以知道该地址的网络号为前8位,即40,而子网号有16位,即40.40,主机号为2。掩码有一种经常使用的表示方法,40.40.40.2/24这个也可以等价表示为40.40.40.2 255.255.255.0,其中255.255.255.0就是我们所说的真正的子网掩码。

3.5.ifconfig命令.NETstat命令

既然我们已经了解了所谓的IP地址与子网掩码,那么在我们的主机上可以如何查看自己的网络接口所属的IP地址与相应的子网掩码呢。

在unix系统与类unix系统(linux)上可以使用ifconfig命令查看相应的ip地址,图3-4是我在一个linux系统上用命令查看的结果

TCP/IP协议——IP协议

3-4

可以看到存在多个网络接口,分别分配有B类地址,C类地址与环回地址,其中netmask即子网掩码,可以发现在这台主机上,子网掩码与互联网地址的网络号位数相同。同时可以发现,各个网络接口的MTU最大值为1500(前文链路层所述,以太网接口的IP数据报MTU范围为46-1500),而环回接口的MTU为65536,是IP首部所能承载的最大数据报字节数。这是因为环回接口接收的包是由本机发出,不需经过网络传输(前文TCP/IP简介所述,MTU的限制与传输时延相关),因此可以发最大的IP数据报。

除了ifconfig可以查询本机网络接口的信息,也可以通过netstat -in来查看主机的网络接口与IP地址。

3.6.小结

本篇主要讲述了

  1. IP首部的具体格式,并初步讲述了各个字段的用途。
  2. IP的重要功能选路,讲述了选路的原理,即根据报文的目的IP来查路由表,决策最终的报文出口。也大概讲述了主机与路由器在处理报文时的差别。
  3. 介绍了子网以及子网掩码的概念
  4. 讲述了在系统上查阅主机网络接口的两条重要命令,ifconfig与netstat


Tags:IP协议   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
分布式架构基础-远程通信tcp/ip协议原理
1、一个http请求的流程在分布式架构中,有一个很重要的环节,就是分布式网络中的计算机节点彼此之间需要通信。这个通信的过程一定会涉及到通信协议相关的知识点,我们每天都在用...【详细内容】
2023-07-14  Search: IP协议  点击:(339)  评论:(0)  加入收藏
面试,再被问TCP/IP协议,教你这么答
应届生马上毕业了,总免不了求职面试这个环节。身为网络工程师,在面试时,难免都会被问到TCP/IP这玩意儿。对于TCP/IP,很多网络工程师又爱又恨。学网工,肯定都逃不开这个概念,要学的...【详细内容】
2023-05-07  Search: IP协议  点击:(419)  评论:(0)  加入收藏
什么是Ntrip?Ntrip协议简介
文章目录 Ntrip通讯协议1.0 Ntrip是什么?Ntrip系统组成NtripServerNtripClient4.1 获取源列表4.2 获取差分数据 其他资料 Ntrip通讯协议1.0Ntrip是什么?NTRIP是在互联网上进行...【详细内容】
2023-03-31  Search: IP协议  点击:(362)  评论:(0)  加入收藏
关于TCP/IP协议漏洞的安全措施
摘要:上篇TCP/IP协议常见漏洞类型我们介绍了TCP/IP协议中常见的漏洞类型包括ARP病毒攻击、基于RIP的攻击、DNS欺骗、TCP连接欺骗。面对TCP/IP协议中存在的漏洞我们要采取什么...【详细内容】
2022-07-15  Search: IP协议  点击:(343)  评论:(0)  加入收藏
TCP/IP协议——IP协议
引言IP协议是TCP/IP协议族中最核心的协议,所有的TCP,UDP、ICMP以及IGMP等协议都以IP数据报的格式传输。IP协议提供最好的传输服务,其提供无连接、不可靠的数据传输。或许这句话...【详细内容】
2022-06-15  Search: IP协议  点击:(576)  评论:(0)  加入收藏
太厉害了,终于有人能把TCP/IP协议讲的明明白白了
从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群...【详细内容】
2021-07-14  Search: IP协议  点击:(355)  评论:(0)  加入收藏
漫谈Gossip协议与其在Redis Cluster中的实现
前言之前给小伙伴们科普ClickHouse集群的时候,我曾经提到ClickHouse集群几乎是去中心化的(decentralized),亦即集群中各个CK实例是对等的,没有主从之分。集群上的复制表、分布式...【详细内容】
2020-12-22  Search: IP协议  点击:(334)  评论:(0)  加入收藏
网络层(TCP/IP协议)
IPV4协议提供简单服务,实现从源地址到目的地址的数据转发!(不建立连接,不保证数据传输的可靠性)数据报格式(首部+数据): 首部的长度以4字节为单位,长度范围20-60字节,具体跟首部...【详细内容】
2020-10-16  Search: IP协议  点击:(657)  评论:(0)  加入收藏
TCP/IP协议:传输层协议
网络层是为主机之间提供逻辑通信,而运输层为应用进程之间(socket:ip+端口)提供端到端的逻辑通信。端口 服务器使用的端口系统端口号/熟知端口号 (0-1023)FTP: 21TELNET: 23SMPT:...【详细内容】
2020-09-02  Search: IP协议  点击:(394)  评论:(0)  加入收藏
程序开发每日须知:TCP/IP协议概览
TCP/IP 协议作为现代网络的骨架,其在现代生活中的重要性不言而喻。 不同的计算机厂家使用不同的硬件,生产出的不同型号的计算机,搭载不同的操作系统,通过tcp/ip协议可以进行通讯...【详细内容】
2020-08-10  Search: IP协议  点击:(294)  评论:(0)  加入收藏
▌简易百科推荐
学生偷看“不良网站”,手机上3个痕迹无法清除,网友:咋不早说
众所周知,中国的常规教育中,总是“谈性色变”,但在这个信息爆炸的互联网时代,即便是一些年纪很小的孩子,也能轻易接触到一些所谓的不良网站,因此这一方面的教育缺失,其实是很可怕的...【详细内容】
2024-03-28    叶姐生活指南  Tags:不良网站   点击:(18)  评论:(0)  加入收藏
什么是网络中的路由器?核心功能解释
路由器是互联网连接的核心元素,是一种允许多个设备连接到互联网,并促进将数据包转发到各自的目标地址的设备。使用动态路由技术,路由器检查数据并在各种可用路径中选择最有效的...【详细内容】
2024-03-07    千家网  Tags:路由器   点击:(34)  评论:(0)  加入收藏
过年该不该升级Wi-Fi 7路由?看完就知道
打开电商网站不难发现,从2023年第三季度到现在,Wi-Fi 7路由器新品越来越多。而且价格不再是高高在上,已经基本和Wi-Fi 6路由价格差不多了。看到这些Wi-Fi 7新品路由,不少朋友就...【详细内容】
2024-02-27    中关村在线  Tags:Wi-Fi   点击:(44)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  云云众生s  微信公众号  Tags:Kubernetes   点击:(42)  评论:(0)  加入收藏
SSL协议是什么?关于SSL和TLS的常见问题解答
SSL(安全套接字层)及其后继者TLS(传输层安全)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用,但我们仍将这些...【详细内容】
2024-02-06  IDC点评网    Tags:SSL协议   点击:(73)  评论:(0)  加入收藏
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01    简易百科  Tags:TCP/IP   点击:(62)  评论:(0)  加入收藏
BGP路由属性:互联网路由的灵活控制器
在互联网的庞大网络中,边界网关协议(BGP)是确保不同自治系统(AS)间路由信息有效交换的关键协议。然而,BGP的功能远不止于此。其核心组成部分,即BGP路由属性,赋予了BGP强大的灵活性,使...【详细内容】
2024-01-26  诺诺爱生活    Tags:互联网路由   点击:(44)  评论:(0)  加入收藏
简易百科之什么是网络延迟?
简易百科之什么是网络延迟?随着互联网的普及和发展,网络已经成为我们生活中不可或缺的一部分。然而,我们在使用网络时可能会遇到一种情况,那就是网络延迟。那么,什么是网络延迟呢...【详细内容】
2024-01-24    简易百科  Tags:网络延迟   点击:(162)  评论:(0)  加入收藏
网络延迟与网络速度有什么区别?分享具体的答案
通常,许多人抱怨网速测试。速度还是不错的,但是他们玩游戏的时候怎么会卡住,还是断开连接等等问题,这一系列问题始终困扰着大家。那么,网络延迟与网络速度有什么区别呢?请不要担心...【详细内容】
2024-01-24  萌新小郭    Tags:网络延迟   点击:(53)  评论:(0)  加入收藏
揭秘IP地址的网络威胁与攻击类型
在当今数字化时代,网络攻击已经成为网络安全的一大挑战。IP地址,作为互联网通信的基础,也成为网络威胁和攻击的焦点之一。本文将深入探讨不同类型的网络威胁和攻击,以及如何防范...【详细内容】
2024-01-22  IP数据云    Tags:IP地址   点击:(87)  评论:(0)  加入收藏
站内最新
站内热门
站内头条