当前位置: 首页 > news >正文

密码学学习笔记(二十四):TCP/IP协议栈

TCP/IP协议栈的基础结构包括应用层、传输层、网络层、数据链路层和物理层。

应用层 

应用层位于TCP/IP协议栈的最顶层,是用户与网络通信的接口。这一层包括了各种高级应用协议,如HTTP(用于网页浏览)、FTP(用于文件传输)、SMTP(用于电子邮件)和DNS(用于域名解析)。应用层协议规定了应用软件如何通过网络进行通信,处理特定类型的网络活动,并为用户提供直观的操作界面。

传输层 

传输层负责在网络中不同主机间的数据传输。这一层主要使用两种协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供可靠的、有序的数据传输,通过三次握手建立连接,确保数据完整性。UDP则提供更快但不保证数据完整性的连接,适用于对速度要求高但可以容忍一定丢包的应用,如视频流和在线游戏。

网络层

网络层处理数据包在网络中的路由和转发。最重要的协议是IP(互联网协议),它为每个网络设备分配一个独特的地址(IP地址),确保数据包能够找到正确的目的地。网络层决定数据包的最佳路径,通过路由器进行数据包转发,并处理不同网络之间的互连问题。

数据链路层

数据链路层负责在相邻网络节点间的数据传输。这一层将数据封装成帧,然后进行物理传输。它同时也负责错误检测和纠正,确保数据在局部网络中的准确传输。此层中的以太网(Ethernet)是最常见的技术标准,用于有线网络中。

物理层

物理层是协议栈中最基础的部分,负责在物理媒介上进行原始数据的传输。这包括了电缆、光纤、无线电波等传输媒介的使用,以及数据的编码和信号调制。物理层确保数据可以在不同的物理设备间传输,无论是通过电缆还是无线方式。

示例

在Web浏览会话中,应用层主要使用HTTP协议。当用户在浏览器中输入一个网址或点击一个链接时,浏览器会通过HTTP协议向服务器发送请求。HTTP协议规定了这些请求和响应的格式。

传输层 - TCP:HTTP请求通过传输层的TCP协议传输。TCP提供可靠的数据传输服务,确保数据包的正确顺序和完整性。在TCP层,数据被分割成小的段,并在到达目的地后重新组合。

网络层 - IPv4:网络层使用IP协议(这个例子中是IPv4)来处理数据包的寻址和路由。每个数据包都包含源IP地址和目的IP地址,这些地址确保数据包能够正确地路由到目的地。

数据链路层 - Ethernet:在数据链路层,数据包被进一步封装为帧,用以在局部网络中的物理设备之间传输。以太网是最常见的数据链路层技术。

物理层 - 物理信号:最后,在物理层,数据以电子或光信号的形式通过物理媒介(如铜线、光纤或无线电波)进行传输。

TCP 和 UDP 使用端口允许主机之间的多个主机之间的同时连接

  • 公共IP地址作为唯一标识符:公共IP地址是分配给网络中每个设备的独特标识符。在互联网上,每个设备的IP地址必须是唯一的,以确保数据可以准确地发送到正确的目的地。
  • TCP和UDP的端口使用:TCP(传输控制协议)和UDP(用户数据报协议)都使用端口号来管理多个连接。端口号允许一个IP地址上的不同应用或服务进行区分。例如,HTTP通常使用端口80,HTTPS使用端口443。这样即使多个服务在同一IP地址上运行,也能够被正确地区分和访问

NAT 在多台主机之间共享同一个 IP 地址多个主机共享同一 IP 地址,以应对 IPv4 短缺问题

  • 网络地址转换(NAT):NAT是一种在IPv4地址不足的情况下广泛使用的技术。它允许多个设备共享同一个公共IP地址,通过在私有网络和公共网络之间转换IP地址来实现。这样,内部网络中的多个设备可以使用私有IP地址,而对外表现为单一的公共IP地址。
  • IP数据包的基本结构:IP数据包包括一个头部和数据部分。头部包含了重要的控制信息,如源IP地址、目的IP地址、版本号、长度等。这些信息对于正确路由和传输数据包至关重要。

IP数据包在网段上的传递不涉及路由器

为了到达同一网络(链路)中的计算机,IP 数据包被封装在数据链路帧中,最常见(在有线帧中)是以太网

以太网实现基本链路功能,例如冲突避免和 CRC

网卡仅将那些发往该主机的帧传递给操作系统(即以其 MAC 地址作为目的地)

IP漏洞和路由

互联网最初的设计没有将安全作为首要考虑因素,导致了许多潜在的安全漏洞。随着网络攻击的增加,改进网络安全成为了一个重要的挑战。 

路由算法决定了数据包在网络中的传输路径。BGP(边界网关协议)是互联网上使用的主要路由协议。然而,BGP自身存在安全问题,如路由劫持,这可能导致数据流量被错误地或恶意地重定向。

IPSec 和 IPv6

IPSec 为 IP 添加身份验证和加密

IPSec 可以验证和加密每个 IP 数据包。IPSec是一个在网络层提供认证和加密的协议框架,以增强数据传输的安全性。它包括两种模式:传输模式和隧道模式。传输模式只加密IP数据包的数据部分,而隧道模式则加密整个IP数据包。

  • 安全关联 (SA):在通信开始之前定义(端点之间)——指定用于身份验证和加密的算法,并通过 IPSec 密钥交换 (IKE) 交换密钥
  • 身份验证标头 (AH):IP 扩展,提供数据报的身份验证和完整性,加上时间戳以防止重放攻击
  • 封装安全有效负载 (ESP):对 IP 的扩展,提供身份验证、完整性和机密性(加密)

IPv6应对了IPv4地址耗尽的问题,提供了几乎无限的地址空间。它还引入了一些其他改进,如自动地址配置、更简单的头部格式和改进的安全性(例如内置IPSec支持)。

IPSec有两种模式:传输(主机到主机)和隧道(VPN)

在传输模式下,IPSec 被“添加”到原始数据包中。

AH 可以为 IP 标头和有效负载提供完整性(通过散列)和身份验证问题:IP 选项是可变的,并且可以在传输过程中更改因此被排除在外 。

在隧道模式下,原始数据包封装在 IPSec 中,例如 用于虚拟专用网络 (VPN)

网关将 IP 数据包封装到附加的 IP 标头中,一旦数据包到达另一个网关,该标头就会被删除。网络中的主机看到彼此就好像它们在同一网络中一样。IPv6的引入大大增加了可用的IP地址数量,并带来了其他改进,例如自动配置和简化的路由器处理。

相关文章:

密码学学习笔记(二十四):TCP/IP协议栈

TCP/IP协议栈的基础结构包括应用层、传输层、网络层、数据链路层和物理层。 应用层 应用层位于TCP/IP协议栈的最顶层,是用户与网络通信的接口。这一层包括了各种高级应用协议,如HTTP(用于网页浏览)、FTP(用于文件传输…...

软件测试阶段简介_单元测试、集成测试、配置项测试、系统测试

文章目录 前言一、软件测试“V”模型二、单元测试三、集成测试四、配置项测试五、系统测试总结 前言 一般来说,按照软件的研制阶段划分,软件测试可分为单元测试、集成测试、配置项测试、系统测试等。本文将对上述各测试阶段进行逐一介绍。 一、软件测试…...

AcWing 1204.错误票据(读取未知个数数据的新方法)

[题目概述] 某涉密单位下发了某种票据,并要在年终全部收回。每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。 因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另…...

项目上线存在的缓存问题以及存在的debugger和console.log等问题

下载uglifyjs-webpack-plugin插件 在vue.config文件中进行配置 publicPath: process.env.NODE_ENV production ? ./ : /,outputDir: n-sim-ipc-manage-build,productionSourceMap: false,configureWebpack: config > {//打包文件增加hashconfig.output.filename js/[nam…...

均线和布林线这样的关系,WeTrade众汇实例这样使用

在后台经常有交易者咨询:“我可以用加权平均线或指数代替移动平均线吗?”理论上,任何平均值都适合绘制BB。在回答这个问题之前,为了稳妥起见,WeTrade众汇通过对各种均线对比分析,却得出这样结论:经典均线是构建参考点最简单、最准…...

C++中的区块链与加密货币开发

区块链和加密货币是当前科技领域中备受关注的热门话题。C作为一种高效的编程语言,被广泛应用于区块链和加密货币的开发。在本篇文章中,我将介绍C在区块链和加密货币开发中的重要性以及其应用方面。 区块链开发框架:C提供了多种区块链开发框架…...

【云略】2023年新茶饮行业社媒营销洞察报告

(因篇幅有限,推文仅展示部分内容) 2023新茶饮行业卷的比往年更厉害。 在整体市场环境快速增长的情况下,新茶饮品牌纷纷开始拼产品、抢联名、赶上市,搞下沉,整个行业进入到一个新的博弈阶段。 2023年蜜雪冰城…...

19. C++ static关键字

1. static关键字 不考虑类的情况 隐藏-所有不加static的全局变量和函数具有全局可见性,可以在其他文件中使用,加了之后只能在该文件所在的编译模块中使用,即内部连接默认初始化为0,包括未初始化的全局静态变量与局部静态变量&am…...

thinkphp6 模糊查找json下的字段值

写法: where(json的字段->json下的字段) sql生成json_extract(json的字段,$.json下的字段1.json下的字段2) 可以加上like where(‘‘json的字段->json下的字段, ‘like’, ‘%’. keyword .’%’) sql生成json_extract(json的字段,$.js…...

链表存数相加算法(leetcode第2题)

题目描述: 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这…...

旅游项目day07

目的地攻略展示 根据目的地和主题查询攻略 攻略条件查询 攻略排行分析 推荐排行榜:点赞数收藏数 取前十名 热门排行榜:评论数浏览数 取前十名 浏览数跟评论数差距过大,可设置不同权重,例如:将浏览数权重设置为0.3…...

java黑马学习笔记

数组 变量存在栈中&#xff0c;变量值存放在堆中。 数组反转 public class test{public static void main(String[] args){//目标&#xff1a;完成数组反转int[] arr {10,20,30,40,50};for (int i 0,j arr.length - 1;i < j;i,j--){int tep arr[j]; //后一个值赋给临时…...

WordPress后台底部版权信息“感谢使用 WordPress 进行创作”和版本号怎么修改或删除?

不知道各位WordPress站长在后台操作时&#xff0c;是否有注意到每一个页面底部左侧都有一个“感谢使用 WordPress 进行创作。”&#xff0c;其中WordPress还是带有nofollow标签的链接&#xff1b;而页面底部右侧都有一个WordPress版本号&#xff0c;如下图中的“6.4.2 版本”。…...

解决字符串类型转数字类型相加结果异常问题

js字符串类型转换数字类型有七种方法&#xff0c;分别是parseInt()&#xff0c;parseFloat()&#xff0c;Math.floor()&#xff0c;乘以数字&#xff08;*1&#xff09;&#xff0c;Number()&#xff0c;双波浪号 (~~number)&#xff0c;一元运算符&#xff08;number&#xff…...

android 开发 W/TextToSpeech: speak failed: not bound to TTS engine

问题 笔者使用TTS(TextToSpeech)对于文本内容进行语音播报&#xff0c;控制台报错 android 开发 speak failed:not bound to TTS engine详细问题 笔者核心代码&#xff1a; import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.speech.tts.…...

Java代码审计Shiro反序列化DNS利用链CC利用链AES动态调试

目录 0x00 前言 0x01 Java原生反序列化介绍 0x02 安全问题1&#xff1a;重写toString方法&#xff08;打印对象时触发&#xff09; 0x03 安全问题2&#xff1a;重写readObject&#xff08;反序列化时触发&#xff09; 0x04 测试URLDNS链 0x05 Shiro550生成RememberMe Coo…...

【MySQL】临时变量用法

力扣题 1、题目地址 2388. 将表中的空值更改为前一个值 2、模拟表 表&#xff1a;CoffeeShop Column NameTypeidintdrinkvarchar id 是该表的主键&#xff08;具有唯一值的列&#xff09;。该表中的每一行都显示了订单 id 和所点饮料的名称。一些饮料行为 null。 3、要求…...

Flask框架小程序后端分离开发学习笔记《4》向服务器端发送模拟请求-爬虫

Flask框架小程序后端分离开发学习笔记《4》向服务器端发送模拟请求-爬虫 Flask是使用python的后端&#xff0c;由于小程序需要后端开发&#xff0c;遂学习一下后端开发。 下面代码&#xff0c;是一个比较老的版本了&#xff0c;可以借鉴一下。 import socket import ssldef p…...

Android在系统界面上添加窗口

WindowManager.addView()是Android中的一个方法&#xff0c;用于在屏幕上添加一个窗口。它允许你在应用程序的上下文之外创建一个窗口&#xff0c;并将其显示在其他应用程序或系统界面上。 新建一个自定义View用于显示 class MyView JvmOverloads constructor(context: Contex…...

【正点原子STM32】STM32原理图设计(芯片手册和数据手册、常见引脚类型、最小系统和IO分配)

一、学会查看数据手册 获取芯片数据手册数据手册内容概要芯片的基本参数&#xff08;STM32F103ZET6为例&#xff09;正点原子开发板对应的主控型号和封装STM32F103ZET6引脚分布常见的STM32引脚类型下载接口 二、最小系统 电源电路复位电路BOOT启动电路晶振电路下载调试电路串…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...