【计算机网络】网络基础(协议,网络传输流程、Mac/IP地址 、端口号)

news2025/5/12 17:45:57

目录

    • 1.协议简述
    • 2.网络分层结构
      • 2.1 软件分层
      • 2.2 网络分层
        • 为什么?
      • 是什么?
        • OSI七层模型
        • TCP/IP五层(或四层)结构
    • 3. 网络与操作系统之间的关系
    • 4.从语言角度理解协议
    • 5.网络如何传输
      • 局域网通信(同一网段)
    • 不同网段、MAC、IP地址
    • 端口号

1.协议简述

为什么要存在网络?网络主要解决什么问题?

核心问题就是计算机之间的距离变远了,数据传输变得不再那么方便了,所以有了网络,而距离变远必然会引发新的问题(可靠性、主机定位等 ),所以我们的网络协议就是为了解决这些问题,所以协议就是一种解决方案

首先我们要知道,协议是一种约定,计算机协议,就是计算机之间的约定
而在网络中的协议是为了减少我们的通信成本,主要是沟通成本

通俗来讲就是:

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

2.网络分层结构

2.1 软件分层

在计算机领域有一句经典名言

任何问题都可以添加一层软件层来解决

层和层之间是松耦合的,可以随时替换或者方便维护

2.2 网络分层

为什么?

既然协议是一种解决方案,一个好的方案是要可扩展的,方便维护的,所以网络协议就被设计为层状结构了

是什么?

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

  • 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;

  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;

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

但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解
在这里插入图片描述

TCP/IP五层(或四层)结构

但我们工程使用一般用的是TCP/IP五层(或四层)结构

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求
在这里插入图片描述

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

一般来说:

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

但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发);

3. 网络与操作系统之间的关系

拿Windows与Linux系统举例,这两个系统中的内部实现比如内存管理或者进程管理是不一样的,那他们为什么可以通信呢,因为尽管他们内部实现不同,但他们在网络上都要遵循上述的OSI七层或者TCP/IP五层模型,所以他们之间可以通信

世界上所有的操作系统只要想入网,就必须遵守TCP/IP协议,保证不同主机之间的通信

4.从语言角度理解协议

既然有了协议约定,那么 协议双方传递的的数据就是都双方能识别的结构体数据类型,这就是约定

5.网络如何传输

局域网通信(同一网段)

在我们的世界,是先有局域网再有互联网的,各种各样的局域网组合通信构成了我们的互联网
同一网段内的两台主机如何进行文件传输呢?

首先,文件传输的过程都一定要遵守上述所讲的模型(TCP/IP),如下图所示

在这里插入图片描述

加入我们的用户A要传递一个C信息,这几个要经过一些规定的路径和流程才能到达用户B

  1. 我们要传递的信息作为有效载荷,从用户层一层一层向下传递
  2. 每到一层我们都要加上这一层的协议报头
  3. 这种协议报头+有效载荷的结构我们称为报文,报文不断被自定义向下交互的过程,不断添加每一层的协议报头,我们叫做封装
  4. 每一层的报文在每一层都有着自己的名称(数据段、数据报、数据帧)
  5. 当A用户的信息自顶向下封装传输到B用户的底部时,B用户又要开始将这些报文解包和分用
  6. 自底向上没到一层解除对应层的协议报头,直到信息到达用户层,我们的报头中一般包含了上层协议是谁

因此任何协议:

1.可以将报头和有效载荷进行分离
2.可以将自己的有效载荷交付给上层的协议

在这里插入图片描述

不同网段、MAC、IP地址

对于跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器

在这里插入图片描述
这里我们要了解两个重要的地址,MAC与IP地址

路由器一般至少要跨越两个子网,所以要有两张网卡,也就是要有两个MAC地址

在我们数据运输的过程,报文带有两套地址

  • 源IP与目标IP地址
  • 源mac与目标mac地址

源IP与目标IP地址是一直不变的,就比如我们坐火车去北京旅游,我的源IP地址是家,目标IP地址是北京,这个一直不会变

而在去北京的过程我们会经过许多站,比如我现在在长沙,我的源mac地址就是长沙,我的下一站是武汉,我们的目标mac地址就是武汉,mac地址会随我们站的改变而改变

IP地址就像是方向,永远不变,mac地址就像我们的坐标,表明当前位置和指引下一步

端口号

我们要明白,网络通信的本质其实就是进程在帮我们进行网络通信(进程间通信)

我们知道IP地址可以标识唯一的一台主机,而端口号port可以标识该主机上唯一的一个进程,两者结合起来就可以标识互联网中的唯一一个进程(源IP地址、源端口号 | 目的IP地址、目的端口号

所以客户端和服务器端都可以通过上述方式唯一的找到彼此,上述这种基于IP地址加端口号的通信模式我们称为套接字通信(socket通信)

  • 端口号(port)是传输层协议的内容,是一个2字节16位的整数
  • 用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理
  • IP地址 + 端口号能够标识网络上的某一台主机的某一个进程
  • 一个端口号只能被一个进程占用
  • 一个进程可以绑定多个端口号; 但是一个端口号不能被多个进程绑定

我们知道 pid 表示唯一一个进程,但此处我们的端口号也是唯一表示一个进程,为什么要有端口号,两者又是什么关系呢?

  1. 为什么要有端口号

不要与系统向耦合,OS中每个进程都有PID,但不是每个进程都要有端口号(port),专事专办

2.两者关系

1.两者关系有点类似于哈希,有了port,就可以通过port在哈希表中找到相应的PID(绑定)

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

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

相关文章

pgsql中使用jsonb的mybatis-plus和jps的配置

在pgsql中使用jsonb类型的数据时,实体对象要对其进行一些相关的配置,而mybatis和jpa中使用各不相同。 在项目中经常会结合 MyBatis-Plus 和 JPA 进行开发,MyBatis_plus对于操作数据更灵活,jpa可以自动建表,两者各取其…

使用MetaGPT 创建智能体(2)多智能体

先给上个文章使用MetaGPT 创建智能体(1)入门打个补丁: 补丁1: MeteGTP中Role和Action的关联和区别?这是这两天再使用MetaGPT时候心中的疑问,这里做个记录 Role(角色)和 Action&…

C# 使用.NET内置的 IObservable<T> 和 IObserver<T>-观察者模式

核心概念 IObservable<T> 表示 可观察的数据源&#xff08;如事件流、实时数据&#xff09;。 关键方法&#xff1a;Subscribe(IObserver<T> observer)&#xff0c;用于注册观察者。 IObserver<T> 表示 数据的接收者&#xff0c;响应数据变化。 三个核心…

Redis——网络模型之IO讲解

目录 前言 1.用户空间和内核空间 1.2用户空间和内核空间的切换 1.3切换过程 2.阻塞IO 3.非阻塞IO 4.IO多路复用 4.1.IO多路复用过程 4.2.IO多路复用监听方式 4.3.IO多路复用-select 4.4.IO多路复用-poll 4.5.IO多路复用-epoll 4.6.select poll epoll总结 4.7.IO多…

vue3 传参 传入变量名

背景&#xff1a; 需求是&#xff1a;在vue框架中&#xff0c;接口传参我们需要穿“变量名”&#xff0c;而不是字符串 通俗点说法是&#xff1a;在网络接口请求的时候&#xff0c;要传属性名 效果展示&#xff1a; vue2核心代码&#xff1a; this[_keyParam] vue3核心代码&…

旅游特种兵迪士尼大作战:DeepSeek高精准路径优化

DeepSeek大模型高性能核心技术与多模态融合开发 - 商品搜索 - 京东 随着假期的脚步日渐临近&#xff0c;环球影城等备受瞩目的主题游乐场&#xff0c;已然成为大人与孩子们心中不可或缺的节日狂欢圣地。然而&#xff0c;随之而来的庞大客流&#xff0c;却总让无数游客在欢乐的…

【MySQL】第一弹——MySQL数据库结构与操作

目录 一. 数据库介绍1.1 什么是数据库1.2 为什么要使用数据库1.3 主流数据库1.3.1 关系型数据库1.3.2 非关系型数据库 二. MySQL 的结构2.1 MySQL服务器和客户端2.2 MySQL服务器是如何组织数据的 三. 数据库的操作3.1 创建数据库语法格式示例 3.2 查看数据库语法格式示例 3.3 使…

Spring_MVC 快速入门指南

Spring_MVC 快速入门指南 一、Spring_MVC 简介 1. 什么是 Spring_MVC&#xff1f; Spring_MVC 是 Spring 框架的一个模块&#xff0c;用于构建 Web 应用程序。它基于 MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;将应用程序分为模型&#xff08;M…

L38.【LeetCode题解】四数之和(双指针思想) 从汇编角度分析报错原因

目录 1.题目 2.分析 去重的代码 错误代码 3.完整代码 提交结果 1.题目 四数之和 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元…

字符串系列一>最长回文子串

目录 题目&#xff1a;解析&#xff1a;代码&#xff1a; 题目&#xff1a; 链接: link 解析&#xff1a; 代码&#xff1a; class Solution {public String longestPalindrome(String s) {char[] ss s.toCharArray();int n ss.length;int begin 0;//返回结果的起始字符串…

双击热备方案及不同方案的需求、方案对比

双击热备方案概述 一般实现双机热备的方案有三种,分别是共享存储双机热备方案、镜像双机热备方案、双机双柜双机热备方案,这三种方案对硬件要求不同,大家可以根据自身的业务应用特性来选择具体的双机热备方案以及对应的ServHA双机热备软件产品。 1、镜像双机热备 1.1镜像…

VSCODE插值表达式失效问题

GET https://cdn.jsdelivr.net/npm/vue2.6.14/dist/vue.js net::ERR_CONNECTION_-CSDN博客 更换正确的vue域名 GET https://cdn.jsdelivr.net/npm/vue2.6.14/dist/vue.js net::ERR_CONNECTION_ <script src"https://unpkg.com/vue2.6.14/dist/vue.js"></sc…

【失败】Gnome将默认终端设置为 Kitty

起因 一会儿gnome-terminal一会儿kitty终端&#xff0c;实在是受不了&#xff0c;决定取缔默认的gnome-terminal。 过程 在 Ubuntu 或 Debian 系统上&#xff1a; 确保 Kitty 已经安装。如果未安装&#xff0c;可以在终端中运行命令sudo apt install kitty -y进行安装。 使用系…

蓝桥杯:连连看

本题大意要我们在一个给定的nxm的矩形数组中找出符合条件的格子 条件如下&#xff1a; 1.数值相同 2.两个横坐标和纵坐标的差值相等&#xff08;由此可得是一个对角线上的格子&#xff09; 那么根据以上条件我们可以用HashMap来解决这个问题&#xff0c;统计对角线上数值相同…

Ext系列⽂件系统

Ext系列⽂件系统 1. 理解硬件1.1 磁盘的物理结构1.2 磁盘的存储结构1.3 磁盘的逻辑结构理解过程实际过程 1.4 CHS&&LBA地址 2. 引入文件系统块分区innode 3. Ext2文件系统3.1 宏观认识3.2 block group3.3 块组内部3.3.1 GDT&#xff08;Group Descriptor Table&#xf…

MTK-Android12 13 屏蔽掉Viewing full screen

去掉ROOM 开机第一次提示全屏弹框 文章目录 需求参考资料修改文件实现方案 解决思路grep 源码查找信息grep 查找 grep -rn "Viewing full screen" 找string 字段grep 查找 grep -rn immersive_cling_title 布局grep 查找 grep -rn layout.immersive_mode_cling 对应的…

GitHub创建远程仓库

使用GitHub创建远程仓库&#xff1a;从零开始实现代码托管与协作 前言 在当今软件开发领域&#xff0c;版本控制系统已成为开发者必备的核心工具。作为分布式版本控制系统的代表&#xff0c;Git凭借其强大的分支管理和高效的协作能力&#xff0c;已成为行业标准。而GitHub作为…

【AI部署】腾讯云GPU -—SadTalker的AI数字人访问web服务—未来之窗超算中心

访问部署在Cloud Studio上的web服务 当你把该项目部署在本地时&#xff0c;访问该服务的请求地址为http://localhost:8080/hello&#xff1b;当你把该项目部署在Cloud Studio工作台启动时&#xff0c;要想访问到该服务&#xff0c;需要先在工作台右侧打开访问链接面板&#xff…

fastdds:传输层SHM和DATA-SHARING的区别

下图是fastdds官方的图&#xff0c;清晰地展示了dds支持的传输层: 根据通信双方的相对位置(跨机器、同机器跨进程、同进程)的不同选择合适的传输层&#xff0c;是通信中间件必须要考虑的事情。 跨机器&#xff1a;udp、tcp 跨机器通信&#xff0c;只能通过网络&#xff0c; f…

树莓派_利用Ubuntu搭建gitlab

树莓派_利用Ubuntu搭建gitlab 一、给树莓派3A搭建基本系统 1、下载系统镜像 https://cdimage.ubuntu.com/ubuntu/releases/18.04/release/ 2、准备系统SD卡 二、给树莓派设备联网 1、串口后台登录 使用串口登录后台是最便捷的&#xff0c;因为前期网络可能不好直接成功 默…