网络层的使用:如 ping,tracert,原理是ICMP
一、什么叫网络,网络层做什么,通过什么实现,这章的内容,
- 什么叫网络,实现这些需要做什么
将全世界范围内数以百万计的网络都互连起来,并且能够互相通信。
需要做到:大家都有相同的或者统一规则的 寻址方案,最大分组长度,网络接入机制,超时控制,差错恢复方法,状态报告方法,路由选择技术,用户接入控制,服务(面向连接和无连接),管理与控制方式
- 网络层做什么
为分组交换网上的不同主机提供通信服务,选择合适的路由。
我的理解,就是通过路由器向目标地址发送IP数据报。并且,能解决上面说的哪些问题。
- 与数据链路层的关系
数据链路层,在相邻的路由和主机中传递数据,使用的是物理地址,该地址是IP地址由ARP转换得出的;
网络层,跟着数据链路层,在各个网络层中传送IP数据报。如果数据链路层传到了要的数据链路层地址,该地址就向上传输IP数据报,就开始拆IP用了。
- 几个疑问:
1.怎么知道数据链路层和IP层的地址的转换的?
已经知道了一个机器的IP地址,需要找出相应的硬件地址,使用地址解析协议ARP。 ARP协议是将IP地址转化为数据链路层使用的硬件地址。 ARP协议是解析同局域网的主机或路由的IP地址和硬件地址的映射问题。 .在传输IP数据报时,将IP地址转换成硬件地址, .硬件地址在自己的局域网中查找可以连接目的网络的路由,将数据转发到该路由的地址上 .在该路由的局域网中再次重复1-。 不同网络之间的数据转发:路由器中路由表记录不同网络对应的路由地址,如果记录的主机在网络1上,就转发到连接了网络1的路由上。 互联网所有的分组转发,都是基于目的主机所在的网络。也可以指定所在路由。
2.怎么得出数据链路层的相连路由路线的?
路由表的协议和网络间协议 路由表如何建立: .子网的网络地址=ip地址*子网掩码; .路由器转发分组的算法如下: -从收到的数据包首部提取目的IP地址D -判断是否直接交付,子网掩码与D相与,一致则交付,否则间接交付 -路由表中由目的地址为D的特定主机路由,传送给该路由,否则下一步 -对路由表中每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码与D相与,其结果为N,若N与改行的目的网络地址相符,传给下一跳。 -路由表中由一个默认路由,传给指明的路由 -否则出错
- 网络层通过什么来实现目标
使用协议:IP协议(地址解析协议ARP,网际控制报文协议ICMP,网际组管理协议IGMP)
使用工具:路由器
- 这章的内容
描述IP数据报包含的信息
描述IP数据报是如何从发送端,经历网络间的传递,到目的端。
二、IP数据报包含的信息,IP协议是什么,怎么工作的,依靠什么工具实现,ARP ICMP IGMP都做什么。
- IP数据报是什么:
IP数据报=IP地址+数据
- IP地址是什么:
IP地址就是给互联网上的每一台主机的每一个接口分配一个在全世界范围内是唯一的32位的标识符。路由器通过目的主机所连接的网络号来转发分组。
IP地址的组成:网络号+主机号,用CIDR无分类编址来划分地址。
IP地址的特点:
1.每一个IP地址都由网络号和主机号两部分组成,
2.实际上IP地址是标志一台主机和一条链路的接口
3.按照互联网的观点,一个网络是指具有相同网络号net-id的主机的集合,因此,用转发器或网桥连接起来的若干个局域网仍为1个网络
4.在IP地址中,所有分派到网络号的网络都是平等的。
- IP地址怎么转换成硬件地址供给数据链路层使用
利用ARP协议,将IP地址转换为物理地址。
- IP协议是什么:
主要提供简单的、无连接的、尽最大努力交付(不可靠)的数据报服务。这种协议比较便宜,就一直用它了。
- IP协议能做什么
实现网络互连。使参与互连的性能各异的网络从用户看起来好像是一个统一的网络。
- IP协议怎么工作的:
1.给网络的每一台主机,分配一个IP地址,该主机的物理地址由IP地址+ARP协议得出;
2.路由器通过目的IP地址的网络号,来根据路由表转发到对应网络;
3.对应网络收到后,如果报文内容准确,就手下,不准确,就丢弃
4.如果路由/主机有出错,路由/主机通过ICMP报告差错,并提供有关异常。最重要的应用就是ping 用来测试两台主机的连通性(发送询问报文)
- 依靠什么工具实现转发:路由器
将网络连接起来,需要有实现协议的中间设备: .物理层--转发器 repeater .数据链路层-网桥-桥接器bridge .网络层-路由器router .网络层以上-网关gateway
- ARP ICMP IGMP都做什么。
ARP协议:是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。 RARP:是解决同一个局域网上的主机或路由器的硬件地址和IP地址的映射问题。 ICMP:提供差错报告和询问报文,以提高IP数据交付成功的机会
三、路由器的工作原理,网络数据怎样在路由器中发送,传输,到达
- 路由器是什么:
路由器和网桥不一样,网桥可以把少量机器连接的网络扩散成多个机器连接成的网络,他们是一个网络。
路由器,可以把不同的网络连接在一起,形成互联网。
- 路由器做什么:
网络间转发和同网络的转发
- 路由器的工作原理:
- 有哪些路由协议来实现:
外部网关协议实现网络间转发,内部网关协议实现同网络转发
五、路由协议的种类和优缺点,结构
数据在路由中的传递,重要分为两层,一层是在小型自治网络(一个单独的大网络)中的传递,另一层是在互联网中的多个自治网络之间信息的传递。
前者用路由转发的内部网关协议解决,后者用路由转发的外部网关协议解决。
- 关于路由转发的内部网关协议,用来确定自治网络内部的IP数据的传输:
RIP routing information protocol,基于距离向量的路由选择协议。 原理:将相邻的路由的跳跃数称为跳数,最多16跳,超过即为不可达。 特点:按照固定的时间间隔,和相邻的路由器交换信息,交换的内容是当前本路由的路由表; 缺点:当网络故障,要经过比较长的实践才能将此信息传递到所有的路由器。
OSPF open shortest path first,开放最短路径优先 原理:使用分布式的链路状态协议,链路状态:本路由器都和哪些路由器相邻,以及该路由器的度量metric(费用/距离/时延/带宽,等等) 特点:在链路状态发生变化时,向本自治系统的所有路由器发送消息,发送的内容是本路由器相邻的所有路由器的链路状态。由于各个路由器之间频繁的交换链路状态信息,因此所有路由器都能建立一个链路状态数据库,这个数据库实际上就是全网的拓扑结构图。 为了使OSPF用于规模很大的网络,将一个自治系统划分为若干个小的area,在area中交换链路状态信息,减少网络上的通信量。 OSPF发送的分组的类型:问候,数据库描述,链路状态请求,链路状态更新,链路状态确认。 问候用来确认相邻的路由是否可达。 其他四个用来进行链路状态数据库的同步。一旦发生变化,就给相邻的发送更新分组。
- 关于路由转发的外部网关协议,用来确定自治网络之间数据传递的要求和标准:
边界网关协议BGP 原理:力求寻找一条能够到大目的网络且比较好的路由,而并非要寻找一条最佳路由。 实现:自治系统的管理员,选择至少一个路由器作为该AS的BGP发言人。 每个BGP发言人,与其他AS的BGP发言人交换路由信息,要先建立TCP连接,在该连接上交换BGP报文,建立BGP会话,交换路由信息。呼叫交换路由信息的两个BGP发言人,彼此成为对方的邻站neighbor和对等站peer 交换信息中,BGP会根据自己的策略,选出到达各个AS的较好路由。
BGP发送的四种报文:open,update,keepalive,notification
- 路由器的构成
路由器是一个有多个输入端口和多个输出端口的专用计算机,任务是转发分组。
六、IPV6
IPV4的地址用完了,大家就开始用IPV6了。
IPV6将PDU叫分组,也可以叫数据报。
- 变化
- 更大的地址控件
- 扩展的地址层次结构
- 灵活的首部格式
- 改进的选项
- 允许协议继续扩充
- 支持即插即用,自动配置。
- 支持资源与分配
- 首部改为8字节对齐
- 组成
基本首部base header+有效载荷payload,payload=0/多个扩展首部extension header+数据部分
- 和IPV4的首部的差别
- 取消了很多字段,IPV6的首部字段数量减少到8个,长度增加了一倍
七、IP多播
不知道写的什么卵意思,看不懂。
- 原理
- 使用的协议
- 数据报的转发
八、VPN
通过互联网,给不同地点的专用网络的输送数据。利用互联网,做公司的专用网的载体,这种专用网就叫VPN。
在互联网中的所有路由器,给目的地址是专用地址的数据一律不进行转发。专用地址只在专用网络中用专用的分配的IP进行传输数据。
九、MPLS
不知道用来干嘛的,没写。
就说给IP数据包打标记。为什么要提出这个协议,这个协议为了改善什么,不说。
计算机基础:计算机网络-chapter4 网络层的更多相关文章
-
计算机基础-day3
网络基础 什么是互联网协议? 互联网协议是计算机网络中为进行数据交换而建立的规则.标准或约定的集合,其定义了计算机如何接入internet,以及接入internet的计算机间通信的一系列统一标准, 为 ...
-
Java学习之计算机基础(一)
阅读本文大概需要 4 分钟 想要开始学习Java开发,需要掌握一些必要的计算机基础.如果你是计算机专业的人或者已经学过类似的课程,可以跳过这篇文章的阅读.计算机基础课程有很多,小编在大学里学过的课程就 ...
-
day01<;计算机基础知识&;Java语言基础>;
计算机基础知识(计算机概述) 计算机基础知识(软件开发和计算机语言概述) 计算机基础知识(人机交互) 计算机基础知识(键盘功能键和快捷键) 计算机基础知识(如何打开DOS控制台) 计算机基础知识(常见 ...
-
计算机基础知识和tcp详解
计算机基础知识 作为应用软件开发程序员是写应用软件的,而应用软件必须应用在操作系统之上,调用操作系统接口,由操作系统控制硬件 比如客户端软件想要基于网络发送一条消息给服务端软件,流程是: 1.客户端软 ...
-
【计算机网络】-网络层-Internet的网络层
[计算机网络]-网络层-Internet的网络层 Internet是一组相互连接的网络或者自治系统的集合 Internet 1.存在几个主要骨干网络,骨干网络是由高带宽的线路和快速路由器构成 2.这些 ...
-
[Java 教程 00] 计算机基础
前言 我想,来到这的朋友肯定是想学习JAVA或者想要进入IT这个行业的.考虑到大家的基础可能不一样,有些人可能还是用着新买的电脑,为了让大家在后续的学习中更加顺畅.在学习一门全新的计算机语言之前,我需 ...
-
【java基础】01 计算机基础知识
一.计算机基础知识 1. 计算机 1. 什么是计算机? 计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设 ...
-
Python学习之计算机基础
计算机基础: (1)计算机俗称电脑,是现代用于高速计算的电子计算器,可以进行数值计算也可以进行逻辑计算,还有存储记忆功能.是能够按照程序运行,自动,高速处理海量数据的现代化智能 电子设备. (2)物理 ...
-
计算机基础--Java中int char byte的关系
计算机基础--Java中int char byte的关系 重要:一个汉字占用2byte,Java中用char(0-65535 Unicode16)型字符来存字(直接打印输出的话是字而非数字),当然要用 ...
随机推荐
-
Linux基本命令(1)管理文件和目录的命令
Linux管理文件和目录的命令 命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容 cd 改变所在目录 cat 显示文件的内容 grep 在文件中查找某字符 cp 复制文件 touc ...
-
Log4Net(二)之记录日志到文档详解
原创文章,转载必需注明出处:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/log4net-%E4%BA%8C-%E4%B9%8B% ...
-
Markdown和reStructuredText语法比较
reStructuredText在线编辑器 http://rst.ninjs.org/ ReST是Docutils的标记语法,Docutils是Python世界的文档工具集.也因为这样ReST在Pyt ...
-
细讲encodeURI和encodeURIComponent以及escape的区别与应用
首先,我们都知道这三个东西都是用来编码的 先来说encodeURI()和encodeURIComponent() 这两个是在转换url时候用来编码解码用的. 有编码就会有解码, 解码就是decodeU ...
-
SeaJS 简单试用
http://seajs.org/docs/#quick-start 感觉seajs的语法有点罗嗦... 它既有RequireJS的特点也有NodeJS引入模块的特点 例子是抄的官方的例子 在官方的 ...
-
apache 配置文件管理
1. Apache配置系统 从整体来看apache的配置系统包括三个部分: (1) 配置文件:比如 httpd.conf .htaccess (2) 配置指令:在配置文件 httpd.conf ...
-
android工具类常用方法
1.获取手机唯一识别号 添加AndroidManifest.xml权限 <uses-permission android:name="android.permission.READ_P ...
-
c++中string类型可以直接进行比较
以下代码在Ubuntu14.10下实现 /*------------------------- filename is demo.cpp --------------------------*/ #i ...
-
[Tool] Git 使用 与 Git Flow
目录 简介 Git 命令 Git Flow 简介 Git是目前世界上最先进的分布式版本控制系统(没有之一). Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Lin ...
-
.net中的各种委托(Delegate、Action、Func)
1.Delegate,委托的鼻祖 protected delegate int ClassDelegate(int x, int y);//定义委托类型及参数 static void Main(str ...