【计算机网络原理】初始网络基础

文章目录

  • 1. 网络发展史
    • 1.1 单机时代
    • 1.2 网络互连
      • 局域网 LAN
      • 广域网 WAN
  • 2. 网络通信基础
    • 2.1 IP 地址
    • 2.2 端口号
    • 2.3 协议
    • 2.4 五元组
    • 2.5 协议分层
      • 2.5.1 OSI七层模型
      • 2.5.2 TCP/IP五层模型
    • 2.6 封装和分用
      • 2.6.1 数据封装(发送方情况)
      • 2.6.2 数据分用(接收方情况)
  • 总结


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/udp:TFTP
80/8080/3128/8081/9098端口:HTTP协议代理服务器
110/tcp端口:POP3(E-mail)
119端口:Network 
123端口:NTP(网络时间协议)
135、137、138、139端口: 局域网相关默认端口,应关闭
161端口:SNMP(简单网络管理协议)
389端口:LDAP(轻量级目录访问协议)、ILS(定位服务)
443/tcp 443/udp:HTTPS服务器
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 XDB(XML 数据库)
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 地址, 端口号, 协议等等, 还重点讲述了网络传输时的封装和分用.
✨ 想了解更多计算机网络的知识, 可以收藏一下本人的计算机网络学习专栏, 里面会持续更新本人的学习记录, 跟随我一起不断学习.
✨ 感谢你们的耐心阅读, 博主本人也是一名学生, 也还有需要很多学习的东西. 写这篇文章是以本人所学内容为基础, 日后也会不断更新自己的学习记录, 我们一起努力进步, 变得优秀, 小小菜鸟, 也能有大大梦想, 关注我, 一起学习.

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/165867.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Javascript】构造函数的参数写法

目录 写法一(固定参数): 写法二(对象类型的参数) 写法一(固定参数): 如果参数与参数的值不对应 写法一 要求位置严格对应,明确知道对象的属性 写法二(对象类…

交换机端口灯常亮 端口up状态 服务器设置ip交换机获取不到服务器网卡mac地址 不能通信

环境: 深信服防火墙 8.0.75 AF-2000-FH2130B-SC S6520X-24ST-SI交换机 version 7.1.070, Release 6530P02 问题描述: 交换机一个vlan下有3台服务器,连接端口2、3、4,2和3连接的服务器正常,交换机3端口灯常亮 端口up状态 服务器自动获取不了地址,改为手动设置ip后,交…

数据结构:排序

文章目录 1. 预备知识2. 插入排序2.1 直接插入排序2.2 折半插入排序 3. 希尔排序4. 交换排序4.1 冒泡排序4.2 快速排序4.2.1 选取基准值4.2.2 分割策略4.2.3 小数组4.2.4 基于Hoare版本 最后优化 递归版本 快速排序4.2.5 快速排序的非递归版本4.2.6 快速排序的分析 5. 选择排序…

【趣味随笔】农业机器人的种类与发展前景

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

一、Qt简介

1. 什么是Qt? Qt是一个基于C的图形用户界面(GUI)开发框架,但图形用户界面并不是Qt的全部,因为Qt还包含了很多非图形化的开发功能:多线程、数据库、图像图形处理、音视频处理、网络通信、文件IO等。 一方面…

实现日期间的运算——C++

😶‍🌫️Take your time ! 😶‍🌫️ 💥个人主页:🔥🔥🔥大魔王🔥🔥🔥 💥代码仓库:🔥🔥魔…

总结一下vue中v-bind的常见用法

文章目录 🐕前言:🏨简述一下v-bind命令🧸其它写法1.还是当成字符串🦓其它写法2.当成对象来使用 🐕前言: 本篇博客主要总结一下v-bind命令在vue中的常见用法(看完即懂) …

英语——歌诀篇——歌诀记忆法

介词用法速记歌 年月季前要用in, 日子前面却不行。 遇到几号要用on, 上午下午又用in。 要说某时上下午, 用on换in才可行。 午夜黄昏和黎明, 要用at不用in。 差儿分到几点, 写个“to”在中间。 若是几点过几分&#xf…

el-input单独校验

el-input单独校验,效果图如下 <el-col :span"24"><el-form-item label"修订次数:" prop"sPublish"><el-input-numberv-model"addForm.sPublish":min"0":controls"false":precision"0"p…

Flutter视图原理之StatefulWidget,InheritedWidget

目录 StatefulElement1. 构造函数2. build3. _firstBuild3. didChangeDependencies4. setState InheritedElement1. Element类2. _updateInheritance3. InheritedWidget数据向下传递3.1 dependOnInheritedWidgetOfExactType 4. InheritedWidget的状态绑定4.1. ProxyElement 在f…

【项目设计】网络对战五子棋(上)

想回家过年… 文章目录 一、项目前置知识1. websocketpp库1.1 http1.0/1.1和websocket协议1.2 websocketpp库接口的前置认识1.3 搭建一个http/websocket服务器 2. jsoncpp库3. mysqlclient库 二、 项目设计1. 项目模块划分2. 实用工具类模块2.1 日志宏封装2.2 mysql_util2.3 j…

3D视觉硬件技术

目前市面上主流的3D光学视觉方案有三种&#xff1a; 双目立体视觉法&#xff08;Stereo Vision&#xff0c;在下文称双目法&#xff09;&#xff0c;结构光法&#xff08;Structured Light&#xff0c;在下文称结构光&#xff09;以及飞行时间法(Time of Flight, ToF在下文称T…

【JavaEE重点知识归纳】第9节:抽象类和接口

目录 一&#xff1a;抽象类 1.概念 2.语法 3.特性 4.作用 二&#xff1a;接口 1.概念 2.语法 3.接口使用 4.特性 5.实现多个接口 6.接口间的继承 7.Comparable接口 8.Clonable接口 9.抽象类和接口的区别 一&#xff1a;抽象类 1.概念 &#xff08;1&#xff0…

iOS如何实现语音转文字功能?

1.项目中添加权限 Privacy - Speech Recognition Usage Description : 需要语音识别权限才能实现语音转文字功能 2.添加头文件 #import <AVFoundation/AVFoundation.h> #import<Speech/Speech.h> 3.实现语音转文字逻辑: 3.1 根据wav语音文件创建请求 SFSpeechU…

Java String类

字符串转义符号为 \ 常见的转义字符 转移字符对应的英文是 escape character , 转义字符串&#xff08; Escape Sequence &#xff09; 字母前面加上捺斜线 "" 来表示常见的那些不能显示的 ASCII 字符 . 称为转义字符 . 如 \0,\t,\n 等&#xff0c;就称为转 义字…

【【萌新的FPGA学习之快速回顾 水 水 】】

萌新的FPGA学习之快速回顾 水 水 上一条FPGA的更新在9 25 并且2个礼拜没写 verilog 了 正好 刷新一下记忆 FPGA CPU DSP 的对比 在数字电路发展多年以来&#xff0c;出现了 CPU、DSP 和 FPGA 三种经典器件&#xff0c;每个都是具有划时代意义的器件。CPU、DSP 和 FPGA 都有各…

QT 操作Windows系统服务

Windows服务是在Windows操作系统上运行的后台应用程序&#xff0c;它们在系统启动时自动启动&#xff0c;并在后台持续运行&#xff0c;不需要用户交互。Windows服务的作用包括但不限于以下几个方面&#xff1a;1. 提供系统功能&#xff1a;许多Windows服务提供了系统级的功能和…

大数据技术学习笔记(二)—— Hadoop运行环境的搭建

目录 1 模版虚拟机准备1.1 修改主机名1.2 修改hosts文件1.3 修改IP地址1.3.1 查看网络IP和网关1.3.2 修改IP地址 1.4 关闭防火墙1.5 创建普通用户1.6 创建所需目录1.7 卸载虚拟机自带的open JDK1.8 重启虚拟机 2 克隆虚拟机3 在hadoop101上安装JDK3.1 传输安装包并解压3.2 配置…

腾讯地图基本使用(撒点位,点位点击,弹框等...功能) 搭配Vue3

腾讯地图的基础注册账号 展示地图等基础功能在专栏的上一篇内容 大家有兴趣可以去看一看 今天说的是腾讯地图的在稍微一点的基础操作 话不多说 直接上代码 var marker ref(null) var map var center ref(null) // 地图初始化 const initMap () > {//定义地图中心点坐标…

不想加班的小伙伴们,请把这四个神器焊在电脑上~

今天又来给大家分享干货啦&#xff0c;如果你下载视频没渠道&#xff0c;写方案没灵感思路&#xff0c;做表格太慢&#xff0c;做海报太复杂&#xff0c;那你一点要看这一篇&#xff0c;今天分享的四个宝藏网站专门解决以上问题&#xff0c;一起来看看吧&#xff01; 一、WeDow…