TCP/IP协议栈第三层是网络层,网络层的目的是实现两个系统之间的数据透明传送,具体功能包括寻址和路由选择、连接和建立、保持和终止等。

TCP/IP协议给internet上的每台主机和路由分配一个地址,数据在internet中的传输主要就是依据一个个的IP地址来寻迹,最终把数据传送到要传送的目的主机上。

IP协议在TCP/IP协议栈的位置

无需连接:

跨域多个异构物理网,IP协议独立的对待要传输的数据报,在传输前不建立连接,传输数据报需要经过不同的路径。

不可靠性:

可靠性问题交由高层协议解决,数据在传输过程中可能出现丢失,延迟和无序情况。

最大努力传输:

IP尽最大的努力来交付数据报,不轻易放弃数据报。

互联网把它最基本的传输单元称为数据报,与物理网络帧类似,数据报分为首部和数据区,如下图:

IP不规定数据区的格式,可用来传输任意数据。


IP首部:

版本:占4位,指IP协议的版本,目前是IPv4或IPv6。无论主机还是路由器,在收到一个IP数据报时,首先要检查版本字段,以便选择相应的IP协议模块来进行处理。

首部长度:占4位,可表示最大数值是15个单位(一个单位4个字节(32位)),取值5-15,因此IP首部长度范围是20-60字节。

服务类型:占8位。该分组所期望的服务质量。(通用)

bir0             bit1           bit2              bit3             bit4          bit5               bit6          bit7

precedence:低3位,指示对分组进行处理(排队或丢弃)的优先权,值从0(普通优先级)到7(网络控制)。

D、T、R:该分组所希望的路由转发服务类型,不能同时设置。

D:minimize delay

T:maximize reliability

R:maximize throughput

最高两位为保留位。

在RFC1349文件中多出一个C:minimize cost

在RFC2474文件中:

DSCP:differentiated services code point,区分服务编码点

CU:currently unused

服务类型:

bit0    bit1       bit2                bit3           bit4          bit5    bit6         bit7

D(delay)延迟,T(throughput)吞吐量,R(reliable)可靠性,M(monetary cost花费,开销,U(unused)未使用。

优先级有种:

111-Network Control(网络控制)

110-Internetwork Control(网间控制)

101-CRITIC/ECP(关键)

100-Flash override(疾速)

011-Flash(闪速)

010-Immediate(快速)

001-Priority(优先)

000-Routine(普通)

优先级6和7一般保留给网络控制数据使用,如路由。

优先级5推荐给语音数据使用。

优先级4由视频会议和视频流使用。

优先级3给语音控制数据使用。

优先级1和2给数据业务使用。

优先级0为默认标记值。

在标记数据时,既可以使用数值,也可以使用名称(英文名称)。

第3到6比特的含义如下:

0000--normal service;

1000--minimize delay;

0100--maximize throughput;

0010--maximize reliability;

0001--minimize monetary cost。

服务类型功能:指定本数据报的处理方式,TOS不是必须实现的。

区分服务编码点(DSCP):

bit0 --- bit5                                                           bit6-bit7

利用已使用的6比特和未使用的2比特,通过编码值来区分优先级。

DSCP 使用6个bit,DSCP的值得范围为0~63。

DSCP 是“IP 优先”和“服务类型”字段的组合。为了利用只支持“IP 优先”的旧路由器,会使用 DSCP 值,因为 DSCP 值与“IP 优先”字段兼容。

用通俗一点的语言解释,其实DSCP就是为了保证通信的QoS,在数据包IP头部的8个标识字节进行编码,来划分服务类别,区分服务的优先级。

每一个DSCP编码值都被映射到一个已定义的PHB(Per-Hop-Behavior)标识码。

通过键入DSCP值,电话、Windows客户和服务器等终端设备也可对流量进行标识。如果有兴趣,可以用Wireshark软件抓包看看数据。

总长度(total lenght):占16位,指首部和数据的总长度,单位以字节为单位,数据报最大长度为65535字节。


标识字段(identification):占16位,让目的主机确定一个新到达的分断属于哪一个数据报,源站每发送一个分组,标识值+1。

标志字段(flags):

第一位不使用,第二位为DF(Don't Fragment)位,DF位设为1时表明路由器不能对该上层数据包分段。如果一个上层数据包无法在不分段的情况下进行转发,则路由器会丢弃该上层数据包并返回一个错误信息。第三位为MF(More Fragments)位,当路由器对一个上层数据包分段,则路由器会在除了最后一个分段的IP包的包头中将MF位设为1。

分段偏移(Fragmentation offset):占13位,表示该IP包在该组分片包中位置,接收端靠此来组装还原IP包。以8字节为单位。

MTU,最大传输单元,当一个数据报较大,无法用一帧数据传输时(以太网一帧数据通常为64-1518字节),IP模块要把它分成较小的片,并为各个分片构造一个单独的IP数据报。

当同一个数据报的各个分片到达目的主机后,IP模块要将其重组,然后才能向上层交付。

生存时间(TTL):占8位,描述在一个数据包在计算机和网络设备间传送的时候, 在它可以被丢弃之前, 可以经历的设备的数目的一个极限值。TTL是由数据包的发送者设置的,在前往目的地的过程中,每经过一台主机或设备, 这个值就要减少一点.(通常为1)。如果在数据包到达目的地前,TTL值被减到了0,那么这个包将作为一个ICMP错误的数据包被丢弃。

TTL可以防止无法到达目的地的数据包在网络中无限制地传递, 形成"不死包"。主要用来限制数据报在网络中的存活时间。

在路由器收到数据报时,TTL值为t1,处理时延为t2(通常为1),计算t=t1-t2,如果t<0,丢弃数据报,否则将t置为新的TTL值,并转发数据报。


协议(protocol):占8位,指出此数据报携带的数据使用何种协议,以便目的主机的IP层知道将数据部分上交给哪个处理过程。

1:ICMP  2:IGMP      6:TCP     17:UDP    88:IGRP    89:OSPF

首部校验和:占16位,只校验数据报首部,数据部分不校验。

源地址:源主机的IP地址。

目的地址:目的主机的IP地址。

可选项(Options):这是一个可变长的字段。该字段属于可选项,主要用于测试,由起源设备根据需要改写。可选项目包含以下内容:
    松散源路由(Loose source routing):给出一连串路由器接口的IP地址。IP包必须沿着这些IP地址传送,但是允许在相继的两个IP地址之间跳过多个路由器。
    严格源路由(Strict source routing):给出一连串路由器接口的IP地址。IP包必须沿着这些IP地址传送,如果下一跳不在IP地址表中则表示发生错误。
    路由记录(Record route):当IP包离开每个路由器的时候记录路由器的出站接口的IP地址。
    时间戳(Timestamps):当IP包离开每个路由器的时候记录时间。
填充(Padding):因为IP包头长度(Header Length)部分的单位为32bit,所以IP包头的长度必须为32bit的整数倍。因此,在可选项后面,IP协议会填充若干个0,以达到32bit的整数倍。

关于可选项部分详解,请关注http://bbs.alifpga.com/

数据部分:IP报文数据。IP数据包报的数据部分通常情况下是传输层数据报(TCP或UDP)。

首部校验和的计算:IP首部校验和算法同之前讲过的ICMP校验和算法是一样的。这里不再赘述。


版权所有权归卿萃科技,转载请注明出处

作者:卿萃科技ALIFPGA

原文地址:卿萃科技FPGA极客空间 微信公众号


扫描二维码关注卿萃科技FPGA极客空间


Internet上的网络层的更多相关文章

  1. 浅析Internet上使用的安全协议

    Internet上使用的安全协议 网络安全是分层实现的,从应用层安全到数据链路层安全. 一.运输层安全协议:安全套接字SSL 1.1.简介 SSL 是安全套接层 (Secure Socket Laye ...

  2. vc:如何从Internet上有效而稳定地下载文件

    http://www.vckbase.com/index.php/wv/172 如何从Internet上有效而稳定地下载文件 ,这是很多网络应用程序要考虑的重要问题,本文提供的代码段针对这个问题进行了 ...

  3. 在公网(internet)上建立website时不能用http访问

    我们在internet的IDC提供的虚拟机上建了新的web site, 域名也从阿里巴巴那里得到二级域名,也经过映射到了虚机的IP, 在本机都可以用域名以Http方式访问,但在internet上的其它 ...

  4. Internet上的WWW服务与HTTP协议(非常非常不错的文档,推荐订阅)

    Internet上的WWW服务与HTTP协议 兼容性----H1TP/1.1与HTTP/1.0后向兼容;运行1.1版本的web服务器可以与运行1.0版本的浏览器“对话”,运行1.1版本的浏览器也可以与 ...

  5. 如今在 Internet 上流传的“真正”的程序员据说是这样的

    如今在 Internet 上流传的“真正”的程序员据说是这样的: (1) 真正的程序员没有进度表,只有讨好领导的马屁精才有进度表,真正的程序员会让 领导提心吊胆. (2) 真正的程序员不写使用说明书, ...

  6. 第4章 TCP/IP通信案例:访问Internet上的Web服务器

    第4章 TCP/IP通信案例:访问Internet上的Web服务器 4.2 部署代理服务器 书中为了演示访问Internet上的Web服务器的全过程,使用了squid代理服务器程序模拟了一个代理服务器 ...

  7. 使用SAP云平台的destination消费Internet上的OData service

    通过SAP云平台上的destination我们可以消费Internet上的OData service或者其他通过HTTP方式暴露出来的服务. 创建一个新的destination: 维护如下属性: 点击 ...

  8. 反向代理:是指以代理server来接收Internet上的请求,然后将请求转发到内部网络的server上,并将结果返回给Internet上连接的client,此时的代理server对外就表现为反向代理server。

       Nginx安装好之后.開始使用它来简单实现反向代理与负载均衡的功能.在这之前.首先得脑补一下什么是反向代理和负载均衡.   反向代理:是指以代理server来接收Internet上的请求,然后将 ...

  9. 我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 Internet 上用于确保您通信的安全性。

    早上使用.Net WebClient类采集亚马逊数据,返回http 400 Bad Request错误,内容里面有“我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 ...

随机推荐

  1. 用Java编程计算猴子吃桃问题

    猴子吃桃问题:猴子吃桃子问题:猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又吃了一个.第二天又将剩下的桃子吃掉一半,又多吃了一个.以后每天都吃前一天剩下的一半零一个.到第10天在想吃的时候就剩 ...

  2. Linux 增加对外开放的端口

    查看端口是否对外开放 /etc/init.d/iptables status # /etc/init.d/iptables status 表格:filter Chain INPUT (policy A ...

  3. # IFE前端(2015春)-task2

    第一章 JavaScript数据类型及语言基础 期望达成 掌握JavaScript的各种数据类型概念.判断方法 掌握JavaScript函数.对象的概念 掌握字符串.数字.数组.日期等对象的方法 了解 ...

  4. python学习笔记(virtualenv下载安装)

    之前博客评论中有人建议我面对多个python版本的情况.可以使用virtualenv这个python虚拟沙盒 首页是利用pip下载.关于pip如何下载安装前面的博客中已经提到就不细说 cmd直接进入p ...

  5. PowerShell 在hyper-v中创建虚拟机

    # This script configures the Hyper-V machines used for the 50331 Course. # PowerShell 3.0 and Window ...

  6. 安装Charles报错

    去年用的是charles4.1.2版本,今年这个版本的安装包始终安装报错,不管公司电脑还是自己电脑........ 我的解决方案很Lower的.......... 登录Charles官网:https: ...

  7. 【scala】元组

    元组跟list类似,元组也是不可边的,但是元组可以容纳不同类型的元素. 元组用起来很简单,要实例化一个新的元组,只需要将对象放在圆括号当中,用逗号隔开即可. val pair = (99,“Luftb ...

  8. 【Java】final关键字

    1.final数据 (1)基本类型      数值恒定不变 (2)对象引用      引用恒定不变,初始化的时候指向一个对象后,无法改变为另一个对象,但是对象本身可以修改 2.final方法 可以把方 ...

  9. 一个html+js+ashx+easyui+ado.net权限管理系统

    http://www.cnblogs.com/oppoic/p/html_js_ashx_easyui_authorize.html

  10. DMD数字微镜

    Digital Micromirror Device DMD技术于1987年被发明,到1996年春走向市场.DMD是一个真正的微光机电系统(MOEMS),该器件是利用CMOS工艺和微机械加工(MEMS ...