计算机网络之初识

目录

一、局域网(LAN)

二、广域网(WAN)

三、网络通信基础

3.1 IP地址

3.2 端口号

3.3 协议

3.3.1 概念

3.3.2 为什么需要协议?

3.3.3 协议分层

3.3.4 OSI七层

3.3.5 TCP/IP协议

四、封装和分用(重点)

前言:本篇文章就不从网络的发展开始赘述,直接从局域网和广域网开始。

一、局域网(LAN)

局域网,即 Local Area Network,简称LAN。
Local 即标识了局域网是本地,局部组建的一种私有网络。局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。

局域网组建网络的方式有很多种:

  • 网线直连
  • 集线器组建
  • 交换机组建
  • 交换机和路由器组建

相信大家可能会询问交换机和集线器有什么区别?

集线器只是物理的将多台主机连接起来,但是在设计到信息传输的时候,只能进行“一对一”的传播。而交换机在此基础上进行了优化,可以让信息以多对多的方式进行传输。

二、广域网(WAN)

广域网,即 Wide Area Network,简称WAN。
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。

 如果有北、中、南等分公司,甚至海外分公司,把这些分公司以专线方式连接起来,即称为“广域网”。
如果属于全球化的公共型广域网,则称为互联网(又称公网,外网),属于广域网的一个子集。
有时在不严格的环境下说的广域网,其实是指互联网。
所谓 "局域网" 和 "广域网" 只是一个相对的概念。比如,我们国家的广域网,也可以看做一个比较大的局域网(从世界的范围来看)。

三、网络通信基础

3.1 IP地址

概念
IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址
就像我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。
格式
IP地址是一个 32位 的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:
01100100.00000100.00000101.00000110。

通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:
100.4.5.6。

需要注意的是 环回IP

127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于

开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。

3.2 端口号

前言:IP地址解决了网络通信时,定位网络主机的问题,但是还存在一个问题,传输到目的主机后,由哪个进程来接收这个数据呢?这就需要端口号来标识。

概念
在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程。
类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)。
格式
端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。

需要注意的是:一个端口号不能绑定多个进程,但一个进程可以绑定多个端口号.
 

3.3 协议

前言:有了IP地址和端口号,可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制
0/1数据来传输,如何告诉对方发送的数据是什么样的呢?
网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同,如
发送一个文本字符串“你好!”:如何标识发送的数据是文本类型,及文本的编码格式呢?
基于网络数据传输,需要使用协议来规定双方的数据格式。

3.3.1 概念

协议,网络协议的简称,网络协议是网络通信(即网络数据传输) 经过的所有网络设备 都必须共同遵从 的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互 通信交流。通常由三要素组成:

协议通常由三部分组成:

1. 语法:即数据与控制信息的结构或格式;
类似打电话时,双方要使用同样的语言:普通话
2. 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;
语义主要用来说明通信双方应当怎么做。用于协调与差错处理的控制信息。
3. 时序,即事件实现顺序的详细说明。

协议(protocol最终体现为在网络上传输的数据包的格式。

3.3.2 为什么需要协议?

计算机之间的传输媒介是光信号和电信号。通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式.

  • 计算机生产厂商有很多;
  • 计算机操作系统,也有很多;
  • 计算机网络硬件设备,还是有很多;
  • 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来,约定一个
  • 共同的标准,大家都来遵守,这就是 网络协议

3.3.3 协议分层

对于网络协议来说,往往分成几个层次进行定义。
什么是协议分层?

协议分层类似于打电话时,定义不同的层次的协议。


分层的作用:

为什么需要网络协议的分层?
分层最大的好处,类似于面向接口编程(封装):定义好两层间的接口规范,让双方遵循这个规范来对接。
在代码中,类似于定义好一个接口,一方为接口的实现类(提供方,提供服务),一方为接口的使用类(使用方,使用服务):

  • 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可
  • 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可

当前网络分层大致分为 OSI七层 和 TCP/IP 五层(四层)。

3.3.4 OSI七层

因面试过程中不涉及,所以这里只做简单讲解:

OSI:即Open System Interconnection,开放系统互连

  • OSI 七层网络模型是一个逻辑上的定义和规范:把网络从逻辑上分为了7层。
  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。

说明:

OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地、实现。
实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也即是以下 TCP/IP 五层(或四层)模型来实现。

3.3.5 TCP/IP协议

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

tip:有些资料上显示的是TCP/IP四层,是站在纯软件的角度的,五层或者四层的观念,其实都是对的。


分析:通过观察,TCP/IP协议和OSI协议的下面四层是一样的,虽然它们各自命名不相同,但是表达的东西是一样的。

  • 应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。
  • 传输层:负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
  • 网络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。
  • 数据链路层:负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。
  • 物理层:负责光/电信号的传递方式。比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。

简化:

  • 应用层:应用程序
  • 传输层:端到端的传输    比如 淘宝商家给我们寄快递,商家的视角只会关注发件人的信息和收件人的信息
  • 网络层:点到点的传输    形如 包裹交给快递公司后,快递公司就需要规划一条最优路线(不只是是关心终点和起点,还要关心中间怎么走,需要速度快,成本低)
  • 数据链路层:相邻节点之间的传输  比如 A市集散中心通过飞机运往B市的集散中心,B市再通过卡  车运行C市,C市通过小卡车运往D区,D区的快递小哥通过电动三轮车运往我家。
  • 物理层:底层基础设施  上述的传输过程,可能是通过公路,铁路,航运等方式进行运输。

而作为用户,我们大部分时间只需要与应用层完成交互即可,少部分会与下面几层开始打交道。

四、封装和分用(重点)

下面我们先来讲解一下封装,假设如下场景:

主机A通过QQ给主机B发送消息,内容为 “hello”

这条消息在TCP/IP协议下会被各个层封装;

1,应用层(QQ应用程序)

QQ的程序内部自己会约定好一个应用层协议(内部具体怎样实现,外部人员并不了解,这里我们只是对其实现进行假想,方便讲解):假设有用户A在QQ上发送了一句消息hello给用户B,发送时间 2022-10-11 20:00:00 我们来模拟该数据发送的过程。假设应用层报文如下:

QQ应用程序会把这个应用数据报,交给传输层协议(传输层是操作系统内核实现的,操作系统会提供一些API(这里的API就是我们经常说的Socket API)给应用程序,代码里调用系统的API,就可以把应用层的数据交给传输层,也就是操作系统内核)。

2.传输层

传输层里面有UDP与TCP,这里以TCP协议为例,TCP协议要在之前的基础上,加上TCP协议报头。该报文由协议报头加上数据载荷构成。

传输层继续将这个数据交给网络层进行处理。

3.网络层

网络层中最常见的IP协议会将整个TCP数据报视为整体,作为载荷部分,在前面再次加上IP协议报头。

IP报头里面的信息有很多,其中最关键的就是 源IP 和 目的IP。

构造好IP数据报后,IP协议继续将其整个数据交给数据链路层

4.数据链路层

数据链路层这里以最典型的“以太网(协议)”为例。数据链路层会在IP协议数据报的基础上,加上帧头与帧尾。

帧头:存储的是源MAC地址和目的MAC地址。       帧尾:存储的是校验和。

tip:平时电脑插上的网线,就是“以太网线”,因此这个网线也就遵守以太网协议,以太网这个协议即管数据链路层,又管物理层。

到此 封装结束,数据从上到下,层层添加信息的过程,称为封装,

5.物理层

最后,数据链路层的数据交给物理层,物理层会将以太网数据帧(本质就是二进制数据),物理层会将二进制数据转换成高低电平通过网线或者无线的形式发送出去。

总结:

  • 文件数据先交给应用层,应用层添加上对应应用层协议的报头信息后,将数据再交给传输层。
  • 传输层收到数据后,再添加上对应传输层协议的报头信息,并将数据继续向下进行交付。
  • 网络层收到数据后,再添加上对应网络层协议的报头信息,接着将数据再交给链路层。
  • 链路层收到数据后,最后再添加上对应链路层协议的报头信息,至此数据封装完毕。

分用就是封装的逆过程

  • 链路层收到数据后,先将数据中对应链路层协议的报头信息提取出来,然后将剩下的数据交给网络层。
  • 网络层收到该数据后,再将数据中对应网络层协议的报头信息提取出来,然后将剩下的数据继续向上进行交付。
  • 传输层收到该数据后,再将数据中对应传输层协议的报头信息提取出来,然后将剩下的数据再交付给应用层。
  • 应用层收到数据后,最后将数据中对应应用层协议的报头信息提取出来,至此便完成了数据的解包与分用。

上述过程主要讲述了发送方和接受方之间的 封装和分用 的过程,实际上传输还有很多中间的过程,例如,A和B不是一根网线直连,中间要经过一些交换机/路由器进行通讯,实际过程更加复杂。

猜你喜欢

转载自blog.csdn.net/qq_63218110/article/details/127589624