TCP/IP之IP协议

IP的作用

IP相当于OSI参考模型中的网络层,网络层主要作用是实现终端节点之间的通信。具体来说,数据链路层的主要作用是在互连同一种数据链路的节点之间进行包传递,然而,一旦跨越多种数据链路,就需要借助网络层了,网络层可以跨越不同的数据链路。

IP的作用
  • 网络层与数据链路层的关系:数据链路层提供直连两个设备之间的通信功能,与之相比,作为网络层的IP则负责在没有直连的两个网络之间进行通信传输。

IP大致又分为三大作用模块,分别是IP寻址、路由(最终节点为止的转发)以及IP分包和组包。

IP地址

MAC地址用来标识同一个链路中不同计算机,IP地址则是用来标识网络层中主机的通信地址。

  • IP地址:一个32位的正整数(IPV4),由网络和主机两部分标识构成。网络标识在数据链路每个段配置不同的值,相同段内相连的主机必须有相同的网络地址;主机标识在用于标识同一个网段内不同的主机。
IP地址
  • IP地址的分类:IP地址分为网络和主机两部分组成,那么,从第几位到第几位是网络标识,又是从第几位到第几位是主机标识呢?目前,对于IP地址的划分,主要有两种划分方式;IP分类地址和子网掩码区分
  • IP 地址分类:IP地址分为四个级别,分别为A、B、C、D类。
    • A类地址:首位以“0”开头的地址,从第一位到第八位是网络标识,后24位相当于主机标识,即:0.0.0.0~127.0.0.0是A类地址。一个网段内可容纳的主机地址上限为16777214(去掉全0和全1保留地址)。
    • B类地址:前两位以“10”开头的地址,从第一位到第十六位是网络标识,后16位相当于主机标识,即:128.0.0.0~191.255.0.0是B类地址。一个网段内可容纳的主机地址上限为65534(去掉全0和全1保留地址)。
    • C类地址:前三位以“110”开头的地址,从第一位到第二十四位是网络标识,后8位相当于主机标识,即:192.0.0.0~239.255.255.0是C类地址。一个网段内可容纳的主机地址上限为254(去掉全0和全1保留地址)。
    • D类地址:前四位以“1110”开头的地址,从第一位到第三十二位是网络标识,即:224.0.0.0~239.255.255.255是D类地址。D类地址没有主机标识,常被用于多播。
IP地址分类
  • 广播地址:广播地址用于在同一个链路中相互连接的主机之间发送数据包。将IP地址中的主机地址部分全部设置为1,就成了广播地址。
    • 本地广播:在本网络内的广播叫做本地广播。例如:网络地址为192.168.0.0/24的情况下,广播地址为:192.168.0.255.这个广播地址的IP包会被路由器屏蔽,不会到达192.168.0.0/24以外的其他链路上。
    • 直接广播:在不同网络之间的广播叫做直接广播。例如,网络地址为192.168.0.0/24的主机向192.168.1.255/24的目标地址发送IP包,收到这个包的路由器,将数据转发给192.168.1.0/24,从而使得192.168.1.1~192.168.1.254的主机都能收到这个包。由于直接广播有一定的安全问题,多数情况下会在路由器上设置为不转发。
本地广播与直接广播
  • 子网掩码:直接使用A类或者B类地址,非常浪费资源,而通过子网掩码,能够实现比A、B、C更小粒度的网络。这种方式,实际上就是将原来A、B、C勒种的主机地址部分用作子网地址,将原网络分为多个物理地址的一种机制。引入子网以后,一个IP地址,就有了两种识别码,一是IP地址本身,另一个是表示网络部的子网掩码。子网掩码是一个32位的数字,它对应IP地址网络标识部分的位全为1,对应的IP地址主机标识的部分则全部为0.由此,一个IP地址不再受限于自己的类别,而是可以用这样的子网掩码自由的定位自己的网络标识长度。子网掩码的标识方式有两种:
  • IP地址 172. 20.100. 52
    子网掩码 255.255.255.192
    网络地址 172. 20.100. 0
    子网掩码 255.255.255.192
    广播地址 172. 20.100. 63
    子网掩码 255.255.255.192
  • 另一种方式是后缀法:它在每个IP地址后面追加网络地址的位数,用/隔开
    IP地址 255.255.255.52/26
    网络地址 172. 20.100. 0/26
    广播地址 172.20.100.63/26
子网掩码
  • 全局地址和私有地址:起初,互联网中任何一台主机或者路由器都配有一个唯一的IP地址,然而,随着互联网的迅速普及,IP地址不足的问题日趋显著。于是,出现了一种新的技术,他不要求为每一台主机或者路由器分配一个固定的IP地址,而是在必要的时候只为相应数量的设备分配唯一的IP地址。于是出现了对应全局地址的私有网络的IP地址。
  • 私有地址:私有地址的范围如下:
    10.0.0.0 ~ 10.255.255.255 (10/8) A类
    172.16.0.0 ~ 172.31.255.255 (172.16/12) B类
    192.168.0.0 ~ 192.168.255.255 (192.168/16) C类
  • 全局地址:不在私有地址范围的IP地址均为全局地址。
    私有IP最早没有计划连接互联网,而只用于互联网之外的独立网络,然而,当一种能够互换私有IP和全局IP的NAT技术诞生以后,配有私有地址的主机与配有全局地址的互联网主机也能实现通信。

路由控制

发送数据包时使用的地址是网络层的地址,即IP,然而仅仅有IP地址还不足以实现将数据包发送到对端目标地址,在数据发送过程中还需要类似于“指明路由器或主机”的信息,以便真正发往目标主机。保存这种信息的就是路由控制表。

  • IP地址的网络地址部分用于进行路由控制。路由控制表中记录着网络地址与下一步应该发送至路由器的地址。在发送IP包时,首先要确定IP包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将IP包转发给相应的下一个路由器。下图就是通过路由控制吧将IP发送到指定目标地址的过程。


    路由控制表与IP发送
  • 路由控制表分为两种,一种是管理员手动设置的,称为静态路由控制,另一种是路由器与其他路由器相互交换信息时自动刷新,称为动态路由控制。

IP报文的分片与重组

  • 为何需要进行分片?因为网络层需要对数据链路层进行抽象,而数据链路不同,他们的MTU(最大传输单元)都不尽相同,IP属于数据链路的上一层,它必须不受限于不同数据链路层的MTU大小。为了让IP包能在不同的数据链路中进行传输,所以必须要对IP进行分片处理。例如,以太网默认的MTU是1500字节,因此,4342字节的IP数据报无法再一个帧中发送完成,这时,路由器或者主机将此IP数据报划分成3个分片进行发送。
  • IP报文分片在网络层进行,由路由器进行;经过分片之后的IP数据报在被重组的时候,只能由目标主机进行,路由器虽然能做分片,但不会进行重组。因为现实中,无法保证IP数据报是否经过同一个路径传送,拆分之后的每个分片都可能会在途中丢失,即使在途中某一处进行重组,如果下一站再经过其他路由时还会面临被分片的可能,这会给路由器带来多余的负担,也会降低网络传送效率。所以,在目标主机端进行重组IP分片称为现行规范。
IP报文分片与重组
  • 路径MTU发现
    分片机制也有着他的不足,首先,路由器的处理负荷加重,因为路由器在现代网络中负荷越来越重,只要允许,对IP数据包的分片处理,尽量由主机进行,而不是路由器进行;其次。在分片处理中,一旦某一个分片丢失,则会造成整个IP数据报作废。为了应对这些问题,产生了“路径MTU发现”技术。
  • 路径MTU发现是指从发送端主机到接收端主机之间不需要分片时的最大MTU大小,即路径中存在的所有数据链路最小的MTU。而路径MTU发现从发送主机按照路径MTU的大小将数据报分片后进行发送。进行路径MU发现后,就可以避免在中途的路由器上进行分片处理。
  • 路径MTU发现的工作原理:
    1,发送时IP首部的分片标志位设置为不分片。超过数据链路的最大MTU时,也不分片,直接丢弃该包;
    2,通过一个ICMP的不可达消息将数据链路上的MTU的值发送给主机。
    3,下一次,从发送给同一目标主机的IP数据报获得ICMP所通知的MTU值以后,将他设置成当前MTU,发送主机根据这个MTU对数据报进行分片处理。如此反复,直到数据报被发送到目标主机为止没有再收到任何ICMP,就认为最后一次ICMP所通知的MTU即是一个合适的MTU值。
路径MTU发现(UDP)

需要注意的地方是:UDP中没有重发处理。应用在发送下一个消息时会被分片。具体来说,就是指UDP层面传过来的“UDP首部+UDP数据”在IP层被分片,对于IP,它并不区分UDP首部和应用的数据。所有分片到达目标主机后进行重组,在传给UDP层;在TCP中情况则不一样:由于TCP是可靠性传输,具有重发机制,数据报被丢弃后会被重新发送。TCP负责将数据分成IP层不会再分片的粒度以后再传给IP层。IP层不做分片处理了,接收端主机不需要进行重组,数据被原样发送给接收端主机的TCP层。

路径发现(TCP)

IPv4首部

IPv4首部格式

IPv4首部格式如上图所示。介绍一些主要字段:

  • 版本(version):4比特构成,表示标识IP首部的版本号。IPv4的版本号即为4,IPv6即为6。
  • 首部长度:4比特构成,表明IP首部的大小,单位是4字节(32比特)。
  • 总长度:16比特,表示首部与数据部分结合起来的总字节数,IP包的最大长度为(2的16次方)65535字节。
  • 标识:16比特,由于分片重组,同一个分片的标识值相同,不同分片的标识值不同。
  • 标志:3比特,表示被分片的相关信息
    比特 含义
    0:未使用,现在必须是0
    1:表示是否可以进行分片:0-可以分片,1-不可以分片
    2:包被分片的情况下,表示是否为最后一个包。0 -最后一个分片中的包,1-分片中段的包
  • 片偏移:13比特,用于标识被分片的每一个分段相对于原始数据的位置
  • 生存时间:8比特,是指包可以中转多少个路由器的意思,每经过一个路由器,TTL会减1,直到变成0则丢弃该包。
  • 协议:8比特,表示IP首部的下一个首部隶属于哪个协议。
  • 首部校验和:16比特,该字段只检验数据报的首部,不校验数据部分,主要用来确保IP数据报不被破坏。
  • 源地址:32比特的发送端IP地址;
  • 目标地址:32比特的接收端IP地址;
  • 可选项:长度可变。通常只在进行试验或者诊断额时候使用。
  • 填充:再有可选项的情况下,首部长度可能不是32比特的整数倍,为此,通过向该字段填充0,调整为32比特的整数倍。
  • 数据:存入数据。将IP上层协议的首部也作为数据进行处理。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容