3.1 引言

unreliable不可靠的意思是它并不能保证IP数据报能成功的到达目的地。IP只提供尽力而为的传输服务。

conectionless无连接的意思是IP并不维护任何关于后续数据报的状态信息。整个数据报的处理是相互独立的。即每个数据报都是独立地进行路由选择,可能选择不同的路线。

3.2 IP首部

  • 4个字节的32bit值以下面的次序传输:(1)0-7 bit (2)8-15 bit (3)16-23 bit (4)24-31 bit,这种传输次序称为big endian字节序,因此他又称为网络字节序。
  • 目前的协议版本号是4,因此IP有时也称作IPv4。
  • 服务类型TOS字段:3 bit优先权子字段(已被忽略),4 bit的TOS子字段,1 bit未用位但必须置为0。如果所有的4 bit(TOS字段)都置0,则意味着是一般服务。
  • Telnet 和 Rlogin 这两个交互应用要求最小的传输时延,因此人们主要用来传输少量的交互数据。 FTP文件要求最大的吞吐量。SNMP(网络管理)和路由选择协议要求最高可靠性。NNTP(用户网络新闻)是唯一要求最小费用的应用。
  • 总长度字段是指整个IP数据报的长度,以字节byte为单位,是IP首部中必要的部分。利用首部长度字段和总长度字段可以知道IP数据报中数据内容的起始位置和长度。
  • 标示字段唯一地标识主机发送的每一份数据报。
  • TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数,它指定了数据报的生存时间。TTL的初始值由源主机设置(一般为32 或者 64),一旦经过一个处理它的路由器,值-1,。当字段值为0时,数据报就被丢弃。TTL体现了IP协议的unreliable。
  • 协议字段,被用于对数据报进行分用。可以识别出是哪个协议向IP传送数据。
  • 首部检验和字段是根据IP首部计算的检验和码。具体检验方法参见教材P26-27。
  • 每一份IP数据报都包含源IP地址和目的IP地址,它们都是32 bit的值。

3.3 IP路由选择

特殊情况:(1)目的主机与源主机直接相连(PointToPoint链路) (2)都在同一个共享网络上(以太网或令牌环网) IP直接到达目的主机。

教材P4 介绍了主机和路由器的区别,多接口主机一般不称作路由器,但是也可以具有路由器的功能:单纯的转发数据报。

IP可以从(1)TCP,UDP,ICMP,IGMP接收数据报(即在本地生成的数据报) (2)从一个网络接口接收数据报(待转发的数据报) 进行发送。

IP路由选择是逐跳逐跳(hop-by-hop)的进行,IP内存中有一个路由表,当接收到一份数据报之后,对该表进行搜索:

  • (1)搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号均匹配),找到后由标志字段的值决定发往下一跳路由器或者网络接口。
  • (2)步骤1 missed,搜索路由表,寻找能与目的网络号所匹配的表目,找到后由标志字段的值决定发往下一跳路由器或者网络接口。
  • (3)步骤1 2 missed,搜索路由表,寻找标为“默认”的表目,找到后发往表目指定的下一跳路由器。
  • (4)以上均失败,向生成数据报的application发送一个“不可达”的错误。

当接收一份来自某个网络接口的数据报时(待转发的数据报),IP先检查是否是本机的IP地址之一或者IP广播地址,是的话数据报被送到IP首部协议字段所指定的协议模块进行处理。如果不是,if(1)IP层被设置为路由器的功能,进行转发数据报的工作 else(2)数据报被丢弃。

3.4 子网寻址

  • 现在所有的主机都支持子网编址,把原来地址的主机号分为一个子网号和一个主机号。
  • 从InterNIC获得某类IP网络号以后,就由当地的管理员进行分配,一般采用自然的划分方式,对于B类地址来说,把留给主机号的16 bit中的8 bit分配给子网地址,剩下的8 bit作为主机号。
  • 子网对于外部路由器来说隐藏了内部网络结构的细节。但是子网对于子网内部的路由器是不透明的。
  • 与30个C类地址相比,用1个包含30个子网的B类地址的好处是:缩小了Internet路由表的规模。即子网划分缩短了路由表的规模。

3.5 子网掩码

  • 主机在引导过程中通过子网掩码确定有多少比特分配给子网号,有多少比特用于主机号。
  • 子网掩码经常用十六进制表示,特别是当界限不是一个字节(8 bit)时,因为子网掩码是一个比特掩码。

    给定IP地址和子网掩码之后,主机能够确定IP数据报的目的是:
  • (1)本子网上的主机
  • (2)本网络中其他子网的主机
  • (3)其他网络中的主机。
  • 知道IP地址之后,可以根据它的高位得知它是A类或者B类或者C类地址。也就是子网号和网络号的分界线
  • 知道子网掩码之后,可以知道子网号和主机号之间的分界线。
  • 子网掩码是一个32 bit的值,其中值为1的bit留给网络号和子网号,值为0的bit留给主机号。

做个这样的比方:

有很多人住在很多不同的小区里面,小区类比于子网,人类比于主机,比如说我们要找到幸福小区的陈某某同学,那么我们找的顺序是:先找到幸福小区,再找到陈某某同学。

小区有大有小,那么这通过小区的户口来决定,小区的户口类比于子网掩码。

举典型的例子:
IP 中前 24 位代表子网号,后 8 位代表主机号。
所以子网掩码就是 24 个 1(代表前 24 位是子网部分),加 8 个 0(后 8 位是主机部分)。
如果沿用 IP 的标识方式,就是 255.255.255.0 。
每一个 255 对应 8 个二进制 1,最后一个 0 对应 8 个二进制 0。
该子网可以容纳最多 256 台主机,也就是主机号从 0 到 255。

2016/7/24

【TCP/IP协议 卷一:协议】第三章 IP:网际协议的更多相关文章

  1. TCP/IP详解 卷一(第三章 IP:网际协议)

    IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输. IP提供不可靠.无连接的数据报传送服务. 1.不可靠:就是它不能保证IP数据报能成功地到 ...

  2. IP通信基础课堂笔记----第三章(自认为的重点)

    网络层协议IP IP数据包格式:固定部分        {  标识(16):计数器,源站每发送一个分组,标识+1:源IP地址的标识是全网唯一的. (包含TCP/UDP首部)  |  标志(3):当最低 ...

  3. TCP/IP协议第一卷第三章 IP首部分析

    IP介绍 IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP.IGMP数据都以IP数据报格式传输. IP提供不可靠.无连接的数据报传送服务. 不可靠(unreliable)它不能 ...

  4. 《TCP/IP详解 卷一》读书笔记-----第三章 IP

    1.Network byte order:数据在网络中的传输是按照大端模式来的,即如果需要传递一个四个字节的int变量,先传递最高的字节,然后依次类推.因此无论主机存储数据用的是大端模式还是小端模式, ...

  5. [深入理解Android卷一全文-第三章]深入理解init

    因为<深入理解Android 卷一>和<深入理解Android卷二>不再出版,而知识的传播不应该因为纸质媒介的问题而中断,所以我将在CSDN博客中全文转发这两本书的全部内容. ...

  6. 第三章 IP地址规划设计技术(很重要)

    知识重点: 选择题考点 IP基础(网络地址.子网掩码) 网络地址转换 NAT 的原理 CIDR (计算方法) IPv6 地址表示 综合题 IP地址的分类与计算 VLSM 地址规划 3.1 基础知识 3 ...

  7. 【TCP/IP详解 卷一:协议】第十七章 TCP:传输控制协议

    本章作为TCP的入门章节,简单的概述了一些TCP的知识,和TCP数据报的首部格式. TCP 最重要的特性:reliable. 17.1 引言 本章介绍的是 TCP为应用层提供的服务. 17.2 TCP ...

  8. 【TCP/IP详解 卷一:协议】第十二章 广播和多播

    建议参考:广播和多播 IGMP 12.1 引言 IP地址知识点回顾: IP地址分为三种:(1)单播地址 (2)广播地址 (3)多播地址 另外一种是,IP地址一般划分成五类:A-E类. 单播 考虑 类似 ...

  9. 【TCP/IP详解 卷一:协议】第9章 IP选路

    推荐链接:网络地址与主机地址 9.1 引言 路由选择程序(daemon),通常这是一个用户进程.在大多数的Unix系统中,大多数的路由选择程序都是路由程序和网关程序. 路由表经常被IP访问,但是它被路 ...

随机推荐

  1. 关于微信小程序,你想知道的他们都问了

    微信公开课深圳站小程序专场刚刚结束,大家通过"微信公开课+"互动小程序提出了许多问题.我们筛选了后台问得最多的九个问题进行解答,快来看看这里有没有你想要的答案吧! @谢杨:小程序是 ...

  2. mysql 开启profiling

    mysql 开启profiling

  3. C和C++不容易发现的区别

    1.char指针指向字符串常量 当下面的代码写到.c文件中时,可以正常运行;而写到.cpp文件中就会报错:无法从“const char [6]”转换为“char *”. char * c = &quo ...

  4. [LeetCode] 836. Rectangle Overlap_Easy

    A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are the coordinates of its bot ...

  5. iOS 开发笔记-Storyboard

    什么时候用Pust,什么时候用Modal? 一般情况下,是导航控制器点过去的,都使用Pust.如果是相对独立的,则用Modal,比如是导航上面的+添加之类. 关闭一个Modal -(IBAction) ...

  6. vs2010用NuGet(程序包管理)安装EF失败之解决办法

    今天用程序包管理控制台安装EF.报错.如下

  7. 《Convolutional Neural Network Architectures for Matching Natural Language Sentences》句子匹配

    模型结构与原理 1. 基于CNN的句子建模 这篇论文主要针对的是句子匹配(Sentence Matching)的问题,但是基础问题仍然是句子建模.首先,文中提出了一种基于CNN的句子建模网络,如下图: ...

  8. Object-C-NSFileHandle

    NSFileHandle 类中得到方法可以很方便的对文件数据进行读写.追加,以及偏移量的操作. NSFileHandle 基本步骤: 1.打开文件,获取一个NSFileHandle 对象 2.对打开N ...

  9. C++飞机大战

    #include<windows.h> #include"resource.h" #include<stdlib.h> #include<time.h ...

  10. python recv()是什么

    socket有个recv方法,recv有一个参数,指定数据缓冲区的大小 但是现在的问题就是不知道将要接受的数据的大小到底是多少,可能只有几个字节,可能会有几M,google了一下socket的入门文章 ...