2023.9.7 关于 TCP / IP 的基本认知

目录

网络协议分层

TCP/IP 五层(四层)模型

应用层

传输层

网络层(互联网层)

数据链路层(网络接口层)

物理层

 网络数据传输的基本流程


网络协议分层

为什么需要分层?

  • 分层之后,类似于面向接口编程,定义好两层的接口规范,让双方遵循这个规范来对接,这样有利于更好的扩展和维护

TCP/IP 五层(四层)模型

  • TCP/IP 是一种网络通信协议族,是互联网的核心协议,也是全球广泛使用的网络通信标准,定义了数据如何在网络中分组、传输、路由和接收方式,其中 TCP 为传输控制协议,IP 为 Internet 协议!
  • TCP 负责数据的可靠传输,确保数据的完整性和有序性
  • IP 负责数据的分组和路由,将数据从源地址传递到目的地址


应用层

  • 应用层定义了应用程序之间的通信规则和数据格式
  • 我们的网络编程主要是针对应用层,经常涉及实现一个应用层协议
  • 该层包含了各种应用层协议

HTTP

  • 用于 Web 应用的写于,用于在客户端和服务器之间的通信协议,用于请求和传输网页、图片、视频和其他资源

HTTPS

  • 是 HTTP 的安全版本,通过 SSL 或 TLS 加密协议,提供了安全的数据传输,其在进行敏感数据传输时常被使用,例如网上银行和电子商务网站

DNS

  • 用于域名解析协议,他将人类可读的域名转换为计算机可识别的 IP 地址,使得用户能够通过域名访问互联网上的资源

FTP

  • 用于文件传输协议,允许在客户端和服务器之间进行文件上传、下载和管理,其提供了一种标准的方法来访问远程文件系统

SSH

  • 用于安全远程登录和文件传输的协议,其提供了加密和身份验证机制,用于安全地远程管理网络设备和传输文件

SMTP

  • 用于电子邮件传输的协议,它定义了电子邮件的发送方式、邮件服务器之间的通信规则和数据格式,使得电子邮件能够在不同邮件服务器之间进行传输和投递

POP3

  • 用于接收电子邮件的协议,它允许邮件客户都安从邮件服务器上下载电子邮件,并在客户都安上存储和管理邮件

IMAP

  • 用于接收和管理电子邮件的协议,IMAP允许客户端在邮件服务器上直接操作邮件,包括查看、删除、移动和标记邮件等操作

传输层

  • 负责两台主机之间的数据传输
  • 包括传输控制协议 TCP 和 用户数据报协议 UDP

TCP

  • 提供可考的、面向连接的数据传输,确保数据的可靠性和有序性

UDP

  • 提供不可靠的、无连接的数据传输,适用于实时性要求较高的应用

网络层(互联网层

  • 负责地址管理和路由选择
  • 包括 Internet 协议 (IP) 

IP

  • IP 协议定义了数据报文的结构和寻址规则,使得数据能够在不同网络之间进行传递

数据链路层(网络接口层

  • 负责处理与物理网络介质的通信,设备之间的数据帧的传送和识别
  • 如以太网、Wi-Fi 等

物理层

  • 负责在物理媒介上传输原始的比特流,将数据从发送方传输到接收方

注意:

因为物理层我们考虑的相对较少,所以通常也称 TCP/IP 为四层模型

 网络数据传输的基本流程

实例假设:

  • 用户 A 通过微信给用户 B 发送一条消息 "你吃了嘛?" 

第一步:进行封装(用户A)

1.应用层形成协议报文

  • 假设微信内部约定好一个应用协议,这个一般由程序员所定义,我们不知道,所以假设为下面这样
  • 把用户输入的字符串构造成约定好的应用层数据报文

  • 随后数据报文便会通过 调用操作系统内核所提供的一些 API  来传递给传输层,因为传输层正是操作系统内核所实现的

2.传输层添加 UDP 报头

  • 在传输层,需要把应用层数据报文构造成传输层数据报文
  • 此处是使用 UDP 报头,从而仅需在 应用层数据报文 的基础上加个 UDP 报头 即可

  • UDP 报头也是一个特定格式的字符串,涉及到源端口和目的端口,将其与数据拼到一起,进而传输给网络层

3. 网络层添加 IP 报头

  • 在网络层,需要把传输层数据报文构造成网络层数据报文
  • 仅需在 传输层数据报文 的基础上加个 IP 报头 

  • IP 报头也是一个特定格式的字符串,涉及到 源 IP 和 目的 IP,将其与传来的数据拼到一起,进而传输给数据链路层

4.数据链路层添加帧头和帧尾

  • 数据链路层中最典型的是 以太网
  • 基于上述数据我们还需再将其打包一个 以太网数据帧
  • 帧头包含了 目的MAC地址,用于指示数据帧的接收方
  • 帧头包含了 源MAC地址,用于指示数据帧的发送方
  • 帧尾包含帧校验序列 FCS 组成,用于检查数据帧是否在传输过程中出现错误的校验值

  • 数据链路层继续将该数据传输给物理层

5.物理层进行解析传输

  • 物理层将上述二进制数据转换成电信号或光信号,完成真正的传输

第二步:进行分用操作(用户B)


总结:

  • 通信双方需使用相同的协议才能进行通信
  • 这五层协议之间有明确的层级关系,只有相邻的两层之间才能进行交互,不能跨层交互
  • 上层协议要调用下层协议进行封装操作,下层协议要给上层协议提供支持要进行解析操作

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

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

相关文章

MATLAB实现数据插值

目录 一.理论知识 二.一维插值实例 三.二维插值实例 一.理论知识 所谓插值,顾名思义,插入数值。很多时候,我们仅有离散点上的数据,这时如果我们想要分析变量之间的函数关系,则无法实现。但如果通过插值处理&#xf…

PCL入门(四):kdtree简单介绍和使用

目录 1. kd树的意义2. kd树的使用 参考博客《欧式聚类(KD-Tree)详解,保姆级教程》和《(三分钟)学会kd-tree 激光SLAM点云搜索常见》 1. kd树的意义 kd树是什么? kd树是一种空间划分的数据结构,对于多个维度的数据&a…

电商(淘宝1688京东拼多多等)API接口服务:提升商业效率和用户体验的关键

电商API接口服务:提升商业效率和用户体验的关键 随着电子商务的飞速发展,电商企业需要不断提升自身的业务能力和服务质量,以应对日益激烈的市场竞争。为了更好地满足商家和消费者的需求,电商API接口服务应运而生。本文将探讨电商…

计算机毕设 大数据商城人流数据分析与可视化 - python 大数据分析

文章目录 0 前言课题背景分析方法与过程初步分析:总体流程:1.数据探索分析2.数据预处理3.构建模型 总结 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到…

jmeter调试错误大全

一、前言 在使用jmeter做接口测试的过程中大家是不是经常会遇到很多问题,但是无从下手,不知道从哪里开始找起,对于初学者而言这是一个非常头痛的事情。这里结合笔者的经验,总结出以下方法。 二、通过查看运行日志调试问题 写好…

【常用代码14】el-input输入框内判断正则,只能输入数字,过滤汉字+字母。

问题描述&#xff1a; el-input输入框&#xff0c;只能输入数字&#xff0c;但是不能显示输入框最右边的上下箭头&#xff0c; <el-input v-model"input" type"number" placeholder"请输入内容" style"width: 200px;margin: 50px 0;&…

两种解法解决LCR 008. 长度最小的子数组【C++】

文章目录 [LCR 008. 长度最小的子数组](https://leetcode.cn/problems/2VG8Kg/description/)解法暴力解法滑动窗口&#xff08;双指针法&#xff09; LCR 008. 长度最小的子数组 解法 暴力解法 //暴力解法&#xff1a; //使用双for循环依次遍历数组&#xff0c;罗列出所有情况…

华为云 异构数据迁移

数据库和应用迁移 UGO&#xff08;Database and Application Migration UGO&#xff0c;以下简称为UGO&#xff09;是专注于异构数据库结构迁移的专业服务。可将源数据库中的DDL、DML和DCL一键自动转换为华为云GaussDB/RDS的SQL语法&#xff0c;通过数据库评估、对象迁移两大核…

计算机竞赛 基于深度学习的植物识别算法 - cnn opencv python

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 MobileNetV2网络4 损失函数softmax 交叉熵4.1 softmax函数4.2 交叉熵损失函数 5 优化器SGD6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习的植物识别算法 ** …

Vue3,Typescript中引用组件路径无法找到模块报错

是这么个事&#xff0c;我在vue3新创建的项目里&#xff0c;写了个组件叫headerIndex.vue&#xff0c;放到app.vue中import就会报错 路径肯定没写错&#xff0c;找到了解决方法&#xff0c;但是也没想明白为什么 解决方法如下 在vite-env.d.ts文件中加入 declare module &qu…

AJAX学习笔记6 JQuery对AJAX进行封装

AJAX学习笔记5同步与异步理解_biubiubiu0706的博客-CSDN博客 AJAX请求相关的代码都是类似的&#xff0c;有很多重复的代码&#xff0c;这些重复的代码能不能不写&#xff0c;能不能封装一个工具类。要发送ajax请求的话&#xff0c;就直接调用这个工具类中的相关函数即可。 用J…

springboot web 增加不存在的url返回200状态码 vue 打包设置

spring boot项目增加 html web页面访问 1. 首先 application.properties 文件中增加配置&#xff0c;指定静态资源目录&#xff08;包括html的存放&#xff09; spring.resources.static-locationsclasspath:/webapp/,classpath:/webapp/static/ 2. 项目目录 3. 如果有实现 …

Arm 架构 Ubuntu 使用 Docker 安装 Gitlab 并使用

官方 gitlab 文档 我的系统是 arm 架构的 ubuntu 官网没有提供 arm 架构的 docker 的 gitlab 的安装方式&#xff0c;直接安装的也是后来加的&#xff0c;文档也是随笔带过&#xff0c;&#xff0c;&#xff0c;我用到了&#xff0c;记录一下 默认已经安装了 docker 在 docker …

爬虫逆向实战(31)-某花顺行情中心(cookie、补环境)

一、数据接口分析 主页地址&#xff1a;某花顺 1、抓包 通过抓包可以发现数据接口是/page/2/ajax/1/ 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无请求头是否加密&#xff1f; 通过查看“标头”可以发现有一个Hexin-V加密参数&#xff0c;但是这个参数的值与c…

初学Python记

Python这个编程语言的大名当然听说过了呀&#xff0c;这几年特别火&#xff0c;火的一塌涂地。大家可以回忆一下&#xff1a;朋友圈推荐的广告里经常可以看见python的网课广告。 本学期&#xff0c;学校开设了python课程&#xff0c;这几天学习了一下入了一下门&#xff0c;感…

SpringMVC笔记

文章目录 一、SpringMVC简介1、什么是MVC2、什么是SpringMVC3、SpringMVC的特点 二、HelloWorld1、开发环境2、创建maven工程a>添加web模块b>打包方式&#xff1a;warc>引入依赖 3、配置web.xmla>默认配置方式b>扩展配置方式 4、创建请求控制器5、创建springMVC…

selenium的Chrome116版驱动下载

这里写自定义目录标题 下载地址https://googlechromelabs.github.io/chrome-for-testing/#stable 选择chromedriver 对应的平台和版本 国内下载地址 https://download.csdn.net/download/dongtest/88314387

探索Apache Hive:融合专业性、趣味性和吸引力的数据库操作奇幻之旅

文章目录 版权声明一 数据库操作二 Hive数据表操作2.1 表操作语法和数据类型2.2 Hive表分类2.3 内部表Vs外部表2.4 内部表操作2.4.1 创建内部表2.4.2 其他创建内部表的形式2.4.3 数据分隔符2.4.4 自定义分隔符2.4.5 删除内部表 2.5 外部表操作2.5.1 创建外部表2.5.2 操作演示2.…

MNIST手写数字辨识-cnn网路 (机器学习中的hello world,加油)

用PyTorch实现MNIST手写数字识别(非常详细) - 知乎 (zhihu.com) 参考来源&#xff08;这篇文章非常适合入门来看&#xff0c;每个细节都讲解得很到位&#xff09; 一、模块函数用法-查漏补缺&#xff1a; 1.关于torch.nn.functional.max_pool2d()的用法&#xff1a; 上述示例…

工作和生活中,如何用项目管理思维解决复杂的事情?

在工作和生活中&#xff0c;许多事情都可以采用项目思维方式来解决。当我们逐渐将工作和生活中的各种事务以项目的方式来处理和推进时&#xff0c;我们可能并没有意识到&#xff0c;实际上我们正在运用项目管理思维。 项目管理思维能帮助我们在面对繁杂事务时&#xff0c;理清…