Go语言---网络编程基础知识

news2024/9/22 4:07:58

网络协议

从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。
假设,A、B 双方欲传输文件。规定:

  • 第一次,传输文件名,接收方接收到文件名,应答OK 给传输方;
  • 第二次,发送文件的尺寸,接收方接收到该数据再次应答一个 OK;
  • 第三次,传输文件内容。同样,接收方接收数据完成后应答 OK 表示文件内容接收成功。
    由此,无论 A、B之间传递何种文件,都是通过三次数据传输来完成。A、B之间形成了一个最简单的数据传输规则。双方都按此规则发送、接收数据。A、B 之间达成的这个相互遵守的规则即为协议。
    这种仅在 A、B 之间被遵守的协议称之为原始协议。
    当此协议被更多的人采用,不断的增加、改进、维护、完善。最终形成一个稳定的、完整的文件传输协议,被广泛应用于各种文件传输过程中。该协议就成为一个标准协议。最早的ftp 协议就是由此衍生而来。

网络分层架构

为了减少协议设计的复杂性,大多数网络模型均采用分层的方式来组织。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。每一层利用下一层提供的服务来为上一层提供服务,本层服务的实现细节对上层屏蔽。
在这里插入图片描述

层和协议

网络的每一层,都定义了很多协议。这些协议的总称,叫“TCP/IP协议”。TCP/IP 协议是一个大家族,不仅仅只有 TCP 和IP协议,它还包括其它的协议,如下图:
在这里插入图片描述

  • ARP:是正向地址解析协议(Address Resolution Protocol),通过已知的 IP,寻找对应主机的 MAC 地址。
  • RARP:是反向地址转换协议,通过MAC 地址确定IP地址。
  • IP:是因特网互联协议(Interet Protocol)
  • ICMP:是 Intemet 控制报文协议(Intermet Control Message Protocol)它是 TCP/IP 协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。ping 127.0.0.1就在这一层。
  • IGMP:是 Internet 组管理协议(Intermet Group Management Protocol),是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。
  • TCP:传输控制协议(Transmission ControlProtocol),是一种面向连接的、可靠的、基于字节流的传输层通信协议。
  • UDP:用户数据报协议(User Datagram Protocol),是 OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
  • HTTP:超文本传输协议(Hyper Text Transfer Protocol),是互联网上应用最为广泛的一种网络协议。
  • FTP:文件传输协议(File Transfer Protocol)

每层协议的功能

在这里插入图片描述

链路层

以太网规定,连入网络的所有设备,都必须具有“网卡”接口。数据包必须是从一块网卡,传送到另一块网卡。通过网卡能够使不同的计算机之间连接,从而完成数据通信等功能。网卡的地址–MAC 地址,就是数据包的物理发送地址和物理接收地址。注意:MAC是物理地址

网络层

网络层的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做“网络地址”,这是我们平时所说的IP地址。这个IP地址好比我们的手机号码,通过手机号码可以得到用户所在的归属地。
网络地址帮助我们确定计算机所在的子网络,MAC 地址则将数据包送到该子网络中的目标网卡。网络层协议包含的主要信息是源IP和目的IP。
于是,“网络层”出现以后,每台计算机有了两种地址,一种是 MAC 地址,另一种是网络地址。两种地址之问没有任何联系,MAC 地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。
网络地址帮助我们确定计算机所在的子网络,MAC 地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理 MAC 地址。注意:IP地址是逻辑地址

传输层

当我们一边聊 QQ,一边聊微信,当一个数据包从互联网上发来的时候,我们可以使用“端口”(port),来获取是什么软件发送来的信息,它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。
端口特点:

  • 对于同一个端口,在不同系统中对应着不同的进程
  • 对于同一个系统,一个端口只能被一个进程拥有

应用层

应用程序收到“传输层”的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。“应用层”的作用,就是规定应用程序的数据格式。

网络通讯条件

  • 网卡–MAC地址,物理地址,是固定好的,不需要用户处理,ARP协议可以通过IP找到MAC
  • IP地址–逻辑地址,需要用户指定–为了确定哪一个电脑接收
  • 端口–为了确定那个程序接收

发送端组包—接收端拆包

在这里插入图片描述

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

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

相关文章

美食菜谱点评小程序

美食菜谱点评小程序 功能介绍 用户注册登录:注册账号,然后使用注册的账号登录。 资讯功能:用户可以任意浏览资讯列表和详细信息。 美食菜谱库:点击所有菜谱菜单,支持查看所有的菜谱信息。 菜谱查询:在菜谱…

网络基础知识--网络硬件设备介绍(含eNSP模拟器命令使用)

华为 eNSP 模拟器安装教程可参考:华为 eNSP 模拟器安装教程(内含下载地址)_ensp下载-CSDN博客 华为eNSP(Enterprise Network Simulation Platform)模拟器是一款由华为提供的免费网络仿真平台,主要用于模拟和…

MES实时监控食品加工过程中各环节的安全

在实时监控食品加工过程中各环节的安全风险方面,万界星空科技的MES(制造执行系统)解决方案发挥了至关重要的作用。以下是具体如何通过MES系统实现实时监控食品加工过程中各环节安全风险的详细阐述: 一、集成传感器与实时监控 MES…

JDK 和 JRE:它们之间的区别是什么?

JDK 和 JRE:它们之间的区别是什么? 1、JRE(Java Runtime Environment)1.1 JRE的主要组成部分1.2 JRE的用途 2、JDK(Java Development Kit)2.1 JDK的主要组成部分2.2 JDK的用途 3、总结 💖The Be…

景联文科技以高质量多模态数据集赋能AI大模型,精准匹配提升模型性能

在人工智能的浪潮中,语料数据如同建筑的基石,其质量、规模和运用策略直接决定了AI模型的表现和应用的广泛性。 景联文科技在AI领域深耕多年,打磨了高质量多模态数据集,致力于为不同训练阶段的算法精准匹配高质量数据资源。 3000万…

AI 助力,歌词创作不再是难题

在音乐的世界里,歌词创作一直被视为一项充满挑战和灵感的艺术工作。然而,随着科技的飞速发展,AI 技术的出现正在悄然改变这一局面,让曾经困扰众多创作者的难题迎刃而解。 “妙笔生词智能写歌词软件(veve522&#xff0…

C语言中字符串(字符数组)中含有 0x00 (‘\0‘)引发的问题和解决办法

问题 在C语言中,字符串是以空字符(null character,即\0或0x00)结尾的字符数组。这种设计意味着字符串中的任何 0x00 字符都会被解释为字符串的结束。因此,如果字符串内部包含0x00字符,这实际上会将字符串分…

03、Kerberos安全认证之配置和访问Kerberos安全认证的Hadoop集群学习笔记

文章目录 前言一、Hadoop集群 Kerberos安全配置详细步骤1.1、安装libcrypto.so库1.2、创建HDFS服务用户1.3、配置各服务用户两两节点免密1.4、修改本地目录权限1.5、创建各服务Princial主体1.6、修改Hadoop配置文件1.6.1、配置core-site.xml1.6.2、配置hdfs-site.xml1.6.3、配置…

怎样在 PostgreSQL 中优化对时间序列数据的存储和查询策略?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 《PostgreSQL 中时间序列数据的优化存储与查询策略》 《PostgreSQL 中时间序列数据的优化存储与查询策…

同步低通滤波结合全变分的一维时间序列降噪方法(MATLAB)

关于全变分模型,可以参考: 如何理解全变分(Total Variation,TV)模型?- imxtx的回答 - 知乎 https://www.zhihu.com/question/47162419/answer/2585330101 全变分去噪的基本思想是,如果图像的…

gin源码分析

一、高性能 使用sync.pool解决频繁创建的context对象,在百万并发的场景下能大大提供访问性能和减少GC // ServeHTTP conforms to the http.Handler interface. // 每次的http请求都会从sync.pool中获取context,用完之后归还到pool中 func (engine *Engin…

前端Canvas入门——Canvas的一些注意事项

如果我们使用标签的方式去创建Canvas,可以发现: 在我们创建画笔的时候,是不会有任何提示的。 这意味着,你需要记住所有API代码——这就很烦人。 那么,又没有一种优雅的、不失格调的方法? 那就是使用JS去创…

内网对抗-代理通讯篇不出网或不可达SockS全协议规则配置C2正反向上线解决方案

知识点 1、代理隧道篇-代理通讯网络不可达-正反向连接上线 2、代理隧道篇-代理通讯网络不可达-SockS代理配置 实现步骤 1、在被控机器上获取下一级网段 2、在被控及其上建立SockS节点 3、在工具上配置连接属性和规则触发演示案例-代理技术-正反向监听/SockS配置-网络不可达…

LabVIEW航空发动机试验器数据监测分析

1. 概述 为了适应航空发动机试验器的智能化发展,本文基于图形化编程工具LabVIEW为平台,结合航空发动机试验器原有的软硬件设备,设计开发了一套数据监测分析功能模块。主要阐述了数据监测分析功能设计中的设计思路和主要功能,以及…

Ubuntu使用Nginx部署uniapp打包的项目

使用uniapp导出web项目: 安装: sudo apt install nginx解压web.zip unzip web.zip移动到/var/www/html目录下: sudo cp -r ~/web/h5/ /var/www/html/重启Nginx: sudo service nginx restart浏览器访问:http://19…

Docker安装RabbitMQ(带web管理端)

1.拉取带web管理的镜像 可以拉取rabbitmq对应版本的web管理端,比如:rabbitmq:3.9.11-management,也可以直接拉取带web管理端的最新版本 rabbitmq:management. docker pull rabbitmq:3.9.11-management 注意:如果docker pull ra…

图像处理:使用 OpenCV-Python 卡通化你的图像(2)

一、说明 在图像处理领域,将图像卡通化是一种新趋势。人们使用不同的应用程序将他们的图像转换为卡通图像。如今,玩弄图像是许多人的爱好。人们通常会点击图片并添加滤镜或使用不同的东西自定义图像并将其发布到社交媒体上。但我们是程序员,…

基于重叠群稀疏的总变分信号降噪及在旋转机械故障诊断中的应用(MATLAB)

基于振动分析的故障诊断方法基本流程主要由以下五个步骤组成,分别是信号采集、信号处理、特征提取、状态识别与诊断结果。这五个步骤中信号采集与特征提取是故障诊断中最为重要的步骤,而故障微弱特征信息又是其中最难解决的问题。“故障微弱特征信息”站…

【Pro Controller连接PC】

软件下载连接 教学视频 安装64位驱动 按键修改

麦克风设计指南

前言: 本指南基于乐鑫的 ESP32-S3 系列语音开发板。 整机 mic 要求 麦克风电器性能推荐 麦克类型:全向型 MEMS 麦克风 SMD-4P,2.8x1.9mm MEMS 麦克风 顶视图 MEMS 麦克风 底视图 灵敏度 1 Pa 声压下模拟麦灵敏度不低于 -38 dBV,数字麦灵…