Internet上的网络层
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上的网络层的更多相关文章
- 浅析Internet上使用的安全协议
Internet上使用的安全协议 网络安全是分层实现的,从应用层安全到数据链路层安全. 一.运输层安全协议:安全套接字SSL 1.1.简介 SSL 是安全套接层 (Secure Socket Laye ...
- vc:如何从Internet上有效而稳定地下载文件
http://www.vckbase.com/index.php/wv/172 如何从Internet上有效而稳定地下载文件 ,这是很多网络应用程序要考虑的重要问题,本文提供的代码段针对这个问题进行了 ...
- 在公网(internet)上建立website时不能用http访问
我们在internet的IDC提供的虚拟机上建了新的web site, 域名也从阿里巴巴那里得到二级域名,也经过映射到了虚机的IP, 在本机都可以用域名以Http方式访问,但在internet上的其它 ...
- Internet上的WWW服务与HTTP协议(非常非常不错的文档,推荐订阅)
Internet上的WWW服务与HTTP协议 兼容性----H1TP/1.1与HTTP/1.0后向兼容;运行1.1版本的web服务器可以与运行1.0版本的浏览器“对话”,运行1.1版本的浏览器也可以与 ...
- 如今在 Internet 上流传的“真正”的程序员据说是这样的
如今在 Internet 上流传的“真正”的程序员据说是这样的: (1) 真正的程序员没有进度表,只有讨好领导的马屁精才有进度表,真正的程序员会让 领导提心吊胆. (2) 真正的程序员不写使用说明书, ...
- 第4章 TCP/IP通信案例:访问Internet上的Web服务器
第4章 TCP/IP通信案例:访问Internet上的Web服务器 4.2 部署代理服务器 书中为了演示访问Internet上的Web服务器的全过程,使用了squid代理服务器程序模拟了一个代理服务器 ...
- 使用SAP云平台的destination消费Internet上的OData service
通过SAP云平台上的destination我们可以消费Internet上的OData service或者其他通过HTTP方式暴露出来的服务. 创建一个新的destination: 维护如下属性: 点击 ...
- 反向代理:是指以代理server来接收Internet上的请求,然后将请求转发到内部网络的server上,并将结果返回给Internet上连接的client,此时的代理server对外就表现为反向代理server。
Nginx安装好之后.開始使用它来简单实现反向代理与负载均衡的功能.在这之前.首先得脑补一下什么是反向代理和负载均衡. 反向代理:是指以代理server来接收Internet上的请求,然后将 ...
- 我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 Internet 上用于确保您通信的安全性。
早上使用.Net WebClient类采集亚马逊数据,返回http 400 Bad Request错误,内容里面有“我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 ...
随机推荐
- filebeat配置介绍
Filebeat Prospector filebeat.prospectors: - input_type: log paths: - /var/log/apache/httpd-*.log doc ...
- javascript打开新页面的方法
方案一: A标签: 这里要注意target的设置,_Blank是指新窗口,也可以用js来模拟创建. <a href="http://www.cnblogs.com" targ ...
- 图片加载之Picasso使用
简介 Picasso是Square公司开源的一个Android图形缓存库,可以实现图片下载和缓存功能. 主要有以下一些特性: 在Adapter中回收和取消已经不在视野范围图片资源的加载,防止可能出现的 ...
- LeetCode第[49]题(Java):Group Anagrams
题目:同字符分组 难度:Medium 题目内容: Given an array of strings, group anagrams together. 翻译:给定一组字符串数组,按相同字符组成的字符 ...
- bitmap==null
bitmap==null 一.问题介绍 调试找bug的过程出现bitmap==null,而传过来创建bitmap的byte array有数据, 结果看了函数说明: 果断知道是那个图片没有办法decod ...
- spring3: 内置Resource实现
4.2 内置Resource实现 4.2.1 ByteArrayResource ByteArrayResource代表byte[]数组资源,对于“getInputStream”操作将返回一个By ...
- GO学习笔记:函数Panic和Recover
Go没有像Java那样的异常机制,它不能抛出异常,而是使用了panic和recover机制.一定要记住,你应当把它作为最后的手段来使用,也就是说,你的代码中应当没有,或者很少有panic的东西.这是个 ...
- Django进阶Model篇008 - 使用原生sql
注意:使用原生sql的方式主要目的是解决一些很复杂的sql不能用ORM的方式写出的问题. 一.extra:结果集修改器-一种提供额外查询参数的机制 二.执行原始sql并返回模型实例 三.直接执行自定义 ...
- OpenStack Mitaka HA部署方案(随笔)
[Toc] https://github.com/wanstack/AutoMitaka # 亲情奉献安装openstack HA脚本 使用python + shell,完成了基本的核心功能(纯二层的 ...
- opencv:基本图形绘制
可以使用opencv绘制 直线.圆.方形.椭圆等基本图形. 示例代码: #include <opencv.hpp> using namespace cv; int main() { // ...