逆向学习网络篇:数据传输和交换过程

本节课在线学习视频(网盘地址,保存后即可免费观看):

​​https://pan.quark.cn/s/3d8ae684d031​​

网络技术是现代信息社会的基础,它涉及数据传输、交换和存储等多个方面。本文将深入探讨网络中的数据传输和交换过程,并通过代码案例来展示如何实现这些过程。

1. 网络数据传输基础

网络的本质是数据传输,这包括进程间通信和数据存储。在网络中,数据通常以二进制形式存储和传输。为了确保接收方能够正确处理数据,发送方需要先传输一个长度字节,告知数据的大小。

2. 分组交换

网络中的数据是通过分组交换的方式进行传输的。每个分组中包含一部分数据,以及用于路由和错误检测的头部信息。分组交换允许网络中的多个设备共享通信资源,提高了网络的效率和灵活性。

3. IP地址和端口

IP地址是网络中设备的唯一标识,而端口则是用于标识设备上的应用程序。通过IP地址和端口,数据可以被正确地路由到目标设备和应用程序。

import socket# 创建一个socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 获取本地主机名
host = socket.gethostname()# 设置端口号
port = 9999# 连接服务,指定主机和端口
s.connect((host, port))
4. 公网地址和局域网地址

公网地址是全球唯一的IP地址,可以直接从互联网访问。局域网地址则是私有IP地址,只能在局域网内部使用。通常,局域网内的设备通过路由器或NAT设备共享一个或多个公网地址。

5. 网络协议和协议分析

网络协议是规定数据传输格式的规则。协议分析是通过分析数据中的特定字节来确定数据的具体含义和用途。这对于网络安全和故障排除非常重要。

import scapy.all as scapy# 创建一个ARP请求包
arp_request = scapy.ARP(pdst="192.168.1.0/24")# 创建一个广播包
broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")# 将ARP请求包附加到广播包上
arp_request_broadcast = broadcast/arp_request# 发送和接收数据包
answered_list = scapy.srp(arp_request_broadcast, timeout=1, verbose=False)[0]# 打印结果
for element in answered_list:print(element[1].psrc + "     " + element[1].hwsrc)
6. 网络编程与套接字编程

网络编程和套接字编程都使用TCP/IP协议进行通信。套接字编程提供了创建、绑定端口、客户端和服务器交互等功能,是实现网络通信的基础。

#include <WinSock2.h>
#include <iostream>int main() {WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {std::cerr << "Failed to initialize Winsock." << std::endl;return 1;}SOCKET serverSocket = socket(AF_INET, SOCK_STREAM, 0);if (serverSocket == INVALID_SOCKET) {std::cerr << "Failed to create socket." << std::endl;WSACleanup();return 1;}// 绑定端口和IP地址// ...// 监听连接// ...// 接受客户端连接// ...// 数据传输// ...closesocket(serverSocket);WSACleanup();return 0;
}
7. 服务器和客户端的数据传输

服务器和客户端之间的数据传输通常涉及​​sendto​​和​​recvfrom​​等函数。服务器接收数据后,会阻塞等待客户端发送数据,然后发送回客户端。客户端需要绑定端口号,并向服务器发送数据。

# 服务器端代码
import socketserver_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8000))
server_socket.listen(1)client_socket, addr = server_socket.accept()
print('Connection from:', addr)while True:data = client_socket.recv(1024)if not data:breakclient_socket.sendall(data)client_socket.close()# 客户端代码
import socketclient_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 8000))message = b'Hello, server!'
client_socket.sendall(message)data = client_socket.recv(1024)
print('Received:', data)client_socket.close()

通过上述代码案例,我们可以看到网络数据传输和交换的基本过程。理解这些概念和技术对于网络编程和网络安全至关重要。

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

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

相关文章

【机器学习】---无监督学习

引言 在机器学习的广阔领域中&#xff0c;无监督学习扮演着至关重要的角色。不同于有监督学习&#xff0c;无监督学习处理的是没有标签的数据集&#xff0c;即我们不知道每个数据点的正确答案或分类。然而&#xff0c;这并不意味着无监督学习无法为我们提供有价值的信息。相反…

DDOS攻击会造成哪些问题

DDOS攻击是我们日常生活中比较常见的一种网络攻击&#xff0c;DDOS攻击的全称为分布式拒绝服务攻击&#xff0c;游戏行业则是DDOS攻击的重灾区&#xff0c;本文主要来给大家讲解一下DDOS攻击会给业务造成哪些问题吧&#xff01; DDOS攻击是攻击者利用大量的恶意请求占用了目标服…

AI音乐:创新引擎还是创意终结者?

✨作者主页&#xff1a; Mr.Zwq✔️个人简介&#xff1a;一个正在努力学技术的Python领域创作者&#xff0c;擅长爬虫&#xff0c;逆向&#xff0c;全栈方向&#xff0c;专注基础和实战分享&#xff0c;欢迎咨询&#xff01; 您的点赞、关注、收藏、评论&#xff0c;是对我最大…

利用nodejs实现图片上传后端,并实现回显

![[Pasted image 20240617093358.png]] 首先准备好前端简单的页面结构 <h1>图片上传</h1> <img class"img" src"" /> <form action""><input id"input" type"file" /><button id"bt…

学生管理系统更新(账号系统)

展示 头文件 #pragma once #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h>//输入输出函数 #include<stdlib.h>//动态分配函数和随机函数 #include<windows.h>//控制台程序&#xff0c;用来实现cmd指令&#xff0c;title指令&#xff0c;cls指令等等 …

Ollama深度探索:AI大模型本地部署的全面教程

目录 引言一、Ollama概述1、定义与定位2、核心功能3、技术优势4、应用场景 二、安装与配置1、系统要求2、安装方法3、配置指南4、启动Ollama服务 四、快速开始1、启动Ollama2、部署运行模型3、REEST API 五、自定义模型1、定制化的必要性2、使用Modelfile定制模型3、参数调整4、…

IPSEC VPN

IPSEC VPN IPSEC是为IP网络提供安全性的协议和服务的集合,是一种协议簇&#xff0c;一个基于网络层&#xff0c;应用密码学的安全信息协议组。一开始TCP/IP 没有考虑到信息的安全传输。IPSEC协议簇诞生的意义就是保证TCP/IP的安全传输。 伪头部校验&#xff1a;TCP再校验的时…

升级到tomcat10和Java 21后,idea控制台system.out.println输出中文乱码问题

最近一次性从tomcat 9升级到tomcat 10&#xff0c;同时Java sdk也从1.8升级到21。 升级过程中&#xff0c;当然会遇到很多问题&#xff0c;但是控制台输出中文乱码问题&#xff0c;着实折腾了很久。 1、尝试各种方法 网上说的很多通用方法都试过了&#xff0c;就是不生效。包…

机器学习:Transformer框架理论详解和代码实现

机器学习&#xff1a;Transformer框架理论详解和代码实现 Transformer是一种基于自注意力机制的神经网络架构&#xff0c;被广泛应用于自然语言处理领域&#xff0c;特别是机器翻译任务。在本篇博文中&#xff0c;我们将首先介绍Transformer的理论知识&#xff0c;然后通过代码…

前端:Element UI 与 Vuetify 的选择

vuetify优势 1、多端适配&#xff0c;Vuetify完全按照Material设计规范进行开发&#xff0c;每一个组件都经过精心设计&#xff0c;具有模块化、响应式和优秀的性能。 使用独特和动态的 布局 自定义您的应用程序&#xff0c;并使用 SASS 变量 自定义您的组件的样式。只需要做下…

hive与dolphin笔记

文章目录 一、hive相关1. 如何增加列2. 如何查看表的具体列的数据类型3. 如何drop一个表4. 如何从某个时间点获取它30天前的日期 二、dolphin笔记1. 如何增加前置节点依赖 一、hive相关 1. 如何增加列 alter table your_table_name add columns (your_column_name varchar(25…

【CT】LeetCode手撕—236. 二叉树的最近公共祖先

目录 题目1- 思路2- 实现⭐236. 二叉树的最近公共祖先——题解思路 3- ACM实现 题目 原题连接&#xff1a;236. 二叉树的最近公共祖先 1- 思路 模式识别 模式1&#xff1a;二叉树最近公共祖先 ——> 递归 判断 递归思路&#xff0c;分情况判断&#xff1a; 1.参数及返…

高效BUG管理:定级、分类和处理流程

高效BUG管理&#xff1a;定级、状态跟踪与处理全流程 前言一、BUG的定义二、BUG的定级三、BUG的状态四、BUG的处理流程1. BUG报告2. BUG确认3. BUG修复4. BUG验证5. BUG关闭 五、常见问题与解决方案六、总结 前言 在测试工作中&#xff0c;BUG的定级和分类是一个重要环节&…

香港“试水”医疗多模态大模型

更好地引入及发掘行业数据有望为垂直领域内的多模态大模型开发提供新可能。中国香港特区传统科研优势要嫁接产业风口&#xff0c;国际化渠道如何与内地资源携手&#xff1f; 产业多模态大模型“风头”正盛&#xff0c;在积极寻找经济新动能的中国香港特区&#xff0c;相关产业…

SQL新手蜕变:掌握这20条常用SQL语句,让你也能成为高手!

序言 在现代软件开发中&#xff0c;SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;作为与数据库交互的标准编程语言&#xff0c;是每个开发者必学的基础技能。掌握SQL并在数据库管理与数据分析中应用自如&#xff0c;能显著提升开发效率和数…

如何修复“AI的原罪”

如何修复“AI的原罪” 上个月&#xff0c;《纽约时报》声称&#xff0c;科技巨头OpenAI和谷歌不顾服务条款和版权法的禁止&#xff0c;将大量YouTube视频转录成文本&#xff0c;并将其用作人工智能模型的额外训练数据&#xff0c;从而进入了版权灰色地带。《纽约时报》还援引Me…

HTML 事件

HTML 事件 HTML 事件是发生在 HTML 元素上的交互瞬间,它们可以由用户的行为(如点击、按键、鼠标移动等)或浏览器自身的行为(如页面加载完成、图片加载失败等)触发。在 HTML 和 JavaScript 的交互中,事件扮演着核心角色,允许开发者创建动态和响应式的网页。 常见的 HTM…

【LeetCode面试经典150题】106. 从中序和后序遍历构造二叉树

一、题目 106. 从中序与后序遍历序列构造二叉树 - 力扣&#xff08;LeetCode&#xff09;给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 二、思路…

掌握JavaScript ES6精髓:探索函数和对象的高级扩展与实用技巧

序言 JavaScript&#xff0c;作为前端开发中不可或缺的语言&#xff0c;已经发展到了ECMAScript 2015&#xff08;简称ES6&#xff09;以及后续的版本。ES6带来了诸多语法上的改进和创新&#xff0c;使得代码更加简洁、优雅&#xff0c;同时也提供了更多的编程模式和实用技巧。…

【ONE·基础算法 || 记忆化搜索】

总言 主要内容&#xff1a;编程题举例&#xff0c;熟悉理解记忆化搜索类题型&#xff08;对比递归、动态规划理解运用&#xff09;。             文章目录 总言1、记忆化搜索1.1、基本介绍1.2、细节理解&#xff08;记忆搜索化、递归、动态规划……&#xff09; 2、斐…