总结 IP 协议的相关特性

1. 什么是 IP 协议?

如果把互联网比作一个巨大的"物流网络",那么 IP协议(互联网协议) 就是一套"快递打包和写地址的标准"。

它的核心工作只有两件:

  1. 编址:给每一台联网的设备分配一个唯一的地址(IP地址),类似收货地址。

  2. 路由:决定数据包从 A 点送到 B 点要走哪条路。

协议头格式如下:

  • 4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4。
  • 4位头部长度(header length):IP头部的长度是多少个32bit,也就是 length * 4 的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节。(占用空间)
  • 8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。(快递的加急等级)
  • 16位总长度(total length):IP数据报整体占多少个字节。
  • 16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的。(类似快递单号)
  • 3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示"更多分片",如果分片了的话,最后一个分片置为0,其他是1。类似于一个结束标记。(类似快递上的分箱标签)
  • 13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。(类似箱子的编号(第1箱/共3箱,第2箱/共3箱))
  • 8位生存时间(Time To Live,TTL):数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由,TTL -= 1,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。(快递的"转寄次数上限")
  • 8位协议:表示上层协议的类型。(包裹里的物品清单)
  • 16位头部校验和:使用CRC进行校验,来鉴别头部是否损坏。
  • 32位源地址和32位目标地址:表示发送端和接收端。
  • 选项字段(不定长,最多40字节):略。(备注栏)

2. IP协议的两大核心特性

特性一:无连接

概念:在发送数据之前,不需要先跟对方"打个电话"确认连接。直接就把数据包"扔"到网络上去了。

  • 通俗比喻:就像你寄一封平信。你写好地址扔进邮筒,不需要提前通知收件人。邮局也尽力去送,但不保证一定送到。

  • 优缺点:这种方式效率很高,但可靠性较低。

特性二:不可靠

概念:IP协议不保证数据包一定能送到目的地。它遵循"尽力而为"(Best Effort)的原则。

  • 具体表现 :如果网络拥堵导致路由器缓存满了,或者数据包损坏了,路由器会直接把这个包丢掉

  • 谁来负责 :IP协议本身不会去重传丢掉的包。这个任务会交给上层协议(比如 TCP)。TCP 发现丢了包,会喊一声:"喂,刚才那个包没收到,再发一遍!"

3. IP协议的两个版本:IPv4 与 IPv6

IPv4

  • 地址长度:32位,约 42 亿个地址。

  • 样子192.168.1.1(点分十进制)。

  • 现状:地址已经分配殆尽。就像一个小村子,原本每家一个门牌号,现在人太多了,门牌号不够用了。

IPv6

  • 地址长度:128位,号称"可以为地球上的每一粒沙子分配一个地址"。

  • 样子2001:0db8:85a3:0000:0000:8a2e:0370:7334(冒分十六进制)。

  • 优势:不仅地址多,而且处理起来更高效,安全性也更好。

4. IP地址的构成:网络号 + 主机号

一个IP地址就像一张快递单,上面有两行信息:

  1. 网络号:相当于"城市+街道"。路由器只看这一部分,就知道要把包送到哪个小区(子网)。

  2. 主机号:相当于"门牌号"。到了小区门口,再根据门牌号找到具体的住户。

如何区分它们? 靠子网掩码。

计算公式:IP地址 & 子网掩码 = 网络号

6. 特殊 IP 地址小知识

  • 127.0.0.1(本地环回):就是"自己跟自己说话",用来测试本机的网络协议栈是否正常工作。

  • 私有地址 :比如 192.168.x.x10.x.x.x。这些地址只能在局域网内使用,不能直接在公网上出现(需要借助NAT转换)。

  • 0.0.0.0:通常代表"本网络中的所有主机",常用于表示默认路由。

7. NAT

技术背景

NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能;

  • NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法:
  • 很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP;
  • 全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的;

NAT IP转换过程

  • NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
  • NAT路由器收到外部的数据时,又会把目标IP从202.244.174.37替换回10.0.0.10;
  • 在NAT路由器内部,有一张自动生成的,用于地址转换的表;
  • 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;
相关推荐
xuxg20051 小时前
4G AT命令解析框架LwAtParser V2.0设计及实现(基于uCOS II)--中级篇 第七章 TCP协议实现
网络·网络协议·tcp/ip
unirst19850072 小时前
nginx中的proxy_set_header参数详解
运维·网络·nginx
良许Linux2 小时前
嵌入式安全和加密技术
网络·安全
RisunJan2 小时前
Linux命令-lsusb(列出系统中所有USB总线以及连接到它们的设备信息)
linux·运维·服务器
wsad05322 小时前
CentOS 7 Minimal 配置静态 IP 完整指南(VMware NAT 模式)
linux·tcp/ip·centos
岳来2 小时前
网络小白对容器参数endpoint 和gateway 对比
网络·docker·容器·gateway·endpoint
三万棵雪松2 小时前
【Linux Shell 编程基础学习与实践作业】
linux·运维·网络·学习·嵌入式linux
生活很暖很治愈2 小时前
Linux——线程概念&控制&创建&等待
linux·服务器·c++·ubuntu
PPPPPaPeR.2 小时前
深入理解 Linux 文件系统:元数据、inode 与 block 核心原理
linux·运维·服务器