Linux网络编程——概述、TCP/UDP的对比

为什么要学习网络编程

前面对于进程间通信我们讲了:管道、消息队列、共享内存、信号、信号量
这5种通信方式都是依靠Liunx内核。这也造成了他们的一个缺点就是,这些通信方式只能在单机运行
那么如何实现多机通信呢?这就需要引入网络编程。
那么网络有哪些呢?
就从嵌入式出发,有Linux与Android、IOS、各种单片机,或者是Android对Android等等。

网络编程中有两个主要的问题:
1、如何准确地定位网络上一台或多台主机以及定位主机上的特定的应用?
答:通过通信双方地址。地址由IP地址和端口号组成

IP地址负责定位主机
端口号负责定位主机上的特定应用

端口号作用
一台拥有IP地址的主机可以提供许多服务,比如Web服务、 FTP服务、SMTP服务等。这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,:因为IP地址与网络服务是一对多的关系。实际上是通过"IP地址+端口号"来区分不同的服务的。

端口提供了一种访问通道,服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21每个Telnet服务器的TCP端口号都是23每个TFTP(简单文件 传送协议)服务器的UDP端口号都是69

2、找到主机后如何可靠高效地进行数据传偷?
答:一定的规则(即网络通讯协议。有两套参考模型)

OSI参考模型模型过于理性化,未能在因特网上进行广泛推广
TPC/IP参考模型(TPC/IP协议)事实上的国际标准。—应用层、传输层、网络层、物理+数据链路层

TCP/UDP的对比

1、TCP面向连接(如打电话要先拨号建立连接) ;UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多, 多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
需要的信息量很准确,做精细操作则用TCP;数据大量,对数据可靠度要求没那么高则用UDP。

计算机网络的分层

网络由下往上分为: 对应(共6层)

物理层
数据链路层
网络层( IP协议)
传输层(TCP协议)
会话层
应用层和表示层(HTTP协议)

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

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

相关文章

怎么压缩过大的GIF图片?几个步骤轻松搞定!

GIF图片由于其图片格式,本身就会很大,但是微信QQ还有一些其他的社交平台对上传的表情包是有限制的,这个时候就需要借助一些图片处理工具对GIF进行压缩。 下面就向大家介绍三种好用的方法并展示具体的操作步骤。 一、使用嗨格式压缩大师进行压…

RouterSrv-路由功能

2023年全国网络系统管理赛项真题 模块B-Windows解析 题目 安装Remote Access服务开启路由转发,为当前实验环境提供路由功能。启用网络地址转换功能,实现内部客户端访问互联网资源。答题步骤 安装Remote Access服务开启路由转发,为当前实验环境提供路由功能。 配置网卡 加…

2024年第二届“华数杯”国际大学生数学建模竞赛思路及代码

比赛时间:2024.01.17 06:00 至 2024.01.21 09:00 建模思路及代码 比赛开始后第一时间更新,建议先收藏哦 思路及代码更新地址 一、比赛背景 2024年第二届“华数杯”国际大学生数学建模竞赛(以下简称“竞赛”)是中国未来研究会…

Day67力扣打卡

打卡记录 美丽塔 II(前缀和 单调栈) 链接 class Solution:def maximumSumOfHeights(self, maxHeights: List[int]) -> int:n len(maxHeights)stack collections.deque()pre, suf [0] * n, [0] * nfor i in range(n):while stack and maxHeights…

eNSP拓扑建立:RIP静态路由

实验名称: RIP动态路由协议 实验目的: 1、掌握RIPv1的配置方法 2、查看RIP路由分析过程 3、掌握测试RIP网络连通性的方法 步骤一:建立拓扑图 步骤二:配置PC终端的ip、子网掩码、网关。 步骤三:配置路由器,如图所示 步…

【SpringBoot实战】基于阿里云实现文件上传

【SpringBoot实战】基于阿里云实现文件上传 在实际项目开发中&#xff0c;不可避免地会使用到阿里云OSS进行文件存储。尽管阿里云有详细的开发文档&#xff0c;但本篇博客的目的是让我们能够用简明的代码快速实现这个功能。 引入依赖 <dependencies><!-- 阿里云oss…

【K8s】3# 使用kuboard管理K8s集群(NFS存储安装)

文章目录 1.NFS是什么2.配置NFS服务器2.1.执行以下命令安装 nfs 服务器所需的软件包2.2.执行命令 vim /etc/exports&#xff0c;创建 exports 文件&#xff0c;文件内容如下2.3.执行以下命令&#xff0c;启动 nfs 服务2.4.检查配置是否生效 3.在客户端测试NFS3.1.执行以下命令安…

easyexcle处理复杂动态单元格合并问题,合并动态行列

GetMapping("getAddDelSummaryExport") ApiOperation("新增删除比例报表--导出") ApiImplicitParams({ApiImplicitParam(name "season", value "季节", paramType "query", dataType "String"),ApiImplicitPa…

Electron Vite打包后,部分图标未显示的解决方案

背景 这个问题&#xff0c;弄了一晚上&#xff0c;头都大了&#xff0c;找了一堆博客也没解决。主要参考这个&#xff1a;https://blog.csdn.net/m0_73845616/article/details/129741099。 下面讲一下我的解决方案。 解决方案 上面链接里的方法&#xff0c;我采用第二、三个都…

python中文语音识别

1&#xff09; 生成需要识别的wav文件&#xff0c;SpeechRecognition需要wav文件&#xff0c;不能识别mp3文件 安装库&#xff1a; sudo apt install espeak ffmpeg libespeak1 pip install pyttsx3 代码&#xff1a; def demo_tts_wav(): import pyttsx3 engine pytt…

C# Onnx Yolov8 Detect 物体检测 多张图片同时推理

目录 效果 模型信息 项目 代码 下载 C# Onnx Yolov8 Detect 物体检测 多张图片同时推理 效果 模型信息 Model Properties ------------------------- date&#xff1a;2023-12-18T11:47:29.332397 description&#xff1a;Ultralytics YOLOv8n-detect model trained on …

Istio 社区周报(第一期):2023.12.11 - 12.17

欢迎来到 Istio 社区周报 Istio 社区朋友们&#xff0c;你们好&#xff01; 我很高兴呈现第一期 Istio 社区周报。作为 Istio 社区的一员&#xff0c;每周我将为您带来 Istio 的最新发展、有见地的社区讨论、专业提示和重要安全新闻内容。 祝你阅读愉快&#xff0c;并在下一期中…

第二十二章 : Spring Boot 集成定时任务(一)

第二十二章 &#xff1a; Spring Boot 集成定时任务&#xff08;一&#xff09; 前言 本章知识点&#xff1a; 介绍使用Spring Boot内置的Scheduled注解来实现定时任务-单线程和多线程&#xff1b;以及介绍Quartz定时任务调度框架&#xff1a;简单定时调度器&#xff08;Simp…

ubuntu 18.04 共享屏幕

用于windows远程ubuntu 1. sudo apt install xrdp 2. 配置 sudo vim /etc/xrdp/startwm.sh 把最下面的test和exec两行注释掉&#xff0c;添加一行 gnome-session 3.安装dconf-editor : sudo apt-get install dconf-editor 关闭require encrytion org->gnome->desktop…

go从0到1项目实战体系二:数据类型

1. 数据类型: (1). bool类型(只能存true和false) (2). 数字类型: 主要有int(4个字节)、int8(1个字节,8是8个bit位)、int16(2个字节)、int32(3个字节)、int64(4个字节)、uint8(无符号)、uint16、uint32、uint64、float32(4个字节)、float64 (3). 字符类型: ①. 语法:var a b…

农夫山姆(0006)

题意 原来体积是ABC,现在体积是(A-1)* (B-2)*&#xff08;C-2&#xff09;,输入一个现在的体积n&#xff0c;要求现在的体积比原来减少了多少&#xff0c;输出一个减小的最小值和最大值 输入 4 输出 28 41 说明 注意问题的答案可能足够大&#xff0c;所以必须使用 64 位…

TransXNet实战:使用TransXNet实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 论文提出了一种名为D-Mixer的轻量级双动态TokenMixer&#xff0c;旨在解决传统卷积的静态性质导致的表示差异和特征融合问题。D-Mixer通过应用高效的全局注意力和输入依赖的深度卷…

计算机网络实用工具之parsero

简介 Parsero是一个用Python编写的免费脚本&#xff0c;它读取web服务器的robots.txt文件&#xff0c;探测“Disallow”的条目并返回响应状态码。 例&#xff1a; 200 OK The request has succeeded. 403 Forbidden The server understood the request, but is r…

Py之tensorflow-addons:tensorflow-addons的简介、安装、使用方法之详细攻略

Py之tensorflow-addons&#xff1a;tensorflow-addons的简介、安装、使用方法之详细攻略 目录 tensorflow-addons的简介 tensorflow-addons的安装 tensorflow-addons的使用方法 1、使用 TensorFlow Addons 中的功能&#xff1a; tensorflow-addons的简介 TensorFlow Addon…

【SpringBoot快速入门】(4)SpringBoot项目案例代码示例

目录 1 创建工程3 配置文件4 静态资源 之前我们已经学习的Spring、SpringMVC、Mabatis、Maven&#xff0c;详细讲解了Spring、SpringMVC、Mabatis整合SSM的方案和案例&#xff0c;上一节我们学习了SpringBoot的开发步骤、工程构建方法以及工程的快速启动&#xff0c;从这一节开…