计算机网络之Socket编程

简介: 计算机网络之Socket编程



前言

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.不可靠的报文传输
  • 在网络边缘处理复杂性

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

相关文章
|
2月前
|
开发者 Python
Python Socket编程:不只是基础,更有进阶秘籍,让你的网络应用飞起来!
在数字时代,网络应用成为连接世界的桥梁。Python凭借简洁的语法和丰富的库支持,成为开发高效网络应用的首选。本文通过实时聊天室案例,介绍Python Socket编程的基础与进阶技巧。基础篇涵盖服务器和客户端的建立与数据交换;进阶篇则探讨多线程与异步IO优化方案,助力提升应用性能。通过本案例,你将掌握Socket编程的核心技能,推动网络应用飞得更高、更远。
50 1
|
13天前
|
Kubernetes 网络协议 Python
Python网络编程:从Socket到Web应用
在信息时代,网络编程是软件开发的重要组成部分。Python作为多用途编程语言,提供了从Socket编程到Web应用开发的强大支持。本文将从基础的Socket编程入手,逐步深入到复杂的Web应用开发,涵盖Flask、Django等框架的应用,以及异步Web编程和微服务架构。通过本文,读者将全面了解Python在网络编程领域的应用。
14 1
|
16天前
|
Java
[Java]Socket套接字(网络编程入门)
本文介绍了基于Java Socket实现的一对一和多对多聊天模式。一对一模式通过Server和Client类实现简单的消息收发;多对多模式则通过Server类维护客户端集合,并使用多线程实现实时消息广播。文章旨在帮助读者理解Socket的基本原理和应用。
15 1
|
22天前
|
消息中间件 监控 网络协议
Python中的Socket魔法:如何利用socket模块构建强大的网络通信
本文介绍了Python的`socket`模块,讲解了其基本概念、语法和使用方法。通过简单的TCP服务器和客户端示例,展示了如何创建、绑定、监听、接受连接及发送/接收数据。进一步探讨了多用户聊天室的实现,并介绍了非阻塞IO和多路复用技术以提高并发处理能力。最后,讨论了`socket`模块在现代网络编程中的应用及其与其他通信方式的关系。
|
24天前
|
网络协议 Linux 应用服务中间件
Socket通信之网络协议基本原理
【10月更文挑战第10天】网络协议定义了机器间通信的标准格式,确保信息准确无损地传输。主要分为两种模型:OSI七层模型与TCP/IP模型。
|
2月前
|
网络协议 Python
网络世界的建筑师:Python Socket编程基础与进阶,构建你的网络帝国!
在数字宇宙中,网络如同复杂脉络连接每个角落,Python Socket编程则是开启这一世界的钥匙。本文将引导你从基础概念入手,逐步掌握Socket编程,并通过实战示例构建TCP/UDP服务器与客户端。你将学会使用Python的socket模块进行网络通信,了解TCP与UDP的区别,并运用多线程与异步IO提升服务器性能。跟随本文指引,成为网络世界的建筑师,构建自己的网络帝国。
35 2
|
2月前
|
网络协议 Python
告别网络编程迷雾!Python Socket编程基础与实战,让你秒变网络达人!
在网络编程的世界里,Socket编程是连接数据与服务的关键桥梁。对于初学者,这往往是最棘手的部分。本文将用Python带你轻松入门Socket编程,从创建TCP服务器与客户端的基础搭建,到处理并发连接的实战技巧,逐步揭开网络编程的神秘面纱。通过具体的代码示例,我们将掌握Socket的基本概念与操作,让你成为网络编程的高手。无论是简单的数据传输还是复杂的并发处理,Python都能助你一臂之力。希望这篇文章成为你网络编程旅程的良好开端。
55 3
|
2月前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
在网络技术飞速发展的今天,掌握网络编程已成为开发者的重要技能。本文以Python为工具,带你从Socket编程基础逐步深入至进阶领域。首先介绍Socket的概念及TCP/UDP协议,接着演示如何用Python创建、绑定、监听Socket,实现数据收发;最后通过构建简单的聊天服务器,巩固所学知识。让初学者也能迅速上手,成为网络编程高手。
69 1
|
2月前
|
网络协议 安全 网络安全
震惊!Python Socket竟能如此玩转网络通信,基础到进阶全攻略!
【9月更文挑战第12天】在网络通信中,Socket编程是连接不同应用与服务的基石。本文通过问答形式,从基础到进阶全面解析Python Socket编程。涵盖Socket的重要性、创建TCP服务器与客户端、处理并发连接及进阶话题如非阻塞Socket、IO多路复用等,帮助读者深入了解并掌握网络通信的核心技术。
58 6
|
1月前
|
网络协议 测试技术 网络安全
Python编程-Socket网络编程
Python编程-Socket网络编程
下一篇
无影云桌面