草庐IT

4.1、网络层概述

伤如之何? 2024-07-12 原文

1、主要任务

网络层的主要任务是 实现网络互连 \color{red}实现网络互连 实现网络互连,进而 实现数据包在各网路之间的传输 \color{red}实现数据包在各网路之间的传输 实现数据包在各网路之间的传输

例如:

这些异构型网络若只是需要各自内部通信,那它们只要实现各自的物理层和数据链路层即可

但是若需要将这些异构型网络互连起来,形成一个更大的互联网,就需要使用网络层互联设备路由器

说明:为了简单起见,有时没有必要画出这些网络,将它们看成一条链路即可


对于互联网而言,仅实现物理层和数据链路层是不能实现数据包在互联网中各网络之间传输的。

要实现该功能,就必须实现网络层


2、网络层解决的问题

2.1、网络层向运输层提供怎样的服务(“可靠传输” 还是 “不可靠传输”)

数据包在传输过程中可能会出现误码,也有可能因为路由器繁忙而被路由器丢弃,有可能出现按序发送的数据包不能按序到达接收方(分组失序),分组重复

如果网络层对上述传输错误不采取任何措施

  • 则提供的是不可靠的传输服务

如果网络层对上述传输错误采取任何措施,并使得接收方能确接收发送方所发送的数据包。

  • 则提供的是可靠的传输服务

不同的网络体系结构所提供的服务可能是不同的

例如:因特网使用的 TCP/IP 协议体系的网际层提供的是无连接的、不可靠的数据报服务。

​ 而 ATM、帧中继和 X.25 的网络层提供的都是面向连接的、可靠的虚电路服务


2.2、网络寻址问题

例如:TCP/IP 协议体系的网际层使用 IP 地址

这是网络 N1 上两个路由器接口各自所分配的 IP 地址(A 类地址)

  • 它们前 3 个数是相同的,可以看作是它们所在网络的网络编号
  • 而第四个数各不相同,用于区分这两个不同的路由器接口

这是网络 N3 上两个路由器接口各自所分配的 IP 地址(B 类地址)

  • 它们前 2 个数是相同的,可以看作是它们所在网络的网络编号
  • 而后两个数不完全相同,用于区分这两个不同的路由器接口

这是网络 N7 上两个路由器接口各自所分配的 IP 地址(C 类地址)

  • 它们第 1 个数是相同的,可以看作是它们所在网络的网络编号
  • 而后三个数不完全相同,用于区分这两个不同的路由器接口

2.3、路由选择问题

还有其他路径等等…

路由器收到数据包后是依据什么来决定将数据包从自己的哪个接口转发出去的呢?

  • 依据的是数据包中的目的地址和路由器中的路由表

例如:R1 的路由表,里面记录着路由器 R1 所知道的网络以及数据包要到达这些网络应该从自己的哪个接口转发

假设 R1 知道数据包要到达网络 N7,下一跳应将其转发给路由器 R4

而数据包要达到网络 N6,下一跳应将其转发给路由器 R2

在实践当中路由器是如何得出这样的路有记录呢?

  1. 用户或网络管理员及进行人工配置。只适用于规模较小,且网络拓扑不改变的小型互联网

  2. 实现各种路由选择协议,由路由器执行路由选择协议中所规定的路由选择算法,而自动得出路由表中的路有记录。更适用于规模较大,且网络拓扑经常改变的大型互联网

3、基本介绍

因特网 \color{red}因特网 因特网lnternet)是目前全世界用户数量最多的互联网,它 使用 T C P / I P 协议栈 \color{red}使用 TCP/IP 协议栈 使用TCP/IP协议栈

由于 TCP/IP 协议栈的网络层使用 网际协议 I P \color{red}网际协议 IP 网际协议IP ,它是整个协议栈的核心协议

  • 因此在 TCP/IP 协议栈中网络层常称为 网际层 \color{red}网际层 网际层

TCP/IP 协议栈的网际层中除网际协议 IP 外,还包含地址解析协议 ARP,网际控制报文协议 ICMP,和网际组管理协议 IGMP

有关4.1、网络层概述的更多相关文章

  1. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

    为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

  2. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  3. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  4. 阿里云RDS——产品系列概述 - 2

    基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于

  5. ruby-on-rails - 使用 HTTParty 的非常基本的 Rails 4.1 API 调用 - 2

    Rails相对较新。我正在尝试调用一个API,它应该向我返回一个唯一的URL。我的应用程序中捆绑了HTTParty。我已经创建了一个UniqueNumberController,并且我已经阅读了几个HTTParty指南,直到我想要什么,但也许我只是有点迷路,真的不知道该怎么做。基本上,我需要做的就是调用API,获取它返回的URL,然后将该URL插入到用户的数据库中。谁能给我指出正确的方向或与我分享一些代码? 最佳答案 假设API为JSON格式并返回如下数据:{"url":"http://example.com/unique-url"

  6. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  7. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

  8. css - Rails 4.1 和 Bootstrap 3 字形图标不工作 - 2

    我正在尝试消除使用Bootstrap3的Rails4元素中的glyphicon错误。我没有使用任何Bootstrapgem将其添加到Assets管道中。我手动将bootstrap.css和bootstrap.js添加到各自的app/assets目录下,分别添加到application.css和application.js什么的我现在在网络浏览器的控制台中看到以下内容:GEThttp://localhost:3000/fonts/glyphicons-halflings-regular.woff404(NotFound)localhost/:1GEThttp://localhost:30

  9. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  10. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

随机推荐