网络层(1)

转发和选路

路由器的主要作用:便是将数据报从入链路转发到出链路。

网络层的作用是:将分组从一台发送主机移动到一台接收主机。为此需要两种重要的网络层功能:

转发:将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作。

选路:分组从源到目的地时,决定端到端路径的网络范围的进程。

每台路由器都具有一张转发表(forwarding table):路由器通过检查到达分组首部中的一个字段的值,然后使该值在路由器转发表中索引查询,查询的结果就是分组将被转发的路由器的链路接口。分组首部的值可能是该分组的目的地址或者该分组所连接的指示。

虚电路和数据报网络:

网络层也有无连接服务与面向连接服务,但是与运输层有差异:

<1>网络层中,这些服务是由网络层向运输层提供的主机到主机的服务。在运输层中,这些服务则是运输层向应用层提供的进程到进程的服务。

<2>在迄今为止的所有主要的计算机网络体系结构中,网络层提供了主机到主机的无连接服务,或者主机到主机的连接服务,而不同时提供两种。仅在网络层提供连接服务的计算机网络被称为:虚电路(Virtual-Circuit,VC)网络;仅在网络层提供连接服务的计算机网络称为:数据报网络(datagram network)

<3>在运输层提供的面向连接服务与在网络层实现连接服务是根本不同的,运输层面向连接服务是位于网络边缘的端系统中实现的,网络层连接服务除了在端系统中实现之外,也在位于网络核心的路由器中实现。

虚电路网络:

在网络层使用链接,这些网络链接被称为虚电路。一条虚电路(VC)的组成如下:

<1>源和目的主机之间的路径(即一系列链路和路由器)

<2>VC号,沿着该路径的每段链路一个号码。

<3>沿着改路径的每台路由器中的转发表项

属于一条虚电路的分组将在它的首部携带一个VC号码,又因为一条虚电路在每条链路上可能具有不同的VC号,所以每台中间路由器必须用一个新的VC号代替每个传输分组的VC号,该新的VC号从转发表获得。

分组通过某路由器,该路由器怎样决定VC号的更换呢?

对于虚拟电路网络,每台路由器的转发表包括了VC的转换。

网络层虚电路的建立与运输层的连接建立之间有一个细微但很重要的区别:运输层的连接建立仅涉及两个端系统,在运输层链接建立期间,两个端系统独自决定运输层连接的参数(如初始序号与流量控制窗口大小)。虽然两个端系统已经知道该运输层连接,但是网络中的路由器对这些完全不知情。

另一方面,对于虚电路网络层,沿两个端系统之间路径上的路由器都要参与虚电路的建立,且每台路由器都完全知道经过他的所有虚电路。

数据报网络:

随着分组从源向目的地传输,它通过一系列路由器,每个路由器都是用该分组的目的地址来转发该分组。特别地,每台路由器都有一个将目的地址映射到链路接口的转发表;当分组到达路由器时,该路由器使用该分组的目的地址在该转发表中查找适当的输出链路接口,然后,路由器有意地将该分组向该叔叔出链路接口转发。

路由器使用分组的目的地址 与转发表的表项进行匹配;路由器采用最长前缀匹配规则(longest prefix matching rule),即当有多个匹配项时,在该表中寻找最长的匹配项,并向与最长前缀匹配的链路接口转发该分组。

路由器工作原理:

交换结构速率(switching fabric speed):交换结构能够从输入端口到输出端口移动分组的速率。

网际协议:因特网中的转发和编址:

因特网的网络层有三个主要的组件:

第一:组件是IP协议,第二:选路组件,它决定数据报从源到目的地所流经的路径。(转发分组的转发表和选路协议),第三:报告数据报中的差错和对某些网络信息请求进行相应的设施。

数据报:网络层的分组叫数据报。

数据报格式:

版本号(version):路由器可确定如何解释IP数据报的剩余部分,不同的IP版本使用不同的数据报格式。IPv4/IPv6两个IP版本。

首部长度(IHL):由于头部长度不固定,所以IHL用来表明该头部有多长。IHL包含4个字节

服务类型(Type of service):用于区分不同类型的IP数据报。

数据报长度(Total length):这是IP数据报的总长度(首部加上数据)。

标识/标志/片偏移(Identification/flags/Fragment offset):这三个字段与所谓IP分片有关。但是IPv6不允许在路由器上分片。

寿命(Time to live, TTL):确保数据报不会永远在网络中循环,每当数据报经过一台路由器时,该字段的值减1.若TTL字段减为0,则该数据报必须丢弃。

协议(Protocol):该字段仅在一个IP数据报到达其最终目的地时才会用到,该字段值指明了IP数据报的数据部分应交给哪个运输层协议。

首部检验和(Header checksum):首部检验和用于帮助路由器检测收到的IP数据报中的比特错误。首部检验和是这样计算的:将首部中的每两个字节当作一个数,用反码对这些数求和,将该和的反码存放到检验和字段中,路由器要对每个收到的IP数据报计算其首部检验和,再根据数据报首部中携带的检验和与计算得到的检验和判断是否一致,来检查是否出错。路由器一般会丢弃错误的数据报。注意:每台路由器都必须重新计算检验和并存放在原处,因为TTL字段以及选项字段可能会改变。

源和目的IP地址(Sourse address/Destination address):当源主机产生一个数据报时,它在源IP字段中插入它的IP地址,在目的IP字段中插入其最终目的地址。通常源主机经DNS查找目的地址。

选项(Option):选项字段允许IP首部被扩展。

数据(Data):有效载荷。

IP数据报分片:不是所有的链路层协议都能承载相同长度的网络层分组。有的协议能承载大数据报,而有的协议只能承载小分组。一个链路层帧能承载的最大数据量叫做最大传输单元(MTU),因为每个IP数据报封装在链路层帧中,再从一台路由器运输到下一台路由器,故链路层协议MTU严格限制着IP数据报的长度。

当链路的MTU比IP数据报长度小时,怎么办?

解决的办法就是将IP数据报中的数据分片成两个或更多个较小的数据报,用单独的链路层帧封装这些较小的IP数据报,然后向输出链路上发送这些帧,这些较小的数据报叫做片(fragment)。

TCP/UDP都希望从网络层收到完整的未分片的报文,那么片到达目的地运输层以前需要被重新组装,那么数据包的重组是放在端系统中还是放到网络路由器中呢?

IPv4的设计者将数据报的重新组装放到端系统中,而不是路由器中!

那么目的主机从相同的源接收到一系列的数据报时,那么它怎么判断这些数据报是否是原来较大的数据报的片呢?如何确定最后一片呢?如何拼接形成初始数据报呢?

IPv4的设计者将标识/标志/片偏移字段放在IP数据报中。当创建一个数据报时,发送主机为该数据报设置源和目的地址的同时加上标识号。发送主机每发送一个数据报,通常会将标识号加1,当一台路由器需要将一个数据报分片时,形成的每个片,附加上初始数据报的源地址/目的地址与标识号。当目的地从同一台发送主机收到一系列数据报时,他可以检查数据报的标识号以确定那些数据报是同一较大数据报的片。由于IP是一个不靠谱的服务,一个或多个片
可能永远到达不了目的地,因此,为了让目的主机绝对相信它已收到了初始数据报的最后一个片,最后一个片的标志比特被设为0,而所有其他片的标志也被设置为1。另外,为了让目的主机确定一个片是否丢失(且能按正确的顺序重新组装片),用偏移字段指定片应放在初始IP数据报的哪个位置。

在目的地,数据报的数据仅当在IP层已经完全重构为初始IP数据报时,才被传递给目的运输层。如果有一个或多个片没有达到目的地,则该不完整的数据报被丢弃且不会交给运输层。但是,若运输层正在使用TCP,则TCP将通过让发送端重传数据报中的数据而恢复丢失的片。

时间: 2024-10-13 05:41:11

网络层(1)的相关文章

【Caffe代码解析】Layer网络层

Layer 功能: 是全部的网络层的基类,当中.定义了一些通用的接口,比方前馈.反馈.reshape,setup等. #ifndef CAFFE_LAYER_H_ #define CAFFE_LAYER_H_ #include <algorithm> #include <string> #include <vector> #include "caffe/blob.hpp" #include "caffe/common.hpp" #

网络层、传输层、应用层、端口通信协议编程接口 - http,socket,tcp/ip 网络传输与通讯知识总结

引: http://coach.iteye.com/blog/2024511 什么是TCP和UDP,以及二者区别是什么? TCP的全称为传输控制协议.这种协议可以提供面向连接的.可靠的.点到点的通信. UDP全称为用户数据报协议,它可以提供非连接的不可靠的点到多点的通信. 使用TCP还是UDP,那要看你的程序注重哪一个方面,可靠(tcp)还是快速(udp). TCP/IP 建立连接的过程 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.   

网络层详解----1

网络层提供的两种服务 虚电路服务:当两个计算机进行通信时,先建立连接,以保证双方通信所需的一切网络资源. 数据报服务:网络层只向上提供简单灵活的.无连接的.尽最大努力交付的数据报服务.网络在发送分组时不建立连接,每一个分组独立发送,与其前后分组无关,也不提供服务质量承诺. IP协议 IP协议配套使用的还包括ARP(地址解析协议).RARP(逆地址解析协议).ICMP(网际控制报文协议).IGMP(网际组管理协议). 虚拟互连网络 将网络互连需要通过一些中间设备:转发器物理层().网桥或桥接器(数

Caffe 中添加自己的网络层

写在前面: Caffe 中有众多的网络层,最新版本的代码已经涵盖了很多种类型的网络层,然而,有时候由于各种原因,其给定的网络层不能满足我们的要求,这时候就要对其更改,以使其满足自己的需求,感谢作者开源代码以及众多的代码维护者. 由于Caffe 中的网络层都是直接或者间接地给予Layer 基类,所以,在我们需要添加新的类型时,就需要选择好自己的基类,以使我们能够更好的利用基类已有的一些方法.我们新建的类可以基于 1. 直接继承于Layer 2. 继承于DataLayer 3. 继承于NeuronL

ddos 防御 - TCP 网络层防御

cron_ddos_tcp.sh 1#!/bin/sh  2   3   4 for kip in `netstat -an |grep -i ':80' |grep 'EST' | awk '{print $5}' | cut -d : -f 1 | sort | uniq -c | awk '{if($1 > 50 && $2 !~ /192\.168\.1\.19.|0\.0\.0\.0/) {print $2}}'`; do  5   6 echo $kip >>

TCP/IP和OSI网络层

一.网络层主要功能 负责数据包的最佳寻址 二.网络层最重要的协议 Internet Protocol 简称IP 三.数据传输中的不便 从发送方看: 1.接收方是否存在 2.数据是否真正送到了接收方 3.接收方是否能理解接收到的数据 从接收方看: 关心数据什么时候能送达 因为这些不确定因素的存在,使得IP协议是一种无连接的网络服务,正因如此,所以IP是一种不可靠协议,它所执行的数据转发是一种 "尽力而为". 四.传输介质 网络层不关心传输介质,只关心最佳路径,所以可以在不同的物理介质上进

网络层(一)

网络层向上只提供简单灵活的,无连接,尽最大努力交付的数据报服务.网络在发送分组时不需要先建立连接,每一个分组独立发送,与其前后分组无关.网络层不提供服务质量的承诺. 网际协议IP与IP协议配套使用的协议还有ARP(地址解析协议),RARP(逆地址解析协议),ICMP(网际控制报文协议),IGMP(网际组管理协议) ARP和RARP是最下面的,IP经常使用这两个协议.ICMP,IGMP在IP的上面,他们经常使用IP协议. 网络互连需要一些中间设备,根据中间设备所在的层次.分为:1物理层使用转发器2

Internet 网络层协议设计原则(RFC 1958)

这 10 条原则本是设计网络层协议用的,但我想它们可能对 web 应用的设计同样具有指导意义,因此记录于下(顺序为从最重要到最不重要): 保证工作.直到确认原型系统可以正常运行,才可以完成设计或确定标准. 保持简单.有疑问时应该使用最简单的解决方案.即如果一项特性并非绝对必要,就应该被砍掉,尤其当可以通过其他简单特性的组合也可以达到相同效果的时候.(注:也许这里的难点在于确认一套最小功能集) 明确选择.解决一个问题应当有且只有一种解决方案,这与 Python 的理念相同. 模块开发.使用栈结构组

iOS网络层框架之AFNetworking与 ASIHTTPRequest对比

在开发iOS应用过程中,如何高效的与服务端API进行数据交换,是一个常见问题.一般开发者都会选择一个第三方的网络组件作为服务,以提高开发效率和稳定性.这些组件把复杂的网络底层操作封装成友好的类和方法,并且加入异常处理等. 那么,大家最常用的组件是什么?这些组件是如何提升开发效率和稳定性的?哪一款组件适合自己,是 AFNetworking(AFN)还是 ASIHTTPRequest(ASI)?几乎每一个iOS互联网应用开发者都会面对这样的选择题,要从这两个最常用的组件里选出一个好的还真不是那么容易

OSI七层详解之三 网络层(Network layer)

一.简介 在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网.网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送.网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地 址信息- -源站点和目的站点地址的网络地址. 如果你在谈论一个IP地址,那么你是在处理第3层的问题,这是"数据包"问题,而不是第2层的"帧".IP是第3层问题的一部分,此外还有一些路由协议和地址解析协议(ARP).有关路由的一