网络编程套接字概念(UTP和TCP)

embedded/2024/11/22 3:33:22/

前言:

认识了网络,我们就应该考虑一下如何编程实现不同主机上的应用进程之间如何进行双向互通的端点。

套接字(Socket)网络编程的一种基本概念,套接字是应用程序通过网络协议进行通信的接口,是操作系统提供的一组api(在传输层给应用层提供)。

网络编程中,套接字主要应用于客户端和服务器之间的通信,工作在网络传输层,基于TCP/UDP协议来传输数据。TCP/UDP是传输层的俩个核心的协议,这俩个协议有很大的差别,所以Socket就提供了俩套套接字,分别为流套接字数据报套接字

流套接字、数据报套接字

流套接字:使用TCP协议,有连接,可靠运输,面向字节流,全双工

数据报套接字:使用UDP协议,无连接,不可靠运输,面向数据报,全双工

有连接&无连接

对于TCP协议来说,有连接就是对于A和B进行通信,AB先建立连接,A中保存了B的通信信息,B中也保存了A的通信信息。但对于UDP协议本身来说就不保存对方信息。

该连接只是逻辑上的连接,并不是网线类的物理连接。区别只是是否包含对端信息。

可靠运输&不可靠运输

网络传输中,丢包现象(数据丢失)还是很容易发生的,光电信号的传输也会受到外界影响,导致0011这样的bit位可能就会被修改了。这样乱了的数据就会被识别出来丢掉。

网络世界上是通过各种路由器和交换机发送和接收数据的,有时候数据传输量过大会导致“堵”在某个路由器和交换机上,无法准确100%的传输过去。

对于TCP的可靠传输:虽然也无法保证数据100%的传送过去,但是会识别出来是否丢包,然后重新传输。

对于UDP的不可靠传输:不提供确认和重传服务,就是单纯把数据包传送过去就不理了。

面向字节流&面向数据报

面向字节流(TCP):读取数据的时候,是以字节为单位进行读取,无长度限制可能会出现粘包现象。

面向数据报(UDP):读取数据的时候,以一个数据报为单位读取,一次为一整个数据报,有长度限制不会出现粘包现象。

全双工&半双工

全双工:一个通信链路,支持双向(可读可写)

半双工:一个通信链路,支持单向(要么读要么写)


http://www.ppmy.cn/embedded/139508.html

相关文章

C# AutoMapper 10个常用方法总结

前言 AutoMapper 是一个强大的对象映射库,用于简化和自动化复杂对象之间的转换。 官网地址:AutoMapper 文档地址:AutoMapper — AutoMapper documentation AutoMapper是以.NET(C#)语言开发的一个轻量的处理一个实体对象到另一个实体对象之间…

论文PDF页面无法下载PDF

问题:通常在下载学术论文时,网页命名是PDF页面,但是无法下载PDF,下载的是html网页 解决: mac:按F12打开开发者界面 然后点击源代码/来源选项 然后打开下图所在位置,鼠标右键复制链接&#xff…

深入探索Golang的GMP调度机制:源码解析与实现原理

在Golang(又称Go语言)的并发编程模型中,GMP调度模型扮演着举足轻重的角色。GMP分别代表Goroutine(协程)、M(Machine,即内核线程)和P(Processor,即逻辑处理器&…

第7章硬件测试-7.3 功能测试

7.3 功能测试 7.3.1 整机规格测试7.3.2 整机试装测试7.3.3 DFX测试 功能测试包括整机规格、整机试装和整机功能测试,是整机结构和业务相关的测试。 7.3.1 整机规格测试 整机规格测试包括尺寸、重量、温度、功耗等数据。这些测试数据与设计规格进行比对和校验&…

计算机网络各层设备总结归纳(更新ing)

计算机网络按照OSI(开放式系统互联)模型分为七层,每一层都有其特定的功能和对应的网络设备。以下是各层对应的设备: 1. 物理层(Physical Layer) 设备:中继器(Repeater)、集线器…

Elasticsearch面试内容整理-性能优化

Elasticsearch 性能优化涉及多个方面,包括集群架构、索引配置、查询优化和硬件配置等。性能优化旨在提高搜索速度、写入性能和集群的稳定性。以下是关于 Elasticsearch 性能优化的详细指南: 1. 集群配置与架构优化 节点类型与角色划分 节点类型的角色划分:

Pycharm

Pycharm PycharmPycharm汉化Pycharm基本设置 Pycharm PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高…

如果使用wmic 在bat脚本中获取当前系统时间?

如果必须使用 wmic 来实现计时功能,那么虽然无法直接通过 wmic os get tickcount 获取滴答计数(因为在部分系统中不支持),可以通过 wmic 获取系统的当前时间,然后通过日期和时间的计算间接实现计时功能。 以下是基于 …