网络编程——基础知识

2023-11-08

网络发展

网络没有出来之前计算机都是相互独立的:

在这里插入图片描述

网络就是将独立的计算机连接在一起,局域网和广域网的区别只是范围上的大小:

局域网LAN: 计算机数量更多了,通过交换机和路由器连接在一起:

在这里插入图片描述

广域网:将远隔千里的计算机都连在一起

在这里插入图片描述

协议

就如同人想要进行有效沟通,我们首先要知道对方的语言规则,才能知道对方在说什么。计算机进行交流则是需要规定协议来进行交互的。

就像打电话:在上层,我们是直接沟通,但是在底层确实两台通信设备在通信协议下互相发送信号,并将接收到的信号转换为我们的语言。

在这里插入图片描述

在网络中,通信将会变得更加复杂。通常将复杂问题简单化,处理问题就会变得更简单。所以网络分为多层次,分层的好处就是便于封装

OSI七层模型

OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;

在这里插入图片描述

在这里插入图片描述

  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯

OSI七层模型只是一种设计方法,但是它既复杂又不实用,一般来说都是应用TCP/IP 四层模型。

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

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

  • 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.

  • 数据链路层: 负责设备之间的数据帧的传送和识别.例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作.有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.

  • 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

  • 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.

  • 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 我们的网络编程主要就是针对应用层.

在这里插入图片描述

物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.

对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
对于一台路由器, 它实现了从网络层到物理层;
对于一台交换机,它实现了从数据链路层到物理层;

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

网络传输

网络传输流程:

在这里插入图片描述

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).

  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header)也叫报头,称为封装(Encapsulation)。

  • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.

  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理.

数据封装的过程:

在这里插入图片描述

数据封装的过程:

在这里插入图片描述

网络地址

IP地址

IP地址是在IP协议中用来标识网络中不同主机的地址,有IPV4和IPV6两个版本。

对于IPv4来说, IP地址是一个4字节, 32位的整数,通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

MAC地址

MAC地址用来识别数据链路层中相连的节点。

  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)

  • mac地址在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).

网络通信的本质

网络通信实际上是两个应用程序在进行通信,也就是说网络通信只是进程通信的一个手段。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络编程——基础知识 的相关文章

随机推荐

  • pytorch: 给tensor删除或者添加维度为1的维度(squeeze和unsqueeze)

    删除tensor中维度为1的维度 在pytorch中 用torch squeeze 函数或者tensor的自身成员函数squeeze 去除维度为1的维度 import torch x torch randn 3 1 4 1 2 a x sq
  • Servlet学习(八):Session

    一 Session的基本使用 1 概念 Session 服务端会话跟踪技术 将数据保存到服务端 Session是存储在服务端而Cookie是存储在客户端 存储在客户端的数据容易被窃取和截获 存在很多不安全的因素 存储在服务端的数据相比于客户
  • GDB 格式化结构体输出及记录到文件

    GDB 常用命令参考手册 set print address set print address on 打开地址输出 当程序显示函数信息时 GDB会显出函数的参数地址 系统默认为打开的 show print address 查看当前地址显示
  • JDBC五种连接方式详解

    目录 前言 二 JDBC程序编写步骤 1 总流程图如下 2 五种连接方式 2 1 数据库连接方式一 2 2 数据库连接方式二 2 3 数据库连接方式三 2 4 数据库连接方式四 2 5 数据库连接方式五 总结 前言 JDBC Java Da
  • 【计算机网络】 RTT和RTO

    文章目录 RTT 往返时延 RTO Retransmission Timeout 超时重传时间 RTT 往返时延 RTT Round Trip Time 是计算机网络中的一个重要的性能指标 表示从发送端发送数据开始 到发送端接收到来自接收端
  • STM32学习笔记——EXIT(外部中断)

    目录 一 什么是中断系统 二 中断系统执行流程 三 NVIC 提供中断控制器 CPU的好助手 1 NVIC的作用 STM32 2 NVIC优先级分组 四 EXTI 外部中断 1 EXTI简介 2 EXTI基本结构 3 EXTI框图 五 AF
  • elk笔记12--常见api和设置区别

    elk笔记12 常见api和设置区别 1 freeze 和 close 区别 1 1 freeze介绍 1 2 close介绍 2 persistent 和transient区别 3 两个allocation 说明 本文主要记录 es 中常
  • 《数据结构》将一个带头结点的单链表分解成两个单链表

    将一个带头结点的单链表分解成两个单链表 题目描述 设计一个算法 将一个带头结点的单链表分解成两个具有相同结构的 链表B和C 其中B白哦的结点为A中小于0的结点 C表的结点为A中大于0 的结点 要求B和C 仍利用A表的结点 A表的元素都是非0
  • pyqt5 QLabel详细用法

    QLabel控件类的主要API如下 setAlignment 设置文本的对齐方式 setIndent 设置文本缩进 text 获取文本内容 setText 设置文本内容 selectedText 返回所选择的字符 setBuddy 设置伙伴
  • OpenCV代码提取:遍历指定目录下指定文件的实现

    OpenCV 3 1之前的版本 在contrib目录下有提供遍历文件的函数 用起来比较方便 但是在最新的OpenCV 3 1版本给去除掉了 为了以后使用方便 这里将OpenCV 2 4 9中相关的函数给提取了出来 适合在Windows 64
  • python运行报错:‘NoneType‘ object is not callable

    NoneType object is not callable 空类型对象不可调用 调用了装饰器函数 但是装饰器函数没有返回值 导致使用的函数报错 参照代码的注释 timmer 引用装饰器等于test1 timmer func 所以timm
  • 字节跳动开源 Kelemetry:面向 Kubernetes 控制面的全局追踪系统

    动手点关注 干货不迷路 Kelemetry是字节跳动开发的用于Kubernetes控制平面的追踪系统 它从全局视角串联起多个 Kubernetes 组件的行为 追踪单个 Kubernetes 对象的完整生命周期以及不同对象之间的相互影响 通
  • MongoDB 获取数组中匹配到的第一个元素对象

    例如当前test库中的grade集合中有两条文档数据 如下图所示 相关的两个实体映射类如下 import lombok Data import org springframework data annotation Id import or
  • 政企数智办公潮水里的融云「答卷」

    在这张集合了党政机关 金融保险 交通 能源电力等中大型组织复杂办公需求的高难度答卷上 融云在扎实耐打的通信底层之上 保持灵活的身段和强大的进化能力 稳定而轻盈 在不断变化的环境中正在成为确定性本身 作者 皮爷 出品 产业家 如果说过去两年里
  • 报sslSocketFactory(SSLSocketFactory) not supported on JDK 9+

    使用OkHttpClient的时候 jdk版本1 8 0 151启动不会报错 但jdk版本1 8 0 202启动就会报错 应该是OkHttpClient jdk小版本号高了不行 修改代码如下 public class SSLSocketCl
  • 20.docker之DockerCompose基础进阶

    1 docker compose命令模板 docker compose yml 作用 compose以项目为核心 在项目中定义一组具有相同业务逻辑单元服务运行 注意 在编写docker compose yml文件时 所有的冒号 短横线 后面
  • Spring框架入门基础1:IOC---控制权反转

    Spring框架的优点 方便解耦 简化开发 Spring就是一个大工厂 可以将所有对象创建和依赖关系维护 交给Spring管理 这也是IOC的作用 IOC IOC就是控制反转 将创建对象的过程交给spring进行管理 可以用来减低计算机代码
  • linux命令练习-实验一

    实验序号 一 实验项目 熟悉常用的Linux操作 实验成绩 一 实验目的 为后续上机实验做准备 熟悉常用的Linux操作 1 了解安装Linux的方法 2 熟悉常用的Linux操作 二 实验内容 一 安装Linux Ubuntu 14 以上
  • [12]STM32-NVCI中断优先级管理

    前言 这一篇博客主要讲解NVCI中断优先级分组 优先级设置 因为还没有我还没学到做中断实验 所以有些地方我自己理解得也不是很透彻 这是看了原子哥的视频用自己的话来梳理一下思路 基础知识 STM32 有 84 个中断 包括 16 个内核中断和
  • 网络编程——基础知识

    全文目录 网络发展 协议 OSI七层模型 TCP IP五层 或四层 模型 网络传输 网络地址 IP地址 MAC地址 网络通信的本质 网络发展 网络没有出来之前计算机都是相互独立的 网络就是将独立的计算机连接在一起 局域网和广域网的区别只是范