TCP&&UDP套接字编程

简介: TCP&&UDP套接字编程

Socket编程



应用的实现


应用是如何实现的 ?


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


报文的传输是通过下层的通信及其下层的服务来完成

** TCP/IP:应用进程使用 Socket API 访问传输服务 **

在什么地方将报文传输下去? 什么形式 ?

地点:界面上的SAP(Socket)** 方式:**Socket API


  • 目标: 学习如何构建能借助sockets进行通信的C/S应用程序
  • **socket: 分布式应用进程之间的门,传输层协议提供的端到端 服务接口 **

1690282078697-fd9bf6e1-2f86-4dc7-99d0-d52fc1b7b5d7.png


具体的socket在下层收到之后如何来做, 是由后面的内容讲的

本章主要学习的是 :

应用如何使用层间接口Socket上的SocketAPI来创建Socket 、使用Socket、操作Socket等等, 从而让两个应用进程之间可以逻辑的交换应用报文,实现应用协议, 实现各种的网络应用。


我们都知道本层协议的实现是为了更好的向上层提供服务。而应用层是Top层,但是应用层也可以有上层 ,就比如是用户、其他应用等等。


Socket的两种传输层类型


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


TCP套接字编程


**套接字:应用进程与端到端传输协议(TCP或UDP)之间 的门户 **

**TCP服务:从一个进程向另一个进程可靠地传输字节流 **

1690282542024-8f44dccc-94e0-4cc4-bd27-9941a011c280.png

过程


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


1.** 服务器进程必须先处于运行状态 **

创建欢迎socket

和本 地端口捆绑

在欢迎socket上阻塞式等待接收 用户的连接


** 客户端主动和服务器建立连接:(Accept接收其他人与他建立的连接)**

如果没有那就会阻塞


2.** 创建客户端本地套接字(隐式捆 绑到本地port) **

** 指定服务器进程的IP地址和端口 号,与服务器进程连接 **


3.** 当与客户端连接请求到来时 **

** 服务器接受来自用户端的请求 ,解除阻塞式等待,返回一个 新的socket(与欢迎socket不 一样),与客户端通信 **


  • 允许服务器与多个客户端 通信
  • 使用源IP和源端口来区分 不同的客户端


4.** 连接API调用有效时,客户端P与 服务器建立了TCP连接 **

**注意: **


本地的welcome Socket代表的是本地的80号端口和其他的几个值 ,通过这个端口来建立与其他client的连接

80端口可以被不同的线程共享,有socket值来区分不同的线程


TCP Socket编程(C/S模式交互样例)


  1. 客户端从标准输入装置读 取一行字符,发送给服务 器
  2. 服务器从socket读取字符
  3. 服务器将字符转换成大写 ,然后返回给客户端
  4. 客户端从socket中读取一 行字符,然后打印出来


1690283231335-b7f51599-2131-4527-b456-b02875d65a95.png

** **实际上,这里描述了C-S之间交互的动作次序 140


这里需要重新回顾


UDP套接字编程

从进程的角度看u的udp编程:


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


**UDP: 传送的数据可能乱序, 也可能丢失( 不可靠、无连接的 ) **


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

  • • 没有握手
  • • 发送端在每一个报文中明确 地指定目标的IP地址和端口 号
  • • 服务器必须从收到的分组中 提取出发送端的IP地址和端 口号


Client/server socket 交互: UDP (过程图)


1690285657845-ccb34bb3-d6b6-4b07-887e-e047b5c91939.png



目录
相关文章
|
20天前
|
网络协议 算法 网络性能优化
|
8天前
|
网络协议 SEO
TCP连接管理与UDP协议IP协议与ethernet协议
TCP、UDP、IP和Ethernet协议是网络通信的基石,各自负责不同的功能和层次。TCP通过三次握手和四次挥手实现可靠的连接管理,适用于需要数据完整性的场景;UDP提供不可靠的传输服务,适用于低延迟要求的实时通信;IP协议负责数据包的寻址和路由,是网络层的重要协议;Ethernet协议定义了局域网的数据帧传输方式,广泛应用于局域网设备之间的通信。理解这些协议的工作原理和应用场景,有助于设计和维护高效可靠的网络系统。
19 4
|
14天前
|
缓存 负载均衡 网络协议
面试:TCP、UDP如何解决丢包问题
TCP、UDP如何解决丢包问题。TCP:基于数据块传输/数据分片、对失序数据包重新排序以及去重、流量控制(滑动窗口)、拥塞控制、自主重传ARQ;UDP:程序执行后马上开始监听、控制报文大小、每个分割块的长度小于MTU
|
30天前
|
网络协议 前端开发 物联网
TCP和UDP区别?
本文首发于微信公众号“前端徐徐”,详细介绍了TCP和UDP两种传输层协议的核心概念、连接性和握手过程、数据传输和可靠性、延迟和效率、应用场景及头部开销。TCP面向连接、可靠、有序,适用于网页浏览、文件传输等;UDP无连接、低延迟、高效,适用于实时音视频传输、在线游戏等。
42 1
TCP和UDP区别?
|
22天前
|
Web App开发 缓存 网络协议
不为人知的网络编程(十八):UDP比TCP高效?还真不一定!
熟悉网络编程的(尤其搞实时音视频聊天技术的)同学们都有个约定俗成的主观论调,一提起UDP和TCP,马上想到的是UDP没有TCP可靠,但UDP肯定比TCP高效。说到UDP比TCP高效,理由是什么呢?事实真是这样吗?跟着本文咱们一探究竟!
49 10
|
2月前
|
存储 网络协议 算法
UDP 协议和 TCP 协议
本文介绍了UDP和TCP协议的基本结构与特性。UDP协议具有简单的报文结构,包括报头和载荷,报头由源端口、目的端口、报文长度和校验和组成。UDP使用CRC校验和来检测传输错误。相比之下,TCP协议提供更可靠的传输服务,其结构复杂,包含序列号、确认序号和标志位等字段。TCP通过确认应答和超时重传来保证数据传输的可靠性,并采用三次握手建立连接,四次挥手断开连接,确保通信的稳定性和完整性。
88 1
UDP 协议和 TCP 协议
|
3月前
|
消息中间件 网络协议 算法
UDP 和 TCP 哪个更好?
【8月更文挑战第23天】
192 0
|
1月前
|
网络协议 网络性能优化 C#
C# 一分钟浅谈:UDP 与 TCP 协议区别
【10月更文挑战第8天】在网络编程中,传输层协议的选择对应用程序的性能和可靠性至关重要。本文介绍了 TCP 和 UDP 两种常用协议的基础概念、区别及应用场景,并通过 C# 代码示例详细说明了如何处理常见的问题和易错点。TCP 适用于需要可靠传输和顺序保证的场景,而 UDP 适用于对延迟敏感且可以容忍一定数据丢失的实时应用。
28 1
|
1月前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
36 0
Linux C/C++之TCP / UDP通信
|
1月前
|
存储 网络协议 Java
【网络】UDP和TCP之间的差别和回显服务器
【网络】UDP和TCP之间的差别和回显服务器
65 1