计算机网络之Socket编程

news2025/2/27 14:17:39

文章目录

  • 前言
  • 一、Socket编程
  • 二、TCP套接字编程
  • 三、UDP套字编程
  • 总结


前言

TCP、UDP套接字编程


一、Socket编程

应用进程使用传输层提供的服务才能够交换报文,实现应用协议,实现应用

  • TCP/IP:应用进程使用Socket API访问传输服务
  • 地点:界面上的SAP(Socket)方式:Socket API
  • 目标:学习如何构建能借助sockets进行通信的C/S应用程序
  • socket:分布式应用进程之间的门,传输层协议提供的端到端服务接口

2种传输层服务的socket类型:

  • TCP:可靠的、字节流的服务
  • UDP:不可靠(数据UDP数据报)服务

在这里插入图片描述

二、TCP套接字编程

  • 套接字:应用进程与端到端传输协议(TCP或UDP)之间的门户
  • TCP服务:从一个进程向另一个进程可靠地传输字节流

服务器首先运行,等待连接建立

  • 1:服务器进程必须先处于运行状态
    • 创建欢迎socket
    • 和本地端口捆绑
    • 在欢迎socket上阻塞式等待接收用户的连接

客户端主动和服务器建立连接:

  • 2:创建客户端本地套接字(隐式捆绑到本地port)
    • 指定服务器进程的P地址和端口号,与服务器进程连接
  • 4:连接API调用有效时,客户端P与服务器建立了TCP连接
  • 3:当与客户端连接请求到来时
    • 服务器接受来自用户端的请求,解除阻塞式等待,返回一个新的socket(与欢迎socket不一样),与客户端通信
    • 允许服务器与多个客户端通信
    • 使用源IP和源端口来区分不同的客户端

从应用程序的角度

  • TCP在客户端和服务器进程之间提供了可靠的、字节流(管道)服务

TCP Socket编程
C/S模式的应用样例:

  • 1)客户端从标准输入装置读取一行字符,发送给服务器
  • 2)服务器从socket读取字符
  • 3)服务器将字符转换成大写,然后返回给客户端
  • 4)客户端从socket中读取一行字符,然后打印出
  • 实际上,这里描述了C-S之间交互的动作次序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、UDP套字编程

  • UDP:在客户端和服务器之间没有连接

    • 没有握手
    • 发送端在每一个报文中明确地指定目标的IP地址和端口号
    • 服务器必须从收到的分组中提取出发送端的IP地址和端口号
  • UDP:传送的数据可能乱序,也可能丢失

  • 进程视角看UDP服务

    • UDP为客户端和服务器提供不可靠的字节组的传送服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


总结

  • 应用程序体系结构
    • 客户-服务器
    • P2P
    • 混合
  • 应用程序需要的服务品质描述:
    • 可靠性、带宽、延时、安全
  • Internet传输层服务模式
    • 可靠的、面向连接的服务:TCP
    • 不可靠的数据报:UDP
  • 流行的应用层协议:
    • HTTP
    • FTP
    • SMTP,POP,IMAP
    • DNS
  • Socket编程
  • 应用层协议报文类型:请求/响应报文:
    • 客户端请求信息或服务
    • 服务器以数据、状态码进行响应
  • 报文格式:
    • 首部:关于数据信息的字段
    • 数据:被交换的信息
  • 控制报文vs.数据报文
    • 带内、带外
  • 集中式vs.分散式
  • 无状态vs.维护状态
  • 可靠的vs.不可靠的报文传输
  • 在网络边缘处理复杂性

一个协议定义了在两个或多个通信实体之间交换报文的格式和次序、以及就一条报文传输和接收或其他事件采取的动作

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

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

相关文章

11-30 SpringBoot

内嵌的tomcat tomcat的依赖 对于tomcat其实还是一个jar包 spring是一个IOC容器 tomcat的核心对象交给Spring容器 调用核心对象方法 启动Tomcat 1.添加依赖 tomcat-embed-core,叫做tomcat内嵌核心。就是这个东西把tomcat功能引入到了我们的程序中的 排除tomcat&a…

改造python3中的http.server为简单的文件下载服务

改造 修改python3中的http.server.SimpleHTTPRequestHandler,实现简单的文件上传下载服务 simple_http_file_server.py: # !/usr/bin/env python3import datetime import email import html import http.server import io import mimetypes import os …

游戏反Frida注入检测方案

在游戏安全对抗过程中,有不少外挂的实现基于对游戏内存模块进行修改,这类外挂通常会使用内存修改器,除此之外,还有一种门槛相对更高、也更难检测的「注入挂」。 据FairGuard游戏安全数据统计,在游戏面临的众多安全风险…

uniapp微信小程序实现地图展示控件

最终实现效果: 地图上展示控件,并可以点击。 目录 一、前言 二、在地图上展示控件信息 点击后可进行绘制面图形 1.使用cover-view将控件在地图上展示 2.设置控件样式,使用好看的图标 3.控件绑定点击事件 一、前言 原本使用的是control…

应用于智慧城管的AI边缘盒子+AI算法一体化解决方案

智慧城管支持十几种城市违规违法场景的识别,覆盖着市容环境、街面秩序、宣传广告、市政设施等类别,能够在很大程度上引导责任单位进行自动整改和自治,积极引导市民加强自我约束、自我教育、自我管理,努力增强市民参与城市管理的责…

Maya 2024(3D建模、动画和渲染软件)

Maya 2024是一款非常强大的3D建模、动画和渲染软件,它提供了许多新功能和改进,以帮助建模师、动画师和渲染师更加高效地进行创作。 在建模方面,Maya 2024引入了Symmetry(对称)功能,可以在网格两侧生成均匀…

(分类)KNN算法- 参数调优

在此专栏的上一篇文章的基础上,进行交叉实验获取最佳的K值 上一篇文章:KNN算法案例-鸢尾花分类 数据拆分的过程: 交叉验证(Cross Validation) 是一种在机器学习中广泛使用的模型评估和参数调优方法。在训练模型时&…

设计模式精讲:掌握工厂方法与抽象工厂的精髓

设计模式精讲:掌握工厂方法与抽象工厂的精髓 一、引言:如何学习设计模式?二、工厂方法(也叫工厂模式)2.1、代码结构2.2、符合的设计原则2.3、小结 三、抽象工厂3.1、代码结构3.2、符合的设计原则3.3、小结 总结 一、引…

麒麟操作系统根目录权限777修复方法

在麒麟操作系统中,误操作执行:chmod -R 777 /后,整个根目录权限都变成了777,先找一台相同版本的系统,越干净越好,把该系统的权限导出。 1.在好的机器上执行: #cd / 到根目录 # sudo…

Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 构建可移植的计算机视觉环境 文章目录 前言引言简介:目的和重要性: 深入理解Docker和OpenCVDocker的基本概念和优势:OpenCV简介和应用领域:…

四、虚拟机网络配置

目录 1、VMware网卡配置模式 1.1 桥接模式 1.2 NAT模式 1.3 仅主机模式 ​​​​​​​2、编辑虚拟机的网络编辑器 ​​​​​​​3、编辑Window的虚拟网卡 ​​​​​​​4、修改IP地址为静态 4.1 查看网卡名字 4.2 编辑修改网卡IP地址的配置文件 4.3 重启网络: 4.…

【Docker】Swarm的overlay网络

对于理解swarm的网络来讲,个人认为最重要的两个点: 第一是外部如何访问部署运行在swarm集群内的服务,可以称之为入方向流量,在swarm里我们通过ingress来解决。 第二是部署在swarm集群里的服务,如何对外进行访问&…

探索Playwright的现代自动化测试力量

在当今数字化时代,Web应用程序的质量和稳定性对于企业的成功至关重要。为了确保Web应用程序的无缝运行,自动化测试工具成为了开发人员和测试团队的重要工具。多年来,Selenium一直是自动化测试的黄金标准,然而,在不久前…

从0开始学习JavaScript--JavaScript CommonJS 和 Node.js 模块系统

JavaScript 的模块系统是实现模块化开发的关键,而 CommonJS 规范及其在 Node.js 中的应用是其中最为突出的例子。本文将深入研究 JavaScript 中的 CommonJS 模块规范,解析其核心概念,并通过丰富的示例代码展示其在 Node.js 中的实际应用。 C…

MySQL核心知识点整理大全1-笔记

MySQL 是一种流行的关系型数据库管理系统,它是以C和C语言编写的,最初是由瑞典公司MySQL AB开发的,现在是由Oracle公司维护和支持。MySQL是开源软件,可在Windows、Linux、Mac OS、FreeBSD等各种操作系统上运行。MySQL的主要特点是速…

数字图像处理(实践篇)十四 图像金字塔

目录 一 图像金字塔 二 涉及的函数 三 实践 一 图像金字塔 在某些情况下,需要处理不同分辨率的(相同)图像。比如,在图像中搜索某些目标(比如人脸)的时候,不确定该目标在所述图像中会以多大的…

智能优化算法应用:基于象群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于象群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于象群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.象群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

HTML5+CSS3小实例:纯CSS实现文字组成肖像特效

实例:纯CSS实现文字组成肖像特效 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" conten…

Java SpringBoot Controller常见写法

文章目录 环境Controller调用脚本运行结果总结 环境 系统: windows 11 工具: java, idea, git bash Controller 接口常见有以下几种方式 其中&#xff1a; Tobj 调用脚本 我的是windows 系统&#xff0c;使用 git bash 窗口运行, 用 cmd 或者 power shell 会有问题 curl …

《合成孔径雷达成像算法与实现》_使用CS算法对RADARSAT-1数据进行成像

CSA 简介&#xff1a;Chirp Scaling 算法 (简称 CS 算法&#xff0c;即 CSA) 避免了 RCMC 中的插值操作。该算法基于 Scaling 原理&#xff0c;通过对 chirp 信号进行频率调制&#xff0c;实现了对信号的尺度变换或平移。基于这种原理&#xff0c;可以通过相位相乘代替时域插值…