当前位置: 首页 > article >正文

计算机网络基础:从IP地址到分层模型

计算机网络

1.计算机网络概述

概述

​ 计算机网络是指两台或更多的计算机组成的网络,在同一个网络中,任意两台计算机都可以直接通信。互联网是网络的网络(Internet),即把很多计算机网络连接起来,形成一个全球统一的互联网,互联网中的所有计算机都需要遵循同一种网络协议。

网络协议:为进行网络中的计算机之间的连接,以及数据交换而设计的准则与规范。

network-of-networks.gif

​ 对某个特定的计算机网络来说,它可能使用网络协议ABC,而另一个计算机网络可能使用网络协议XYZ。如果计算机网络各自的通讯协议不统一,就没法把不同的网络连接起来形成互联网。因此,为了把计算机网络接入互联网,就必须使用TCP/IP协议。
​ TCP/IP协议泛指互联网协议,其中最重要的两个协议是TCP协议和IP协议。只有使用TCP/IP协议的计算机才能够联入互联网,使用其他网络协议(例如NetBIOS、AppleTalk协议等)是无法联入互联网的。

IP地址

​ 在互联网中,一个IP地址用于唯一标识一个网络接口(Network Interface)。一台联入互联网的计算机肯定有一个IP地址,但也可能有多个IP地址。
​ IP地址分为IPv4和IPv6两种。IPv4采用32位地址,类似101.202.99.12,而IPv6采用128位地址,类似2001:0DA8:100A:0000:0000:1020:F2F3:1428。IPv4地址总共有232个(大约42亿),而IPv6地址则总共有2128个(大约340万亿亿亿亿),IPv4的地址目前已耗尽,而IPv6的地址是根本用不完的。
​ IP地址又分为公网IP地址和内网IP地址。公网IP地址可以直接被访问,内网IP地址只能在内网访问。内网IP地址类似于:
​ ○192.168.x.x
​ ○10.x.x.x
​ 有一个特殊的IP地址,称之为本机地址,它总是127.0.0.1。

域名

  • 因为直接记忆IP地址非常困难,所以我们通常使用域名访问某个特定的服务。域名解析服务器DNS负责把域名翻译成对应的IP,客户端再根据IP地址访问服务器。
  • 用nslookup可以查看域名对应的IP地址:
C:\Users\apple>nslookup www.taobao.com
Server:  UnKnown
Address:  192.168.1.1
Non-authoritative answer:
Name:    www.taobao.com.danuoyi.tbcache.com
Addresses:  240e:bf:c800:2912:3::3f9
          240e:bf:c800:2912:3::3fa
          123.53.182.232
          123.53.182.233
Aliases:  www.taobao.com
  • 有一个特殊的本机域名localhost,它对应的IP地址总是本机地址127.0.0.1。

主机之间的通信方式

计算机通信是计算机中进程(即运行中的程序)之间的通信。计算机网络采用的通信方式是客户-服务器方式(C/S方式)和对等连接方式(P2P 方式)。
●客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。
在这里插入图片描述
●对等(P2P):不区分客户和服务器
在这里插入图片描述

网络分层模型

为什么网络要分层?

主要有 3 方面的原因:

  1. 各层之间相互独立:各层之间相互独立,各层之间不需要关心其他层是如何实现的,只需要知道自己如何调用下层提供好的功能就可以了(可以简单理解为接口调用)。这个和我们对开发时系统进行分层是一个道理。
  2. 提高了整体灵活性 :每一层都可以使用最适合的技术来实现,你只需要保证你提供的功能以及暴露的接口的规则没有改变就行了。这个和我们平时开发系统的时候要求的高内聚、低耦合的原则也是可以对应上的。
  3. 大问题化小 :分层可以将复杂的网络间题分解为许多比较小的、界线比较清晰简单的小问题来处理和解决。这样使得复杂的计算机网络系统变得易于设计,实现和标准化。 这个和我们平时开发的时候,一般会将系统功能分解,然后将复杂的问题分解为容易理解的更小的问题是相对应的,这些较小的问题具有更好的边界(目标和接口)定义。

OSI七层模型

​ 计算机世界非常非常有名的一句话:计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决,计算机整个体系从上到下都是按照严格的层次结构设计的。

​ 计算机网络从底层的传输到高层的软件设计十分复杂,要合理地设计计算机网络模型,必须采用分层模型,每一层负责处理自己的操作。在这个模型中,每个分层都接收由它的下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的的约定叫做“接口”。同一层之间的交互所遵循的约定叫做“协议”。

​ OSI(Open System Interconnect)网络7层模型是ISO组织定义的一个计算机互联的标准分层模型,但它只是一个定义,目的是为了简化网络各层的操作,提供标准接口便于实现和维护,从上至下依次包括:应用层、表示层、会话层、传输层、网络层、链路层、物理层。

TCP-IP-4-model.6ae180f1.png

TCP/IP 四层模型

​ 互联网实际使用的TCP/IP模型是OSI七层网络模型的简化版,一共分为4层:应用层、传输层、网络层、网络接口层(数据链路层、物理层)

TCP-IP-4-model.6ae180f1.png

01 应用层

​ 应用层协议负责定义应用进程(进程:正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议,应用层交互的数据单元称为报文。在应用层中常见的协议有:

  • 域名系统 DNS(DNS,Domain Name System):用于将域名解析成IP地址;
  • HTTP 协议(HTTP,HyperText Transfer Protocol):超文本传输协议,最初的目的用于发布和接受HTML网页,是目前互联网应用最广泛的网络协议;
  • 电子邮件协议:常用的电子邮件协议有SMTP、POP3、IMAP4
  • **远程登录协议:**Telnet协议是Internet远程登录服务的标准协议和主要方式,基本功能是允许用户登录进入远程主机系统;
  • 文件传输协议(File Transfer Protocol):FTP协议用于在网络上进行文件传输的一套标准协议,FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信;

02 传输层

​ 传输层协议负责定义两台主机进程之间的通信,提供数据传输服务,提供端到端的可靠传输,主要使用TCP协议和UDP协议;

  • TCP(Transmission Control Protocol)协议:传输控制协议,提供面向连接、可靠的数据传输服务,TCP 主要提供完整性服务。
  • UDP(User Datagram Protocol)协议:用户数据报协议,提供无连接、尽最大努力的数据传输服务(不保证数据传输的可靠性),UDP 主要提供及时性服务。

tcp&udp.png

03 网络层

​ 在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。在发送数据时,网络层把传输层产生的报文段或用户数据报封装成分组和包进行传送,网络层使用的协议是IP协议。

互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来的。互联网使用的网络层协议是无连接的网际协议(Internet Protocol)和许多路由选择协议。

04 网络接口层

网络接口层包括:数据链路层物理层两部分

  • **数据链路层:**通常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。 在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。
  • **物理层:**在物理层上所传送的数据单位是比特bit,物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,屏蔽掉具体传输介质和物理设备的差异, 使其上面的数据链路层不必考虑网络的具体传输介质。物理层仅专注0、1比特流和电压高低、光的闪灭之间的互换。

网络体系结构.png

osi.png


http://www.kler.cn/a/391328.html

相关文章:

  • 深入解析 OpenHarmony 构建系统-4-OHOSLoader类
  • Spring框架之观察者模式 (Observer Pattern)
  • Ubuntu安装MySQL8
  • DOM 规范 — MutationObserver 接口
  • 《情商》提升:增强自我意识,学会与情绪共处
  • 1小时构建Vue3知识体系之vue的生命周期函数
  • 边缘计算在智能物流中的应用
  • golang 实现比特币内核:数字签名的编码算法
  • ctfshow(319->326)--XSS漏洞--反射型XSS
  • Xcode 16 使用 pod 命令报错解决方案
  • VMware Fusion和centos 8的安装
  • 【MySQL】关于MySQL启动后mysqld_safe和mysqld进程
  • Python酷库之旅-第三方库Pandas(208)
  • 【LinuxC编程】06 - 守护进程,线程
  • 基于深度学习的猫狗识别
  • 力扣102:二叉树的层次遍历
  • OpenEuler 下 Docker 安装、配置与测试实例
  • [数组二分查找] 0153. 寻找旋转排序数组中最小值
  • Vite初始化Vue3+Typescrpt项目
  • C#自定义特性-SQL
  • 如何在 Ubuntu 上 部署 OceanBase
  • CosyVoice文本转语音:轻松创造个性化音频
  • 【LeetCode每日一题】——LCR 106.判断二分图
  • 自动化爬虫DrissionPage
  • golang 实现bitcoin core: bitcoin 椭圆曲线的“生成元”设置
  • 计算机网络:运输层 —— TCP/IP运输层中的两个重要协议