TCP/IP协议详解笔记——IP协议
简介
TCP/IP协议族中最核心的协议,提供不可靠、无连接的数据报传输服务。
- 不可靠:不能保证IP数据报能成功送达。
- 无连接:并不维护后续数据报的状态信息,每个数据报的处理都是相互独立。数据报可能不会按照发送顺序接收。同一站点向另一站点发送的多个数据报可能经过不同的路由到达。
帧格式
IP数据报格式如下。

- 版本:IP协议版本号,目前为4。故称为IPv4.
- 首部长度:以,不包含可选字段的IP首部大小为20字节。最大值为15,字节。
- 服务类型(TOS):3bit优先权(已被忽略),4bit的TOS字段,1bit未用(0)。4bit的TOS分别为最小时延、最大吞吐量、最高可靠性、最小费用。4bit中只能置其中一个为1。全零时表示一般服务。现在大多数TCP/IP实现都不支持TOS特性,但是无线中QoS有用到该字段。
- 总长度:整个IP数据报的长度,以字节。
- 标识符:唯一标示一份IP数据报。通常值递增。
- 标志位:
- 片偏移:
- TTL:time to live,生存时间。设置了数据报可以经过的最多路由器数。由源主机设置,时,被丢弃。并发送ICMP报文通知源主机。
- 协议:标示基于IP的协议。ICMP:1,IGMP:2,TCP:6,UDP:17。
- 首部校验和:根据IP首部计算的校验和,,按照16bit进行二进制反码求和,结果存放于检验和字段中。
- 源IP地址
- 目的IP地址
- 可选字段:
安全和处理限制(用于军事领域,详见RFC 1108)
记录路径(让每个路由器都记下它的IP地址)
时间戳(让每个路由器都记下它的IP地址和时间)
宽松的源站选录(为数据报指定一系列必须经过的IP地址)
严格的源站选录(只能经过指定的这些地址)
可选字段必须是32bit的整数倍,必要时需要插入0进行填充,因为IP首部始终是32bit的整数倍(这是首部长度字段要求的)
IP路由选择
对于主机,如果目的主机和源主机直接相连,或者处于同一个网络中,IP数据报就直接发送到目的主机。否则,主机将数据报发送给默认的路由器,由路由器来转发包。
IP层可以配置成路由器的功能,也可以配置成主机功能。区别是,主机不转发数据报,而路由器需要转发包。
IP层在内存中都有一个路由表,当收到数据报进行发送时,都要搜索该表。
路由表每项包含的信息:
- 目的IP地址。可以是主机地址,也可以是网络地址,由下述的标志来标示。
- 下一跳路由器的IP地址,或者是直接连接的接口。
- 标志。一个标志标示目的IP是网路地址还是主机地址,另一个标志指示下一站路由器是否为真正的下一站路由器,还是一个直连的接口。
- 为数据报的传输指定一个网络接口。
IP路由选择主要完成下面的功能:
1) 搜索路由表,寻找与目的IP完全匹配的条目。如果找到,则把报文发给下一站路由或者直连接口(取决于标志字段的值)
2) 搜索路由表,寻找与目的网络号匹配的条目。找到的处理同上。这种搜索网络的匹配方法必须考虑可能的子网掩码。
3) 搜索路由表,寻找标为“默认(default)”的条目。如果找到,处理同上。
如果上述都没成功,则丢弃该包,并返回主机不可达或者网络不可达的错误。
数据包在传输过程中,经过不同的链路层或不同的网络会构造不同的链路层首部,但是IP部分不会更改(忽略路由器的NAT功能)。链路层的目的地址(如果有的话),始终是下一站的链路层地址。
子网寻址
最早:IP地址 = 网络号 + 主机号
子网编址:IP地址 = 网络号 + 子网号 + 主机号
子网对于子网以外的路由器都是透明的,对于子网内部的路由器不透明。
RFC 1009允许含有子网的一个网络使用多个子网掩码。
IP地址编址方案:将IP地址划分为A,B,C,D,E五类,其中A,B,C为基本类,D,E类作为多播和保留使用。
|
网络类别 |
最大网络数 |
IP地址范围 |
最大主机数 |
私有IP地址范围 |
|
A |
126(2^7-2) |
1.0.0.0--126.255.255.255 |
16777214 |
10.0.0.0--10.255.255.255 |
|
B |
16384(2^14) |
128.0.0.0--191.255.255.255 |
65534 |
172.16.0.0--172.31.255.255 |
|
C |
2097152(2^21) |
192.0.0.0--223.255.255.255 |
254 |
192.168.0.0--192.168.255.255 |
内部私有地址:
A类 10.0.0.0--10.255.255.255
B类 172.16.0.0--172.31.255.255
C类 192.168.0.0--192.168.255.255
特殊的IP地址:
0表示所有的比特为0,-1表示所有的比特位全为1,netid、subnetid和hostid分别表示不为全0或全1的对应字段。子网号栏为空表示该地址没有进行子网划分。

TCP/IP协议详解笔记——IP协议的更多相关文章
- TCP/IP协议详解笔记——ARP协议和RARP协议
ARP:地址解析协议 对于以太网,数据链路层上是根据48bit的以太网地址来确定目的接口,设备驱动程序从不检查IP数据报中的目的IP地址.ARP协议为IP地址到对应的硬件地址之间提供动态映射. 工作过 ...
- 协议详解3——IP
1. 特点: 所有的TCP,UDP,ICMP,IGMP数据都以IP数据报格式传输. 提供不可靠,无连接服务. 不可靠: 不能保证IP数据报能成功到达目的.IP仅提供最好的传输服务.如果发生某种错误时 ...
- PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯
转自:http://blog.csdn.net/vbvcde/article/details/7660497 我们提供 PPI协议的官方文档,协议更新时间为2005年,下面是我们根据文档解析的PPI读 ...
- Java web 入门知识 及HTTP协议详解
Java web 入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...
- TCP/IP协议详解概述
TCP/IP协议详解卷1--第一章概述--读书笔记 作者:vpoet 日期:2015/06/25 注:本系列的文章只是作者对TCP/IP协议的理解,难免会出现纰漏或者不完整,当然也有可能很肤浅,希望大 ...
- TCP/IP协议详解---概述
工作之后,才发现以前在学校里学的东西忘得太快太干净了,现在需要一点点地捡起来了,要不然写几行程序会闹很多笑话会出现很多bug的.从今天开始,翻一翻<TCP/IP协议详解 卷1>这本 ...
- TCP /IP协议详解【转】
转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...
- 【转载】TCP /IP协议详解
首先,TCP/IP不是一个协议,而是一个协议族的统称. 里面包括了IP协议,IMCP协议,TCP协议,以及http.ftp.pop3协议等等. TCP/IP协议分层 提到协议分层,我们很容易联想到IS ...
- IP协议详解(转)
本文转载自博文协议森林05 我尽力 (IP协议详解).这篇博文写的很有趣味,特转载! IPv4与IPv6头部的对比 我们已经在IP接力中介绍过,一个IP包分为头部(header)和数据(payload ...
随机推荐
- git bush的一些基础命令
git bush的一些基础命令(不区分大小写) 通过命令创建本地仓库 首先自己需要手动建一个文件夹用于本地仓库 进行如下输入,使用cd跳转到刚刚创建的文件夹中 之后再输入 git init 即可创建 ...
- Linux 系统中 sudo 命令的 10 个技巧
概览 sudo 表示 "superuser do". 它允许已验证的用户以其他用户的身份来运行命令.其他用户可以是普通用户或者超级用户.然而,大部分时候我们用它来以提升的权限来运行 ...
- 第二章JavaScript 函数和对象
1 JavaScript 函数 1.1 声明函数的方式 function 关键字 匿名函数方式(表达式方式) Function 构造函数方式 1.2 参数问题 形参和实参数量问题 可选形参(参数默认值 ...
- node实现一个简单的聊天室(认识一下socket)
边学边理解node的高深,今天写了一个聊天室的demo,很简单,认识一下socket node服务端代码 var express = require('express'); var app = exp ...
- 递推:Number Sequence(mod找规律)
解题心得: 1.对于数据很大,很可怕,不可能用常规手段算出最后的值在进行mod的时候,可以思考找规律. 2.找规律时不必用手算(我傻,用手算了好久).直接先找前100项进行mod打一个表出来,直接看就 ...
- RAID与LVM磁盘阵列技术
RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列) RAID概念: RAID技术通过把多个硬盘设备组合成一个容量更大.安全性更好的磁盘阵列,并把数据 ...
- loj2074 「JSOI2016」灯塔
loj 题面错的--去bzoj上看吧qwq 观察到 \(\sqrt{|i-j|}\) 的取值只有 \(\sqrt{n}\) 级别个,然后就很显然了,rmq. #include <iostream ...
- cf965e Short Code
ref #include <algorithm> #include <iostream> #include <cstring> #include <cstdi ...
- 【Remove Nth Node From End of List】cpp
题目: Given a linked list, remove the nth node from the end of list and return its head. For example, ...
- C++ map 的用法归纳2
[尊重原著: http://blog.csdn.net/zcf1002797280/article/details/7847819] Map是c++的一个标准容器,它提供了很好一对一的关系,在一些程序 ...