【计算机网络原理】初始网络基础-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

文章目录


1. 网络发展史

1.1 单机时代

指最早计算机出现时, 计算机之间是相互独立的.
在这里插入图片描述

1.2 网络互连

随着时代的发展越来越需要计算机之间互相通信共享软件和数据即以多个计算机协同工作来完成业务就有了网络互连。

网络互连将多台计算机连接在一起完成数据共享。

数据共享本质是网络数据传输即计算机之间通过网络来传输数据也称为网络通信。

于是根据网络互连的规模不同可以划分为局域网和广域网。

局域网 LAN

局域网即 Local Area Network简称LAN。Local 即标识了局域网是本地局部组建的一种私有网络。

局域网内的主机之间能方便的进行网络通信又称为内网局域网和局域网之间在没有连接的情况下是无法通信的。

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

1. 基于网线直连
在这里插入图片描述

2. 基于集线器组建
在这里插入图片描述

3. 基于交换机组建

在这里插入图片描述

4. 基于路由器和交换机组建
在这里插入图片描述

广域网 WAN

广域网即 Wide Area Network简称WAN。

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

这样城市和城市国家和国家的网络之间都可以连接起来。
在这里插入图片描述

2. 网络通信基础

大致了解网络是什么, 它的发展史之后, 接下来我们就认识一些网络中的基本概念.

网络互连的目的是进行网络通信也即是网络数据传输更具体一点是网络主机中的不同进程间基于网络传输数据。

那么在组建的网络中如何判断到底是从哪台主机将数据传输到那台主机呢这就需要使用IP地址来标识。

2.1 IP 地址

IP 地址就是用来描述一个设备在网络中的虚拟位置, 每一个上网的设备在网络中都会有一个自己的 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.

2.2 端口号

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

概念

在网络通信中IP地址用于标识主机网络地址端口号可以标识主机中发送数据、接收数据的进程。简单说端口号用于定位主机中的进程。类似发送快递时不光需要指定收货地址IP地址还需要指定收货人 (端口号) , 简单来说就是用来区分一台主机上的不同应用程序.

格式

端口号是0~65535范围的数字在网络通信中进程可以通过绑定一个端口号来发送及接收网络数据。

注意事项
两个不同的进程不能绑定同一个端口号但一个进程可以绑定多个端口号。

常见端口号

21端口FTP 文件传输服务
22端口SSH协议、SCP文件传输、端口号重定向
23/tcp端口TELNET 终端仿真服务
25端口SMTP 简单邮件传输服务
53端口DNS 域名解析服务
69/udpTFTP
80/8080/3128/8081/9098端口HTTP协议代理服务器
110/tcp端口POP3E-mail
119端口Network 
123端口NTP网络时间协议
135、137、138、139端口 局域网相关默认端口应关闭
161端口SNMP简单网络管理协议
389端口LDAP轻量级目录访问协议、ILS定位服务
443/tcp 443/udpHTTPS服务器
465端口SMTP简单邮件传输协议
873端口rsync
1080端口SOCKS代理协议服务器常用端口号、QQ
1158端口ORACLE EMCTL
1433/tcp/udp端口MS SQL*SERVER数据库server、MS SQL*SERVER数据库monitor
1521端口Oracle 数据库
2100端口Oracle XDB FTP服务
3389端口WIN2003远程登录
3306端口MYSQL数据库端口
5432端口postgresql数据库端口
5601端口kibana
6379端口Redis数据库端口
8080端口TCP服务端默认端口、JBOSS、TOMCAT、Oracle XDBXML 数据库
8081端口Symantec AV/Filter for MSE
8888端口Nginx服务器的端口
9000端口php-fpm
9080端口Webshpere应用程序
9090端口webshpere管理工具
9200端口Elasticsearch服务器端口
10050端口zabbix_server 10050
10051端口zabbix_agent
11211端口memcache高速缓存系统
27017端口mongoDB数据库默认端口
22122端口fastdfs服务器默认端口

2.3 协议

现在有了IP地址和端口号可以定位到网络中唯一的一个进程但还存在一个问题网络通信是基于二进制0/1数据来传输如何告诉对方发送的数据是什么样的呢

网络通信传输的数据类型可能有多种图片视频文本等。同一个类型的数据格式可能也不同如发送一个文本字符串 "你好!" , 如何标识发送的数据是文本类型及文本的编码格式呢

所以, 基于网络数据传输时还需要使用协议来规定双方的数据格式。

概念

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

  1. 语法即数据与控制信息的结构或格式类似打电话时双方要使用同样的语言普通话
  2. 语义即需要发出何种控制信息完成何种动作以及做出何种响应语义主要用来说明通信双方应当怎么做。用于协调与差错处理的控制信息。类似打电话时说话的内容。
  3. 时序即事件实现顺序的详细说明。时序定义了何时进行通信先讲什么后讲什么讲话的速度等。比如是采用同步传输还是异步传输。

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

作用

为什么需要协议就好比我们与别人互相约定好在哪里见面什么时候见面这就是一种提前的约定也可以称之为协议。

在这里插入图片描述

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

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

2.4 五元组

在 TCP/IP 协议中通常用五元组来标识一个网络通信

  1. 源IP标识源主机
  2. 源端口号标识源主机中该次通信发送数据的进程
  3. 目的IP标识目的主机
  4. 目的端口号标识目的主机中该次通信接收数据的进程
  5. 协议号标识发送进程和接收进程双方约定的数据格式

五元组在网络通信中的作用类似于发送快递

在这里插入图片描述

2.5 协议分层

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

分层的作用

为什么需要网络协议的分层

分层最大的好处类似于面向接口编程定义好两层间的接口规范让双方遵循这个规范来对接。

在代码中类似于定义好一个接口一方为接口的实现类提供方提供服务一方为接口的使用类使用方使用服务

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

协议分层, 主要有两种模式.

  • OSI 七层模型
  • TCP/IP 五层模型

2.5.1 OSI七层模型

OSI 七层模型既复杂又不实用, 所以 OSI 七层模型并没有落地实现, 现在也只会在教科书上见到. 实际组建网络时, 只是以 OSI 七层模型设计中的部分分层, 也即是以下 TCP/IP 五层模型来实现.

2.5.2 TCP/IP五层模型

TCP/IP是一组协议的代名词它还包括许多协议组成了TCP/IP协议簇。

TCP/IP通讯协议采用了5层的层级结构每一层都呼叫它的下一层所提供的网络来完成自己的需求。

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

在这里插入图片描述
物理层我们考虑的比较少, 因此很多时候也可以称为 TCP/IP 四层模型.

2.6 封装和分用

封装和分用是网络传输数据时的基本流程, 每次网络传输都要进行这俩个过程.

  • 不同的协议层对数据包有不同的称谓在传输层叫做段(segment)在网络层叫做数据报(datagram)在链路层叫做帧(frame)。
  • 应用层数据通过协议栈发到网络上时每层协议都要加上一个数据首部 (header)称为封装 (Encapsulation)。
  • 首部信息中包含了一些类似于首部有多长载荷(payload)有多长上层协议是什么等信息。
  • 数据封装成帧后发到传输介质上到达目的主机后每层协议再剥掉相应的首部根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理。

2.6.1 数据封装(发送方情况)

我们就简单拿给好友发送一条qq消息为例, 当然真实的数据封装过程, 肯定还会比较复杂.

1. 应用层

QQ应用程序, 从输入框中获取到你要发送的消息, 构造成一个数据报(根据应用层的协议) , 通常很多应用程序中都会自定义应用层协议.

在这里, 我们假设 QQ 的应用层协议是这样的 发送人QQ号, 接收人QQ号, 时间, 消息内容, 所谓构造应用层数据报, 就是按照一定的格式进行字符串拼接, 发送方和接收方此格式需要达成一致.

在这里插入图片描述

当构造好数据报后, 应用程序就会调用传输层提供的接口, 将上述数据交给传输层进行处理.

2. 传输层

传输层协议有很多种, 其中最主要的就是 TCP 和 UDP 协议, 此处我们假设使用 UDP 协议.

上面我们将数据从应用层传到了传输层, 交给了 UDP, 于是 UDP 协议就会按照自己的协议格式, 生成一个 UDP 数据段.

在这里插入图片描述
UDP 不关心应用层数据里面内容是什么, 只会把应用层传来的数据当成字符串, 构造出一个 UDP 数据段来.

此时, 传输层会把构造好的 UDP 数据段, 进一步的交给网络层.

3. 网络层

网络层最主要的协议是 IP 协议. IP 协议也会根据自己的格式, 将传输层传来的数据段构造成一个 IP 数据报. 同样 IP 协议也不关心其中内容是什么, 只是单纯的把他当成一个字符串, 在这基础上再拼接一个 IP 报头.

在这里插入图片描述
然后, 网络层就会将数据报传给数据链路层.

4. 数据链路层

传到数据链路层后, 此时以太网, 会针对 IP 数据报, 进行进一步的封装, 添加一个帧头和一个帧尾, 构造出一个数据帧来. 同样, 以太网也不关心其中内容是什么.

在这里插入图片描述
上述这样的数据帧, 还需要进一步交给物理层.

5. 物理层

物理层指的就是我们的一些硬件设备, 比如网卡, 现在收到了数据链路层传来的数据帧. 本质上都是二进制的数据 (由 1010 构成的), 硬件设备就需要对上述数据进行转换了. 通过光电信号等等. 具体如何转换, 我们在此不仔细研究.

到这里, 我们就完成了发送过程.

一图总结

在这里插入图片描述

2.6.2 数据分用(接收方情况)

作为接收方, 我们是如何收到对方发送的 QQ 消息的呢?

1. 物理层

物理层收到光电信号, 就会对收到的信号进行解调, 就会得到一串 1010 的二进制数据序列, 也就是以太网数据帧.

在这里插入图片描述
解调后的数据帧就要被交给上一层, 数据链路层.

2. 数据链路层

数据链路层的以太网协议, 就会针对这个数据进行解析. 进行 “掐头去尾”.

在这里插入图片描述
此时将载荷部分取出来, 交给上层网络层.

3. 网络层

网络层的 IP 协议针对这个数据报进行解析, 去掉 IP 报头, 取出载荷, 进一步交给传输层.

在这里插入图片描述
根据网络层 IP 报头中的某个字段, 就可以知道当前这个载荷是一个 UDP 数据段, 于是便将其交给 UDP 处理.

4. 传输层

UDP 也是会针对数据段进行解析, 去掉段头, 取出载荷, 交给应用层的某个应用程序.

在这里插入图片描述
UDP 段头中, 有一个字段是用来记录目的端口的, 根据目的端口即可找到对应的应用程序.

5. 应用层

当 QQ 程序接收到这个数据后, 就会按照 QQ 的应用层协议, 进行解析.

在这里插入图片描述
进而将这里的数据显示到界面上, 这样接收方就收到了消息, 并且有时间信息, 内容信息等等.

一图总结
在这里插入图片描述


总结

✨ 本文主要讲解了计算机网络的一些基础知识, 网络的发展史, IP 地址, 端口号, 协议等等, 还重点讲述了网络传输时的封装和分用.
✨ 想了解更多计算机网络的知识, 可以收藏一下本人的计算机网络学习专栏, 里面会持续更新本人的学习记录, 跟随我一起不断学习.
✨ 感谢你们的耐心阅读, 博主本人也是一名学生, 也还有需要很多学习的东西. 写这篇文章是以本人所学内容为基础, 日后也会不断更新自己的学习记录, 我们一起努力进步, 变得优秀, 小小菜鸟, 也能有大大梦想, 关注我, 一起学习.

再次感谢你们的阅读, 你们的鼓励是我创作的最大动力!!!!!

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6