计算机网络基础知识笔记(一)

TCP/IP体系结构之网络层

  本章重要内容是:

    1)虚拟互联网络概念

    2)IP地址与物理地址的关系

    3)IP地址分类和无分类域间路由选择CIDR

    4)路由选择协议的工作原理

问题:网络层为传输层提供怎样的服务(面向连接or无连接)?可靠交付应当由谁来负责?网络or端系统?

电信网(虚电路服务:首先建立连接)。

因特网设计思路:网络层向上提供简单灵活的,无连接,金做大努力交付的数据报服务。不提供服务质量的承诺。如果主机之间的进程需要可靠的通信,就有网络的主机中的运输层负责(差错分析,流量控制)。

问题:网络层如何传送IP数据报?

  网络层的协议(IP/ARP/RARP/ICMP/IGMP)

何为虚拟互联网络?

使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。 

将网络互相连接起来需要使用一些中间设备,根据中间设备所在的层次,可以分为转发器(物理层),网桥(数据链路层),路由器(IP层),网卡(网络层以上)。

网络互连针对路由器进行网络互连和路由选择。

  IP地址(RFC791)/32位的标识符

IP地址的编址经历三个阶段:

1)分类的IP地址  IP 地址 ::= { <网络号>, <主机号>}  

2)子网的划分

3)构成超网

更好的满足不同用户的需求。

IP 地址是一种分等级的地址结构。分两个等级的好处是:

第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。

第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。

实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。

当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机(multihomed host)。

由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。

  IP 地址与硬件地址

从协议栈的层次上看数据的流动

地址解析协议(ARP)与逆地址解析协议(RARP:已包含在DHCP协议之中,不在讨论)

不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的本局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。

 也有可能查不到B主机的IP地址:

  ARP 高速缓存的作用

为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。

ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。 如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。 只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。

  使用 ARP 的四种典型情况(。。。。。。)

  为什么我们不直接 使用硬件地址进行通信?

由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。 连接到因特网的主机都拥有统一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用 ARP 来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。

  IP 数据报的格式 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Laoqi's Linux运维专列

LVS负载均衡中arp_ignore和arp_annonuce参数配置的含义

11530
来自专栏JetpropelledSnake

Python Web学习笔记之TCP/IP、Http、Socket的区别

经常在笔试、面试或者工作的时候听到这些协议,虽然以前没怎么涉及过,但至少知道这些是和网络编程密不可分的知识,作为一个客户端开发程序员,如果可以懂得网络编程的话,...

503150
来自专栏LanceToBigData

TCP/IP(四)网络层

前言 前面给大家介绍了计算机网络的基本概述,物理层和数据链路层。这一篇给大家介绍面试中经常会被问到的网络层。在介绍之前我们回顾一下之前学习的知识!   CP/I...

29250
来自专栏北京马哥教育

又见KeepAlive

最近工作中遇到一个问题,想把它记录下来,场景是这样的: ? 从上图可以看出,用户通过Client访问的是LVS的VIP, VIP后端挂载的RealServer是...

52660
来自专栏北京马哥教育

tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项

linux TIME_WAIT 相关参数: net.ipv4.tcp_tw_reuse = 0 表示开启重用。允许将TIME-WAIT sockets重...

817110
来自专栏同步博客

TCP/IP协议

  TCP/IP协议并非单指TCP协议、IP协议,它是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Int...

17530
来自专栏java一日一条

每个程序员应该知道的计算机网络知识

作为一名程序员, 不可能不与网络打交道. 现在我们的手机, 电脑, 不夸张地说, 离开了网络就是一块’废铁’, 它们的作用将大打折扣.. 本文的作用呢, 主要是...

42310
来自专栏黑白安全

UDP和TCP的优缺点

        TCP是面向连接的,可靠的流协议.流就是指不间断的数据结构,你可以把它想象成排水管道中的水流,当应用程序采用TCP发生消息时,虽然可以保证发送的...

16720
来自专栏颇忒脱的技术博客

面向程序员的网络基本知识 - 网络模型及网络设备

本系列文章旨在向程序员分享一些网络基本知识,让程序员具备基本的网络常识,以便与网络工程师沟通。本系列文章不会涉及如何配置交换机、路由器等网络设备的内容,所以不适...

9610
来自专栏互联网杂技

开发人员应该知道的计算机网络知识

前言 作为一名程序员, 不可能不与网络打交道. 现在我们的手机, 电脑, 不夸张地说, 离开了网络就是一块’废铁’, 它们的作用将大打折扣.. 本文的作用呢,主...

42350

扫码关注云+社区

领取腾讯云代金券