【计算机网络】网络基础知识

一. 网络发展史

  • 独立模式(单机模式):计算机之间相互独立,各自拥有独立的数据。
    在这里插入图片描述

  • 网络互连:将多台计算机连接在一起,完成数据共享。
    在这里插入图片描述

随着时代的发展,越来越需要计算机之间进行互相通信,共享软件和数据,即让多个计算机协同工作来完成业务,因此网络互连随即诞生。

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

根据网络互连的规模不同,可划分为局域网广域网

局域网(LAN)又称为内网,它英文全称为Local Area Network。若干台计算机可以通过网线、集线器、路由器、交换机 + 路由器等4种方式组成一个局域网,其中同一个局域网的计算机之间可以自由进行网络通信,而不同的局域网之间若没有通过连接,则无法进行通信。通常情况下局域网的范围可覆盖一片地区。
在这里插入图片描述

广域网(WAN)的英文全称为Wide Area Network。一个广域网由若干个局域网组成,各个局域网之间通过路由器相连。通常情况下,一个广域网的范围可以覆盖一座城市,甚至一个国家。
在这里插入图片描述

局域网和广域网是一个相对的概念,在某个程度上,由我们国家形成的广域网也可以看作世界网络关系网中的一个局域网。

注意:以上图片均出自《图解TCP/IP》一书

二. 网络通信基础

网络互连的目的就是网络通信,即网络数据传输,更具体来说是两台主机上不同进程间基于网络进行的数据传输。

1. 网络通信五元组

不同主机进行数据传输主要依靠网络数据包,一个数据包包括 5 个基本属性,也称作五元组。

网络通信五元组包括:

  1. 源 IP 地址
  2. 目的 IP 地址
  3. 源端口号
  4. 目的端口号
  5. 传输协议

以上五个属性共同构成了一个数据包的唯一标识,使一个数据能够从一台主机正确传输到另一台主机。

2. IP

数据在网络传输过程中,如何判断由哪一台主机传送到另一台主机呢?答案其实就是依靠 IP地址!

IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址,它使得数据能够在网络中准确路由和传递。

IP地址就好比收/发快递时,需要为快递公司提供的商家发货地址/顾客收件地址,有了这两个地址,快递员才能正确为顾客派发快递,顾客也能在购买商品不满意时为退货提供寄件依据。

IP地址由一系列数字组成,通常以“点分十进制”表示,主要可以分为 IPv4(Internet Protocol version 4) 和 IPv6(Internet Protocol version 6) 两种类型。

其中 IPv4 是一个32位二进制数字(即4个字节),通常被分割为 4 个“8位二进制数字”,如:01100100.00000100.00000101.00000110。
由于二进制数字表示并不直观,因此通常以“点分十进制”来表示一个IP地址,即 a.b.c.d 的形式(其中a、b、c、d均表示0 ~ 255的十进制整数),如:136.25.45.1。

IPv6 则采用 128位二进制数字(即16字节)来表示一台设备的网络地址,它通常被分割为 8 个 “16位二进制数字”,每16位都使用十六进制表示,用 : 来分隔,如2000:0db8:85a3:0000:0000:8a2e:0370:7334。IPv6 的出现主要是为了解决未来 IPv4 地址空间不足的问题。

3. 端口号

在网络通信中,IP地址 主要用于标识网络设备的唯一网络地址,而端口号则用来标识主机中发送数据/接收数据的进程或网络服务,简单来说:端口号用于定位主机中的进程。

端口号的作用类似于购买快递时填写的收件人信息,某个收货地址(IP地址)可能存在大量不同顾客购买的快递,有了收件人信息(端口号),快递员才能准确将快递送达顾客手上。

端口号是一个 0~65535(2个字节)范围的数字,其中 0号端口通常不使用,1 ~ 1023号端口称为“知名端口号”,通常被系统留作特殊用途,如:HTTP协议(80端口)、HTTPS协议(443端口)、SSH协议(22端口)、FTP协议(21端口)等。在网络通信中,某个进程可以通过绑定的端口号来接收或发送网络数据。

注意:一个进行可以同时绑定多个端口号,但一个端口号号只能被一个进程绑定

4. 协议

什么是协议?

协议是网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。
协议通常由三要素组成:语法、语义、时序。

  1. 语法:即数据与控制信息的结构或格式。
  2. 语义:即需要发出何种控制信息,完成何种动作以及做出何种响应。
  3. 时序:即事件实现顺序的详细说明。

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

为什么需要协议?
协议好比一个人为另一个人写一份策划文案,只要做好就能得到相应的奖励,如果文案没有完成或约定的奖励与原先不符,则这次交易就会失败,因此只有双方都遵守约定交易才能顺利达成(网络数据才能被正确传输)。

在真实的网络世界中,数据以光信号或电信号作为媒介,利用信号的“频率”和“强弱”来表示 0、1这样的二进制数字。只有约定好双方的数据格式(即协议),才能保证各式各样的数据被正确传递。

对于一台计算机,生产厂商有很多,计算机操作系统有很多,计算机网络硬件设备也很多,如何让任意两台主机都能顺利完成通信呢?
答案就是约定一个公共的数据传输标准。并且让大家都去遵守这个约定。简单来说,数据传输的约定就是网络协议!

5. 协议分层

为什么需要进行协议分层?
在网络通信中,一条简单的数据(如:“你好,世界”)的传输需要约定好各种数据格式,如果这些数据格式由一个整体的巨大的协议提供支持,协议会显得十分臃肿和复杂,不利于别人理解。因此,将功能各异的协议进行分层,就显得十分必要了。

协议分层最大的好处:简化协议的复杂性,将协议划分为多个功能不同、相对独立的层次,对于每一层的来说只需利用下层提供的服务来完成本层的通信功能,不必关心下层协议具体的实现细节。

OSI七层模型

OSI:即Open System Interconnection,开放系统互连。它将网络协议从上到下分为以下7层:
在这里插入图片描述
注意:OSI七层模型既复杂且不实用,因此最终没有落地实现。

TCP/IP 五层模型(四层模型)

TCP/IP 五层模型将OSI七层模型中的表示层、会话层、应用层的功能合并为一层,从上到下具体表现为 以下5层:

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

参考资料出自:TCP/IP四层模型和OSI七层模型的概念

如何理解TCP/IP五层模型?
还是拿网购一件商品来说,应用层表现为该商品的用途,传输层关注快递的发货地址和收货地址,网络层关注这两个地址间的路径规划(如有多少条路径,每条路径经过哪些地方等),数据链路层关注中间两个路径间该使用什么交通工具去运输更加合适,物理层则是公路、铁路等基础设施,为运输提供最基本的保障。

OSI七层模型与TCP/IP五层模型的对比如下:
在这里插入图片描述

网络设备所在分层

主机:它的操作系统内核实现了TCP/IP五层模型中的下4层,即传输层到物理层。
路由器:它实现了TCP/IP五层模型中的下3层,即网络层到物理层。
交换机:它实现了TCP/IP五层模型中的下2层,即数据链路层到物理层。
集线器:它只实现了物理层。

6. 两台主机之间的网络通信流程

在了解两台主机间通信的具体流程前,我们需要理解客户端和服务器是什么,请求和响应是什么。

客户端:客户端是指连接到服务器的计算机或设备,用于发送请求或处理服务器提供的服务或数据。客户端可以是任何设备,如个人电脑、智能手机、平板电脑等。

服务器:服务器是一种用于存储、处理和传输数据的计算机系统。它通常用于提供网络服务、存储文件和托管网站。服务器可以是物理设备,也可以是虚拟系统。

请求:请求是客户端向服务器发送的消息,用于请求特定的资源或执行特定操作。

响应:响应是服务器对客户端发送的请求的回复,其中包含请求的结果或执行的操作。

TCP/IP 通讯的流程如下图:
在这里插入图片描述

客户端发送的请求数据会从 应用层到数据链路层 会被一层层进行封装,加上数据首部,其中首部信息中包含了类似首部长度、载荷信息和长度、上层协议是什么等信息;当数据包通过传输介质到达目的主机时,数据从下到上又会被一层层解析,去除数据首部信息,并根据这些信息将数据交给不同的协议处理。

封装的过程如下:
在这里插入图片描述

分用的过程如下:

在这里插入图片描述

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

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

相关文章

相机选型介绍

摄影测量中,相机是非常重要的角色,合适的相机产出合适的图像,得到合适的重建精度,这是相机的重要性。 您也许第一反应是,摄影测量所需的理想相机,是有着超高分辨率的相机,但事实可能并非如此&a…

【数据结构-字符串 五】【字符串转换】字符串转为整数

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【字符串转换】,使用【字符串】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…

YOLO学习中的琐碎知识点

目录 一、导入的库 二、名词介绍 (1)pytorch张量 (2)边界框(bounding box) 三、pycharm操作 (1)参数设置 四、文件认识 五、YOLO如何训练自己的模型 一、导入的库 import to…

[已解决]npm淘宝镜像最新官方指引(2023.08.31)

最新的配置淘宝镜像的淘宝官方提供的方法 npm config set registry https://registry.npmmirror.com原来的 registry.npm.taobao.org 已替换为 registry.npmmirror.com ,当点击 registry.npm.taobao.org 会默认跳转到 registry.npmmirror.com 如果你想将npm的下载…

StarRocks——滴滴OLAP的技术实践与发展方向

原文大佬的这篇StarRocks实践文章整体写的很深入,介绍了StarRocks数仓架构设计、物化视图加速实时看板、全局字典精确去重等内容,这里直接摘抄下来用作学习和知识沉淀。 目录 一、背景介绍 1.1 滴滴OLAP的发展历程 1.2 OLAP引擎存在的痛点 1.2.1 运维…

【DDD】学习笔记-领域模型与数据模型

领域模型与数据模型 领域驱动的设计模型最重要的概念就是聚合,同时,聚合还要受到限界上下文边界的控制。Eric Evans 之所以要引入限界上下文,其中一个重要原因就是因为我们“无法维护一个涵盖整个企业的统一模型”,于是需要限界上…

[深度学习]yolov9+bytetrack+pyqt5实现目标追踪

【简介】 目标追踪简介 目标追踪是计算机视觉领域中的一个热门研究方向,它涉及到从视频序列中实时地、准确地跟踪目标对象的位置和运动轨迹。随着深度学习技术的快速发展,基于深度学习的目标追踪方法逐渐展现出强大的性能。其中,YOLOv9&…

Arduino中安装ESP32网络抽风无法下载 暴力解决办法 python

不知道什么仙人设计的arduino连接网络部分,死活下不下来。(真的沙口,第一次看到这么抽风的下载口) 操作 给爷惹火了我踏马解析json选zip直接全部下下来 把这个大家的开发板管理地址下下来跟后面python放在同一目录下&#xff0c…

Android LinearLayout 如何让子元素靠下居中对齐 center bottom

Android LinearLayout 如何让子元素靠下居中对齐 center bottom 首先你需要知道两个知识点: android:layout_gravity 指定的是当前元素在父元素中的位置android:gravity 指定的是当前元素子元素的排布位置 比如: 有这么一个布局,我需要让…

OD(10)之Mermaid甘特图(Gantt diagrams)使用详解.md

OD(8)之Mermaid甘特图(Gantt diagrams)使用详解 Author: Once Day Date: 2024年2月24日 漫漫长路才刚刚开始… 全系列文章可参考专栏: Linux实践记录_Once_day的博客-CSDN博客 参考文章: 关于 Mermaid | Mermaid 中文网 (nodejs.cn)Mermaid | Diagramming and charting to…

OpenCV Mat实例详解 六

本文将接着OpenCV Mat实例详解继续介绍OpenCV Mat类的操作符及公有成员函数。 Mat & operator Mat & operator (const Mat &m) 将一个Mat对象赋值个另一个Mat对象。 Mat & operator (const MatExpr &expr) 将一个Mat表达式值赋值给Mat对象 Mat & op…

备考2024年汉字小达人:历年考题练一练-18道选择题

今天为大家分享汉字小达人的备考学习资源,通过参加没有报名费、人人可参加的汉字小达人比赛,激发孩子学习语文的兴趣,并且提升语文学习成绩。 汉字小达人的两轮比赛(区级自由报名活动、市级活动)的选择题主要有六种题型…

Mac安装Appium

一、环境依赖 一、JDK环境二、Android-SDK环境(android自动化)三、Homebrew环境四、Nodejs 安装cnpm 五、安装appium六、安装appium-doctor来确认安装环境是否完成七、安装相关依赖 二、重头大戏, 配置wda(WebDriverAgent&#x…

华为---RSTP(三)---P/A机制及RSTP的生成树形成过程

目录 1. P/A机制简介 1.1 P/A机制的作用 1.2 P/A协商的前提条件 1.3 RSTP选举思路 2. P/A协商过程 3. 举例说明RSTP的生成树形成过程 3.1 示例环境要求 3.2 RSTP的生成树形成过程 3.2.1 SW和SW1之间链路上抓包分析 3.2.2 SW和SW2之间链路上抓包分析 3.2.3 SW1和SW2之…

实现外网手机或者电脑随时随地远程访问家里的电脑主机(linux为例)

文章目录 一、背景概要二、安装配置花生壳软件(linux版本)三、手机端(外网)验证连接四、安装ubuntu20server版系统遇到的问题记录 一、背景概要 由于经常在遇到某些问题的时候,针对某一个场景的理解,需要借助于自己的电脑去编译(aosp/linux/qemu)代码查…

5.2.鸿蒙LiteOS-M los_dispatch

目录 一、cortex-m4 los_dispatch.S代码分析坚持就有收获 一、cortex-m4 los_dispatch.S代码分析 .syntax unified #.syntax [unified | divided], 指定arm 汇编语法规则 .arch armv7e-m #指定平台, 与命令行参数-march同样的作用 .fpu fpv4-sp-d16 #指定浮点运算…

苹果分拣检测YOLOV8NANO

苹果分拣,可以检测成熟、切片、损坏、不成熟四种类型,YOLOV8NANO,训练得到PT模型,然后转换成ONNX,OPENCV的DNN调用,支持C,PYTHON 苹果分拣检测YOLOV8NANO,检测四种类型苹果

C++ 学习之函数对象

C++ 函数对象基本概念 在C++中,函数对象(Function Objects)是一种类或结构体,它重载了函数调用运算符operator(),因此可以像函数一样被调用。函数对象有时也被称为仿函数(Functor)。 以下是关于C++函数对象的基本概念: 使用函数对象:函数对象可以像普通函数一样被调…

【Flink精讲】Flink 内存管理

面临的问题 目前, 大数据计算引擎主要用 Java 或是基于 JVM 的编程语言实现的,例如 Apache Hadoop、 Apache Spark、 Apache Drill、 Apache Flink 等。 Java 语言的好处在于程序员不需要太关注底层内存资源的管理,但同样会面临一个问题&…

从零开始学习Netty - 学习笔记 -Netty入门-EventLoop

5.Neety入门 什么是Netty Netty是一个基于Java NIO的异步事件驱动的网络应用框架。它被广泛用于开发高性能、高可靠性的网络通信程序,特别是服务器端和客户端程序。Netty提供了简洁而强大的API,使得开发者能够轻松地构建各种网络应用,包括实…