【网络编程】网络编程基础和Socket套接字

目录

一. 网络编程的概念

二. 网络编程基础知识

1)网卡

2)接收端和发送端

3)客户端和服务器

4)请求和响应

 5)客户端和服务器的交互模式

三. Socket 套接字模型


一. 网络编程的概念

网络编程 是通过编程实现不同进程之间数据交换和通信的技术。

  • 主机1向主机2发送网络数据,主机1发送网络资源(客户端)主机2获取网络资源(服务器)
  • 如果是同一个主机,只要是不同的进程,基于网络来传输数据,那么也属于网络编程

网络编程的本质就是学习传输层提供给应用层的API,通过使用这些API,将数据交给传输层,经过层层封装将数据通过网卡发送出去

二. 网络编程基础知识

1)网卡

网卡属于计算机的硬件组件,将二进制数据转换成适合传输的光电信号,并处理网络协议的底层细节

2)接收端和发送端

接收端和发送端

发送数据的一方,称为发送端

接收数据的一方,称为接收端

3)客户端和服务器

 客户端和服务器

主动发起通信的一方,称为客户端

被动接受通信的一方,称为服务器

同一个程序在不同的场景中,可能是客户端也可能是服务器 

4)请求和响应

客户端给服务器发送的数据,称为请求

服务端给客户端返回的响应,称为响应 

 5)客户端和服务器的交互模式

  • 一问一答( 一个请求对应一个响应)

客户端给服务器发个请求,服务器给客户端返回个响应(网站开发)

  • 一问多答 (一个请求对应多个响应)

客户端发一个请求,服务器返回多个响应(下载文件)

  • 多问一答 (多个请求对应一个响应)

 客户端发多个请求,服务器响应一个(上层文件)

  • 多问多答(多个请求对应多个响应)

 客户端发送多个请求,服务器返回多个响应(远程控制)


三. Socket 套接字模型

网络编程主要使用系统API,这些API主要是由传输层提供,传输层主要有两种协议:TCP和UDP

由于协议的不同,导致提供的API也不同 


 Socket套接字针对传输层协议分为了三类:

  1. 流套接字(使用传输层TCP协议)
  2. 数据报套接字(使用传输层UDP协议)
  3. 原始套接字

 传输层主要协议:TCP和UDP协议(重点!!!)

UDP:无连接,不可靠传输,面向数据报,全双工

TCP:有链接,可靠传输,面向字节流,全双工

1)有链接/无连接

有链接

  • 这里的连接并不是物理意义上的理解,而是抽象的连接
  • 连接的特点是必须双方都认同,连接后才能传输数据(打电话)
  • 连接的本质就是使用一些数据结构去记录对方的信息

无连接

  •  不管你认不认同,数据都可以发送过去(发短信)

2) 可靠传输/不可靠传输

  • 这里的可靠传输不能保证数据百分之百到达接收端
  • 可靠传输:发送的数据是否送达,发送方可以感知到 

3)面向字节流/面向数据报

面向字节流(TCP):网络中传输的基本单位是字节

面向数据报(UDP):网络中传输的基本单位是数据报(由一系列字节组成) 

 4)全双工/半双工

全双工:同一时刻,可以双向通信

半双工:同一时刻,只能单向通信


UDP数据报套接字模型


TCP流套接字模型 


点赞的宝子今晚自动触发「躺赢锦鲤」buff!下一章详细介绍UDP数据报套接字编程 

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

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

相关文章

盛水最多的容器问题详解:双指针法与暴力法的对比与实现

文章目录 问题描述方法探讨方法一:暴力法(Brute Force)思路代码实现复杂度分析 方法二:双指针法(Two Pointers)思路正确性证明代码实现复杂度分析 方法对比总结 摘要 盛水最多的容器(Container …

图论-BFS搜索图/树-最短路径问题的解决

续上篇~图论--DFS搜索图/树-CSDN博客 先看第一次学习的博客!!👇👇👇👇 👉 有一些问题是广搜 和 深搜都可以解决的,例如岛屿问题,这里我们记dfs的写法就好啦,…

C++进阶——C++11_智能指针

目录 1、问题引入 2、RAII和智能指针 3、C标准库的智能指针 3.1 auto_ptr (不好) 3.2 unique_ptr 3.3 shared_ptr (重点) 3.4 weak_ptr (重点) 4、shared_ptr的循环引用问题(重点) 5、shared_ptr的线程安全问题 6、C11智能指针和boost的关系 7、内存泄漏 7.1 什么是…

数据库的基本原则

数据库的核心原则 原子性与持久性:原子性(Atomicity)确保一个事务中的所有操作要么全部完成,要么完全不执行,不会出现部分完成的情况。持久性(Durability)则保证一旦事务提交成功,即…

Java设计模式实战:装饰模式在星巴克咖啡系统中的应用

一、装饰模式简介 装饰模式(Decorator Pattern)是一种结构型设计模式,它允许向一个现有的对象添加新的功能,同时又不改变其结构。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前…

使用MPI-IO并行读写HDF5文件

使用MPI-IO并行读写HDF5文件 HDF5支持通过MPI-IO进行并行读写,这对于大规模科学计算应用非常重要。下面我将提供C和Fortran的示例程序,展示如何使用MPI-IO并行读写HDF5文件。 准备工作 在使用MPI-IO的HDF5之前,需要确保: HDF5库编译时启用…

七、自动化概念篇

自动化测试概念 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的过程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人…

redis cluster 的通信机制

Redis Cluster 的通信机制是其分布式架构的核心,基于 Gossip 协议 和 Cluster Bus 实现节点间状态同步与数据协调。以下是其通信机制的核心要点: 二进制协议:数据以字节流形式编码(如Protobuf、Thrift、MQTT、Gossip)。…

CTF web入门之文件上传

知识点 产生文件上传漏洞的原因 原因: 对于上传文件的后缀名(扩展名)没有做较为严格的限制 对于上传文件的MIMETYPE(用于描述文件的类型的一种表述方法) 没有做检查 权限上没有对于上传的文件目录设置不可执行权限,(尤其是对于shebang类型的文件) 对于web server对于上传…

PhotoShop学习09

1.弯曲钢笔工具 PhotoShop提供了弯曲钢笔工具可以直观地创建路径,只需要对分段推拉就能够进行修改。弯曲港币工具位于工具面板中的钢笔工具里,它的快捷键为P。 在使用前,可以把填充和描边选为空颜色,并打开路径选项,勾…

tsconfig.json配置不生效

说明一下我遇到的问题,这是我的配置文件代码的 {"compilerOptions": {"module": "none","target": "ES5","outFile": "./dist/bundle.js"} } 和我想象不同的是,我编译成 js 没…

源代码加密之零日攻击

# SDC沙盒:有效防御零日攻击的多层防护体系 在当今复杂多变的网络安全环境中,零日攻击已成为企业面临的重大威胁之一。零日攻击利用尚未被公众发现或尚未被软件供应商修复的漏洞进行攻击,具有极高的隐蔽性和破坏性。SDC沙盒作为一种先进的数…

记录一次TDSQL网关夯住故障

环境信息: TDSQL-MySQL同城双中心集群,集中式实例,一主三副本,每个中心两个db副本,每个中心一个VIP,V每个IP通过硬件做负载均衡指向该中心两个proxy,操作系统为麒麟v10 arm。 故障描述&#xf…

代码随想录八股训练营完结总结

! 40天的训练营,我总结了自己完整的八股文,后续在面试过程中可以补充 很感谢这次训练营,真的高频,在面试中能击中60%以上,剩下的就靠平时的积累了。 感谢训练营的小伙伴,很多次想偷懒&#x…

VS Code 的 .S 汇编文件里面的注释不显示绿色

1. 确认文件语言模式 打开 .S 文件后,查看 VS Code 右下角的状态栏,确认当前文件的识别模式(如 Assembly、Plain Text 等)。如果显示为 Plain Text 或其他非汇编模式: 点击状态栏中的语言模式(如 Plain Te…

iphone各个机型尺寸

以下是苹果(Apple)历代 iPhone 机型 的屏幕尺寸、分辨率及其他关键参数汇总(截至 2023年10月,数据基于官方发布信息): 一、标准屏 iPhone(非Pro系列) 机型屏幕尺寸(英寸…

VSCode写java时常用的快捷键

首先得先安好java插件 1、获取返回值 这里是和idea一样的快捷键的,都是xxxx.var 比如现在我new一个对象 就输入 new MbDo().var // 点击回车即可变成下面的// MbDo mbDo new MbDo()//以此类推get方法也可获取 mbDo.getMc().var // 点击回车即可变成下面的 // St…

相机内外参

文章目录 相机内参相机外参 相机的内外参是相机标定过程中确定的重要参数,用于建立图像像素坐标与实际世界坐标之间的关系。 相机内参 定义:相机内参是描述相机内部光学和几何特性的参数,主要包括焦距、主点坐标、像素尺度因子以及畸变系数等…

【视频目标分割论文集】Efficient Track Anything0000

github 摘要 视频对象分割和追踪任意目标领域出现了强大的工具——分割任意模型 2(SAM 2)。SAM 2 实现令人印象深刻的视频对象分割性能的关键组成部分包括用于帧特征提取的大型多阶段图像编码器,以及存储过去帧记忆上下文以辅助当前帧分割的…

CSS学习02 动态列数表格开发,解决多组数据布局与边框重合问题

概要 在前端开发中,表格常用于展示结构化数据。当数据组的字段数量不统一时(如有的行包含 3 组数据,有的行包含 2 组或 1 组),传统固定列数的表格会出现结构错位、边框重合等问题。本文通过 HTML/CSS 规范方法&#x…