IP协议


title: IP协议
date: 2019-03-19 23:08:32
categories: 协议
tags: Linux


ATnyNT.png

  • 4位版本:指定IP协议的版本(IPV4/IPV6),对于IPV4来说,就是4

  • 4位首部长度:描述IP头部的长度是多少个32bit(4字节),因为4位能够表示的最大的数是15,则IP头部的最大长度即为60字节

  • 8位服务类型:8位分别为3位优先权字段(已经弃用),4位TOS字段,1位保留字段(必须置为0),4位TOS分别表示:最小延时、最大吞吐量、最高可靠性、最小成本,这四者相互冲突,只能选择一个;对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要

  • 16位总长度:IP数据报文整体占多少个字节

  • 16位标识:唯一的标识主机发送的报文,如果IP报文在数据链路层被分片,那么每一个片中的该标识都是相同的

  • 3位标志字段:第一位保留(暂时未启用),第二位置1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文,第三位表示"更多分片",如果数据链路层进行了分片,则最后一个片该位为1,其他为0,类似于一个结束标记

  • 13位分片偏移:指当前分片相对其原始IP报文开始处的偏移,其实就是在标识当前分片在原报文中的位置,实际偏移的字节数是该值*8得到的,因此,除了最后一个报文以外,其他报文的长度必须是8的整数倍

  • 8位生存时间:数据报到达目的地的最大报文跳数,一般是64,每经过一个路由,TTL -= 1,如果一直减到0还没有到达,那么就丢弃了,主要用来防止出现路由循环

  • 8位协议:标识上层协议

  • 16位头部检验和:使用CRC进行检验,来检验头部是否损坏

  • 32位源/目的IP地址:标识发送端和接收端

IP

网段划分

IP分为两个部分,网络号和主机号

网络号:保证相互连接的两个网段具有不同的标识

主机号:处于同一网段内的主机具有相同的网络号,但是必须有不同的主机号

不同子网就是网络号不相同的局域网

如果在局域网中新增一台主机,则该主机的网络号与局域网的网络号一致,但主机号不能与该局域网下其他主机重复

DHCP:给子网中新增的主机节点分配IP地址,一般的路由器都采用这种技术

子网掩码

子网掩码的作用主要是用来分离IP地址中的网络号和主机号

  • 子网掩码是一个32位的正整数,通常以遗传"0"结尾
  • 将IP地址与子网掩码进行"按位与"操作,得到的结果就是网络号

特殊的IP地址

  • 将IP地址中的主机地址全部设为0,就成了网络号,代表当前局域网
  • 将IP地址中的主机地址全部设为1,就成了广播地址,用于给同一个链路中相互连接的所有主机发送数据包
  • 127.*的IP地址用于本机环回测试,通常为127.0.0.1

IP地址的数量限制

TCP/IP协议规定每一台在网络中的主机都要具有一个IP地址,IPV4的地址是一个32位的整数,一共有2^32个IP地址,但是目前全球主机的数量急剧增加,IP地址的数量明显不够用。

解决的方式

  • 动态分配IP地址:只给接入网络的设备分配IP地址,因此同一个MAC地址的设备,每次接入互联网中的IP地址都是不一定相同的
  • NAT技术
  • 推行IPV6:IPV6用128位来表示一个IP地址

私有IP地址和公网IP地址

一个组织内部建成的局域网,IP地址只能用于局域网内的通信,而不直接连接到internet上,理论上使用任意的IP地址都可以,但是RFC 1918规定了用于组件局域网的私有IP地址

  • 10.*:前8位是网络号,共16777216个地址
  • 172.16.*到172.31.*:前12位是网络号,共1048567个地址
  • 192.168.*:前16位是网络号,共65536个地址

在上述范围中的地址,都为私有IP,其余的则成为公网IP(全局IP)

  • 一个路由器可以配置两个IP地址,一个是WAN口IP,一个是LAN口IP(子网IP)
  • 路由器LAN口连接的主机就从属于当前路由器所构建的子网中
  • 不同的路由器,子网IP都是一样的,子网内的主机IP地址不能重复
  • 每一台家用路由器,实际上也是运行商所构建的子网中的一台主机,运营商的路由器可能会有很多级,最外层的运营商路由器的WAN口IP就是一个公网IP
  • 子网内的主机需要和外网进行通信时,路由器将IP首部中的IP地址进行替换(替换成WAN口IP),这样逐级替换,最终数据包中的IP地址成为一个公网IP,这种技术成为NAT技术(Network Address Translation)

路由过程

  1. 当IP报文到达路由器时,路由器会先查看目的IP
  2. 路由器决定这个数据包是能直接发送给目标主机,还是需要发送给下一个路由器
  3. 依次反复,一直到达目标IP地址
路由表

在进行第二步时,路由器如何判断该报文应该直接发送给主机还是继续进行下一级路由呢?

每一个节点内部都会维护一个路由表

  • 路由表可以使用route命令查看
  • 如果目的IP地址命中了路由表,就直接转发给对应的LAN口
  • 路由表的最后一行,主要是由下一跳地址和发送LAN口组成,当目的地址与路由表中的其他行都不匹配时,就按照缺省的LAN口发送到下一跳的节点处
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值