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

GO网络编程(一):基础知识

1. 网络编程的基础概念

TCP/IP 协议栈

TCP/IP 是互联网通信的核心协议栈,分为以下四个层次:

  • 应用层(Application Layer):为应用程序提供网络服务的协议,比如 HTTP、FTP、SMTP 等。
  • 传输层(Transport Layer):提供端到端的通信服务,主要包括 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议)。
    • TCP面向连接,可靠的字节流传输协议。它保证数据包的顺序和完整性
    • UDP无连接的协议,快速但不保证数据包到达顺序或完整性,适用于实时应用如视频通话或游戏。
  • 网络层(Network Layer):负责跨网络传输数据包,主要协议是 IP(Internet Protocol,互联网协议)。
  • 链路层(Link Layer):负责本地网络通信,比如以太网、Wi-Fi 等。

IP 地址与端口

  • IP 地址(Internet Protocol Address):用于标识网络中的设备
  • 端口(Port)每个网络应用服务通过不同的端口号与网络进行通信。例如,HTTP 通常使用 80 端口,HTTPS 使用 443 端口。

Socket 编程

  • Socket:套接字,是网络通信的端点,用于通过 IP 地址和端口号建立连接。Socket 编程是进行网络通信的基础。

2. Go 网络编程的基础

net

Go 的网络编程主要依赖 net 包。net 包提供了处理 TCP、UDP、IP 和 Unix Socket 的基本接口。

  • net.Dial:用于创建客户端连接,支持 TCP、UDP 等协议。
  • net.Listen:用于服务器端监听指定的端口和协议,等待客户端连接。
  • net.Conn:代表客户端和服务器之间的连接,支持读写数据。
  • net.Listener:服务器监听器,接受客户端的连接请求。

连接的生命周期

  1. 连接建立:客户端与服务器通过三次握手建立 TCP 连接。
  2. 数据传输:通过 Conn.Read()Conn.Write() 在客户端和服务器之间进行数据传输。
  3. 连接关闭:通过四次挥手关闭 TCP 连接,释放资源。

3. Go 网络编程的常见场景

  • TCP 通信:需要可靠的、面向连接的传输时使用 TCP。例如,聊天应用、文件传输等场景。
  • UDP 通信:当需要低延迟、不保证数据传输顺序时使用 UDP。例如,游戏、视频流等场景。
  • HTTP 服务:构建 Web 服务器时使用 Go 内置的 net/http 包,提供便捷的 HTTP 通信支持。

4.端口详细介绍

(1)端口(port)-介绍
我们这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。如果把IP地址比作一间房子,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:256×256)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0到65535(256×256-1)。
(2)客户端和主机的链接如下图:
在这里插入图片描述
1.只要是做服务程序,都必须监听一个端口
2.该端口就是其他程序和该服务通讯的通道
3.一台电脑有65535个端口1-665354.一旦一个端口被某个程序监听(占用),那么其他的程序就不能在该端口的监听
(3)端口(port)-分类
0号是保留端口.1-1024是固定端口,又叫有名端口,即被某些程序固定使用,一般程序员不使用.22:SSH远程登录协议23:telnet使用21:ftp使用25:smtp服务使用80:iis使用7:echo服务1025-65535是动态端口这些端口,程序员可以使用.
(4)端口(port)-使用注意
在计算机(尤其是做服务器)要尽可能的少开端口一个端口只能被一个程序监听。如果使用netstat -an可以查看本机有哪些端口在监听可以使用netstat -anb来查看监听端口的pid,在结合任务管理器关闭不安全的端口.具体如下图:
在这里插入图片描述
其中LISTENING表示正在监听本地的端口,最左边一栏是进程,即端口,其端口号为本地地址中冒号后的数字。

5.客户端和服务端的网络分布

在这里插入图片描述

相关文章:

GO网络编程(一):基础知识

1. 网络编程的基础概念 TCP/IP 协议栈 TCP/IP 是互联网通信的核心协议栈,分为以下四个层次: 应用层(Application Layer):为应用程序提供网络服务的协议,比如 HTTP、FTP、SMTP 等。传输层(Tra…...

【Linux】用虚拟机配置Ubuntu环境

目录 1.虚拟机安装Ubuntu系统 2.Ubuntu系统的网络配置 3.特别声明 首先我们先要下载VMware软件,大家自己去下啊! 1.虚拟机安装Ubuntu系统 我们进去之后点击创建新的虚拟机,然后选择自定义 接着点下一步 再点下一步 进入这个界面之后&…...

酒店智能门锁SDK接口pro[V10] 门锁校验C#-SAAS本地化-未来之窗行业应用跨平台架构

一、代码 int 酒店标识_int Convert.ToInt32(酒店标识);StringBuilder 锁号2024 new StringBuilder(8);//信息 "未知返回值:" bufCard_原始;GetGuestLockNoByCardDataStr_原始(酒店标识_int, bufCard_原始.ToString(), 锁号2024);StringBuilder 退…...

Gitのrebase用法

在 Git 中,rebase 是一种用于整合多个提交历史的操作,它可以将一个分支的变更“重放”到另一个分支上。与 merge 不同,rebase 会产生一个线性的提交历史,使得项目的历史记录更加整洁和易于理解。 1. 什么是 Rebase? …...

二分查找一>:在排序数组中查找元素的第一个和最后一个位置

1.题目: 2.解析:这里不能用传统二分,因为涉及范围,传统二分时间复杂度会降为O(N),要做些改动。 步骤一:查找区间左端点 细节图: 步骤二:查找区间右端点: 细节图: 代码…...

undeclared identifier ‘UNITY_PREV_MATRIX_M‘ - Unity Shader自己写URP,引用内部 hlsl

碰到这样的问题,居然非常淡定 这个链接里说了问题: 一个哥们A问,为什么include urp common.hlsl 提示莫名其妙 另一个哥们B说,这个issue 说了,可能是这个原因(也没正面答) 从issue我们知道&a…...

信息安全工程师(29)存储介质安全分析与防护

前言 存储介质安全分析与防护是确保数据安全与完整性的重要环节。存储介质,如硬盘、U盘、SD卡等,作为数据的载体,其安全性直接关系到数据的安全。 一、存储介质安全分析 1. 数据泄露风险 格式化不彻底:传统的格式化操作往往只能删…...

Html5知识点介绍

HTML5 是 HTML 的最新版本,它引入了许多新特性和元素来增强 Web 开发的能力和灵活性。以下是一些关键的 HTML5 知识点: 1. 语义化标签 HTML5 增加了许多新的语义化标签,用来更好地定义页面结构和内容,这些标签使代码更加清晰易读&…...

探索机器学习中的特征选择技术

在机器学习和数据科学领域,特征选择是一个关键步骤,它不仅有助于提高模型的性能,还能帮助我们更好地理解数据。本文将深入探讨特征选择的重要性、常见方法以及如何在实际项目中应用这些技术。 一、特征选择的重要性 降低维度:减…...

数造科技入选中国信通院《高质量数字化转型产品及服务全景图》三大板块

9月24日,2024大模型数字生态发展大会暨“铸基计划”年中会议在北京召开。会上,中国信通院发布了2024年《高质量数字化转型产品及服务全景图(上半年度)》和《高质量数字化转型技术解决方案(上半年度)》等多项…...

什么是分布式数据库

分布式数据库(Distributed Database)是一种数据库系统,它的数据被存储在不同的物理位置,但对用户来说表现得就像一个单一的、统一的数据库。这种系统由多个自治的数据库站点组成,这些站点通过网络相互连接,…...

从u盘直接删除的文件能找回吗 U盘文件误删除如何恢复

U盘上的文件被删除并不意味着它们立即消失。事实上,删除操作只是将文件从文件系统的目录中移除,并标记可用空间。这意味着在文件被覆盖之前,它们仍然存在于存储介质上。因此,只要文件没有被新的数据覆盖,我们就有机会恢…...

如何使用ssm实现基于HTML的中国传统面食介绍网站的搭建+vue

TOC ssm758基于HTML的中国传统面食介绍网站的搭建vue 第1章 绪论 1.1选题动因 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔…...

【生成模型】学习笔记

生成模型 生成模型概述(通俗解释) 生成的核心是生成抽象化的内容,利用已有的内容生成没有的/现实未发生的内容。这个过程类似于人类发挥想象力的过程。 生成模型的应用场景非常广泛,可以应用于艺术表达,如画的生成、…...

大语言模型知识点分享

1 目前主流的开源模型体系有哪些? Prefix Decoder 系列模型 核心点: 输入采用双向注意力机制,输出为单向注意力。双向注意力意味着输入的每个部分都可以关注到输入的所有其他部分,这在理解上下文时具有很强的优势。 代表模型&a…...

openpnp - 底部相机高级校正的参数设置

文章目录 openpnp - 底部相机高级校正的参数设置概述笔记修改 “Radial Lines Per Calibration Z” 的方法不同 “Radial Lines Per Calibration Z”的校验结果不同 “Radial Lines Per Calibration Z”的设备校验动作的比较总结备注END openpnp - 底部相机高级校正的参数设置 …...

劳动与科技、艺术结合更好提高劳动教育意义

在中小学教育中,劳动教育是培养学生基本生活技能和劳动习惯的重要环节。但当代的劳动教育不在单纯的劳动,而是劳动技能的提升与学习,通过学习劳动技能与实践活动,强化劳动教育与其他课程的融合,学生深刻理解劳动的意义…...

基于Hive和Hadoop的招聘分析系统

本项目是一个基于大数据技术的招聘分析系统,旨在为用户提供全面的招聘信息和深入的职位市场分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出,以 Spark 为核…...

目标检测评价指标

混淆矩阵(Confusion Matrix) 准确率(accuracy) 准确率:预测正确的样本数 / 样本数总数 (正对角线 / 所有) 精度(precision) 精度:预测正确里面有多少确实是…...

解决VRM格式模型在Unity中运行出现头发乱飞等问题

1、问题 通过VRoidStudio制作导出的vrm格式的模型,放在unity中使用时,一运行就会出现头发乱飞,没有自然下垂的问题 2、解决方法 将模型下的secondary中的所有VRM Spring Bone脚本中的Drag Force改为1,Hit Radius改为0 修改后…...

RT-Thread线程管理与调度机制详解

RT-Thread线程管理深度解析1. 嵌入式实时操作系统中的线程概念在嵌入式实时操作系统(RTOS)中,线程是最基本的调度单位,也被称为任务。与裸机编程的单线程模式不同,RTOS通过多线程机制实现了任务的并发执行。裸机系统通常采用一个无限循环结构…...

包含多体型模板的AI虚拟智能试衣系统源码

温馨提示:文末有资源获取方式在电商竞争日益白热化的今天,商品展示图的质量直接决定了点击率与转化率。对于服装类目而言,传统模特拍摄不仅面临模特、摄影、场地的高昂成本,更受限于漫长的拍摄周期。为了解决这一行业痛点&#xf…...

移动UI自动化测试架构选型:Maestro微内核架构与性能基准方法论

移动UI自动化测试架构选型:Maestro微内核架构与性能基准方法论 【免费下载链接】maestro Painless Mobile UI Automation 项目地址: https://gitcode.com/GitHub_Trending/ma/maestro 在当今快速迭代的移动应用开发环境中,UI自动化测试已成为保障…...

深入TIM从模式:用STM32的TI1FP1触发实现高精度PWM测量

深入解析STM32 TIM从模式:基于TI1FP1触发的高精度PWM测量技术 在嵌入式系统开发中,精确测量PWM信号的频率和占空比是许多应用场景的基础需求,从电机控制到数字电源管理,再到各类传感器信号处理,都需要可靠的测量手段。…...

新手上路:用Realsense Viewer和Rviz快速验证你的Intel L515相机(从插上USB3.0到看到点云)

新手上路:用Realsense Viewer和Rviz快速验证你的Intel L515相机 刚拿到Intel RealSense L515激光雷达相机时,最迫切的需求往往是快速确认设备能否正常工作。本文将带你跳过复杂的配置流程,直接进入**"插电即用"**的验证阶段。无论你…...

ADC肺毒性评估新方法:人源肺泡体外模型的实验研究与分析【曼博生物官方代理Epithelix 人原代肺细胞】

一、问题提出:为什么ADC肺毒性难以预测? 抗体药物偶联物(ADC)近年来在肿瘤治疗中发展迅速,其通过“抗体毒素”的组合,实现精准杀伤肿瘤细胞。 但在实际临床应用中,一个关键问题逐渐凸显&#xf…...

Next-Admin:基于Next.js的企业级中后台管理系统技术评估与实施指南

Next-Admin:基于Next.js的企业级中后台管理系统技术评估与实施指南 【免费下载链接】next-admin An out-of-the-box admin based on NextJS and AntDesign | 一款基于nextjsantd5.0的中后台系统 项目地址: https://gitcode.com/gh_mirrors/ne/next-admin Nex…...

Ostrakon-VL-8B零售AI部署实战:5分钟搭建智能巡店系统,支持多角色权限管理

Ostrakon-VL-8B零售AI部署实战:5分钟搭建智能巡店系统,支持多角色权限管理 1. 引言:零售行业的新一代智能巡检方案 想象一下这样的场景:作为连锁零售企业的区域经理,你每天需要查看几十家门店上传的货架照片&#xf…...

SkyWalking 9.7.0与Elasticsearch 8.17.4集成避坑指南:证书转换那些事儿

SkyWalking 9.7.0与Elasticsearch 8.17.4深度集成实战:证书转换与安全通信全解析 当分布式系统的可观测性需求遇上Elasticsearch 8.x强化的安全机制,SkyWalking集成过程中的证书问题往往成为技术人员的"拦路虎"。本文将带您穿透PEM与PKCS12的格…...

SEO_2024年最新SEO策略与趋势深度解析(152 )

2024年SEO策略与趋势解析:如何在竞争中脱颖而出 随着互联网的迅猛发展,搜索引擎优化(SEO)在数字营销中的重要性愈发凸显。2024年,SEO策略和趋势继续演变,如何把握最新动向,不仅能提升网站的排名…...