1. 特点:

  所有的TCP,UDP,ICMP,IGMP数据都以IP数据报格式传输。  提供不可靠,无连接服务。

  不可靠:

    不能保证IP数据报能成功到达目的。IP仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃数据报,然后         发送ICMP消息给信源端。任何要求的可靠性必须由上层提供(如TCP);

  无连接:

    IP不维护任何关于后续数据报的转态信息。每个数据报的处理是相互独立的。即,IP数据报可以不按发送顺序接收。如果一个信源向相同的信宿发sing两个连续的数据报    (先A后B),每个数据报都是独立进行路由选择,B可能比A先到达。

2. IP首部

  版本目前大部分为4.也称为IPV4.
  首部长度指首部占32 bit的数目.因此IP首部最长为60 Byte,且为4 Byte的倍数.
  服务类型(TOS)包括3bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须置0.4 bit的TOS分别代表:最小时延,最大吞吐量,最高可靠性和最小费用.
  总长度字段指整个数据报的长度.以Byte为单位.该字段16 bit,所以IP数据报的最大长度可达65535 Byte.
  标识字段唯一地标识主机发送的每一份数据.标志位和片偏移字段与分片重组有关.
  TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数.
  协议字段表示那个协议向IP传送数据报.1为ICMP协议,2为IGMP协议,6为TCP协议,17为UDP协议.
  首部检验和字段是根据IP首部计算的检验和码.它不对首部后面的数据进行计算.
  选项字段是一个可变长的可选信息.但必须为32 bit的倍数(首部长度字段所要求).
  IP地址为32 bit.

  服务类型(TOS):包括3bit的优先权字段(已被忽略),4bit的TOS子字段和1bit未用位但必须置0。4bit的TOS分布代表:最小延迟,最大吞吐量,最高可靠性,最小费用。4bit只能置其中1bit。如果4bit均为0,意味着是一般服务。Te l n e t和R l o g i n这两个交互应用要求最小的传输时延,因为人们主要用它们来传输少量的交互数据。另一方面, F T P文件传输则要求有最大的吞吐量。最高可靠性被指明给网络管理(S N M P)和路由选择协议。用户网络新闻( Usenet news, NNTP)是唯一要求最小费用的应用。

  

3. IP路由选择

  在一般情况下,IP从TCP,DUP,ICMP和IGMP接收数据报(即本地生成的数据)并进行发送,或者从其他接口接收数据(待转发的数据)进行转发或接收.
  当数据报来自某个接口:
    1).IP首先判断IP地址是否为本地地址或者广播地址,如果是就送到首部协议段所指定的协议模块进行处理.
    2).如果不不满足这些地址,且IP层设置为了路由功能,那么就对数据进行转发,否则数据报被丢弃.
  IP路由选择顺序:
    1)搜索路由表,寻找与目地IP完全匹配的表目.(网络号和主机号)
    2)搜索路由表,寻找与目地IP网络号相同的表目.

    3)搜索路由表,寻找默认(default)表目.

    以上3步依次执行,成功即跳出,如果都不成功,该数据报就不能被转发.

从bsdi到ftp.uu.net(192.48.96.9)的初始路径:

  主机bsdi有一份IP数据报要传到ftp.uu.net主机上,它的IP地址是192.48.96.9。经过的前三个路由器如图所示。首先,主机bsdi搜索路由表,但是没有找到与主机地址或网络地址相匹配的表目,因此只能用默认的表目,把数据报传给下一站路由器,即主机sun。当数据报从bsdi被传到sun主机上以后,目的IP地址是最终的信宿机地址(192.48.96.9),但是链路层地址却是sun主机的以太网接口地址.

  当sun收到数据报后,它发现数据报的目的IP地址并不是本机的任一地址,而sun已被设置成具有路由器的功能,因此它把数据报进行转发。经过搜索路由表,选用了默认表目。根据sun的默认表目,它把数据报转发到下一站路由器netb,该路由器的地址是140.252.1.183。数据报是经过点对点SLIP链路被传送的。这里,我们没有给出像以太网链路层数据帧那样的首部,因为在SLIP链路中没有那样的首部。当netb收到数据报后,它执行与sun主机相同的步骤:数据报的目的地址不是本机地址,而netb也被设置成具有路由器的功能,于是它也对该数据报进行转发。采用的也是默认路由表目,把数据报送到下一站路由器gateway(1 4 0 . 2 5 2 . 1 . 4)。位于以太网1 4 0 . 2 5 2 . 1上的主机netb用ARP获得对应于1 4 0 . 2 5 2 . 1 . 4的48 bit以太网地址。这个以太网地址就是链路层数据帧头上的目的地址。路由器gateway也执行与前面两个路由器相同的步骤。它的默认路由表目所指定的下一站路由器I P地址是140.252.104.2。

说明:

  1) 该例子中的所有主机和路由器都使用了默认路由。事实上,大多数主机和一些路由器可以用默认路由来处理任何目的,除非它在本地局域网上。

  2) 数据报中的目的I P地址始终不发生任何变化(只有使用源路由选项时,目的I P地址才有可能被修改,但这种情况很少出现)。所有的路由选择决策都是基于这个目的IP地址。

  3) 每个链路层可能具有不同的数据帧首部,而且链路层的目的地址(如果有的话)始终指的是下一站的链路层地址。在例子中,两个以太网封装了含有下一站以太网地址的链    路层首部,但是S L I P链路没有这样做。以太网地址一般通过A R P获得。

4. 子网寻址

  子网编制:不是吧IP地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分为一个子网号和一个主机号。

  这样做的原因是因为A类和B类地址为主机号分配了太多的空间,可分别容纳的主机数为224-2 和 216-2。事实上,在一个网络中人们并不安排这么多的主机。由于全0或全1的主机号都是无效的(有其他用途),因此我们把总数减去 2。 在InterNIC获得某类I P网络号后,就由当地的系统管理员来进行分配,由他(或她)来决定是否建立子网,以及分配多少比特给子网号和主机号。例如,这里有一个 B类网络地址(1 4 0 . 2 5 2) ,在剩下的16 bit中,8 bit用于子网号,8 bit用于主机号,格式如图所示。这样就允许有2 5 4个子网,每个子网可以有2 5 4台主机。

5. 子网掩码

    

协议详解3——IP的更多相关文章

  1. TCP/IP协议详解笔记——IP协议

    简介 TCP/IP协议族中最核心的协议,提供不可靠.无连接的数据报传输服务. 不可靠:不能保证IP数据报能成功送达. 无连接:并不维护后续数据报的状态信息,每个数据报的处理都是相互独立.数据报可能不会 ...

  2. TCP/IP协议详解概述

    TCP/IP协议详解卷1--第一章概述--读书笔记 作者:vpoet 日期:2015/06/25 注:本系列的文章只是作者对TCP/IP协议的理解,难免会出现纰漏或者不完整,当然也有可能很肤浅,希望大 ...

  3. IP协议详解(转)

    本文转载自博文协议森林05 我尽力 (IP协议详解).这篇博文写的很有趣味,特转载! IPv4与IPv6头部的对比 我们已经在IP接力中介绍过,一个IP包分为头部(header)和数据(payload ...

  4. 【转载】TCP /IP协议详解

    首先,TCP/IP不是一个协议,而是一个协议族的统称. 里面包括了IP协议,IMCP协议,TCP协议,以及http.ftp.pop3协议等等. TCP/IP协议分层 提到协议分层,我们很容易联想到IS ...

  5. TCP/IP协议详解---概述

        工作之后,才发现以前在学校里学的东西忘得太快太干净了,现在需要一点点地捡起来了,要不然写几行程序会闹很多笑话会出现很多bug的.从今天开始,翻一翻<TCP/IP协议详解 卷1>这本 ...

  6. 第二章 IP协议详解

    第二章 IP协议详解 2.1 IP服务的特点 它为上层协议提供了无状态,无连接,不可靠的服务 名称 简介 优点 缺点 对付缺点的方法 无状态 IP通信双方不同步传输数据的状态信息 无须为保持通信的状态 ...

  7. TCP /IP协议详解【转】

    转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...

  8. linux高性能服务器编程 (二) --IP协议详解

    第二章 IP协议详解 什么是IP协议:IP 协议是TCP/IP协议族的动力,它为上层提供了无状态.无连接.不可靠的服务. IP 头部信息:头部信息会出现在每一个IP数据报上,便于记录IP通信的源端IP ...

  9. (转)协议森林05 我尽力 (IP协议详解)

    协议森林05 我尽力 (IP协议详解) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! IPv4与IPv6头部的对比 我们已经在I ...

随机推荐

  1. Struts2返回JSON数据的具体应用范…

    Struts2返回JSON数据的具体应用范例 博客分类: Struts2 Struts2JSON  早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...

  2. CodeForces 484B Maximum Value (数学,其实我也不知道咋分类)

    B. Maximum Value time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  3. 基于Laravel框架的一个简单易学的微信商城(新手必学)

    俗话说,麻雀虽小可五脏俱全呀! 今天分享的这个基于Laravel的小项目大概功能有这些: 1.实现会员登录.注册功能.数据双向验证功能.2.实现手机短信验证.邮件激活账号.邮件通知.3.ajax提交数 ...

  4. Django 框架

    MVC 框架和MTV框架  (了解即可) MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...

  5. React 从入门到进阶之路(五)

    之前的文章我们介绍了  React 事件,方法, React定义方法的几种方式 获取数据 改变数据 执行方法传值.接下来我们将介绍 React 表单事件 键盘事件 事件对象以及 React中 的 re ...

  6. 使用ASP.NET Core实现Docker的HealthCheck指令

     写在前面 HealthCheck 不仅是对应用程序内运行情况.数据流通情况进行检查, 还包括应用程序对外部服务或依赖资源的健康检查. 健康检查通常是以暴露应用程序的HTTP端点的形式 实施,可用于配 ...

  7. CSS 定位 (Positioning)概述

    div.h1 或 p 元素常常被称为块级元素. 这意味着这些元素显示为一块内容,即“块框”. 与之相反,span 和 strong 等元素称为“行内元素”,这是因为它们的内容显示在行中,即“行内框”. ...

  8. 自动化测试工具 Test Studio入门教程

    Test Studio安装 可以到下载试用版 官网 http://www.telerik.com/teststudio , 装完以后需要装silverlight 安装好了,主界面是介个样子的 Test ...

  9. LeetCode 刷题笔记 (树)

    1.  minimum-depth-of-binary-tree 题目描述 Given a binary tree, find its minimum depth.The minimum depth ...

  10. Jmeter 跨线程组传递参数 之两种方法

    终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直 ...