当前位置:网站首页>【Socket】①Socket技术概述
【Socket】①Socket技术概述
2022-07-06 19:10:00 【后厂村路蔡徐坤】

一、概述
我们在设计软件系统的时候,经常会有与其他软件进行网络通信的需求。现在,大多的网络通信都是基于TCP/IP协议进行,而底层的TCP/IP协议、流程都较为繁琐,socket编程接口提供了一种简单的TCP/IP操作方式。
- 需求:软件进程之间需要网络通讯进行信息交互。
- TCP/IP协议:是一种数据传输的方案。
- Socket接口:是网络通信端点的抽象,一种可以屏蔽TCP/IP繁琐的底层操作的工具。
应用程序的信息通讯流程,如图所示:
二、TCP与UDP工作流程、区别
参考:https://blog.csdn.net/weixin_47021806/article/details/124883559
(一)TCP/UDP工作流程
1、UDP通信工作流程
服务器端 | 创建socket | 绑定地址/端口 | 发送/接收数据 | 关闭 |
---|---|---|---|---|
客户端 | 创建socket | ---- | 发送/接收数据 | 关闭 |
2、TCP通信工作流程
服务器端 | 创建socket | 绑定地址/端口 | 转化为被动连接(监听) | 接收客户端连接 | 接收/发送数据 | 关闭 |
---|---|---|---|---|---|---|
客户端 | 创建socket | – | – | 连接服务器 | 发送/接收数据 | 关闭 |
- socket()方法:是用来创建一个套接字,有了套接字就可以通过网络进行数据的收发。这也是为什么进行网络通信的程序首先要创建一个套接字。创建套接字时要指定使用的服务类型,使用 TCP 协议选择流式服务(SOCK_STREAM)。
- bind()方法:是用来指定套接字使用的 IP 地址和端口。IP 地址就是自己主机的地址,如果主机没有接入网络,测试程序时可以使用回环地址“127.0.0.1”。端口是一个 16 位的整形值,一般 0-1024 为知名端口,如 HTTP 使用的 80 号端口。这类端口一般用户不能随便使用。其次,1024-4096 为保留端口,用户一般也不使用。4096 以上为临时端口,用户可以使用。在Linux 上,1024 以内的端口号,只有 root 用户可以使用。
- listen()方法:是用来创建监听队列。监听队列有两种,一个是存放未完成三次握手的连接,一种是存放已完成三次握手的连接。listen()第二个参数就是指定已完成三次握手队列的长度。
- accept():方法处理存放在 listen 创建的已完成三次握手的队列中的连接。每处理一个连接,则accept():返回该连接对应的套接字描述符。如果该队列为空,则 accept 阻塞。
- connect():方法一般由客户端程序执行,需要指定连接的服务器端的 IP 地址和端口。该方法执行后,会进行三次握手,建立连接。
- send()方法:用来向 TCP 连接的对端发送数据。send()执行成功,只能说明将数据成功写入到发送端的发送缓冲区中,并不能说明数据已经发送到了对端。send()的返回值为实际写入到发送缓冲区中的数据长度。
- recv()方法:用来接收 TCP 连接的对端发送来的数据。recv()从本端的接收缓冲区中读取数据,如果接收缓冲区中没有数据,则 recv()方法会阻塞。返回值是实际读到的字节数,如果
- recv()返回值为 0, 说明对方已经关闭了 TCP 连接。
- close():方法用来关闭 TCP 连接。此时,会进行四次挥手。
3、TCP与UDP通信区别
(1)操作难易
UDP是一种无连接协议,因此不需要像TCP一样listen和accept,操作简单
UDP服务器:创建socket、绑定端口、收发操作、关闭socket
TCP服务器:创建socket、绑定端口、监听端口、接收连接、收发操作、关闭socket
(2)重传机制与时延
UDP传输的消息如果在网络上丢失了,就丢失了。UDP协议本身没有重传机制。
而TCP协议底层有消息验证是否到达,如果丢失,发送方会重传的机制。
UDP:可以保证实时性
TCP:可以保证完整性
(3)消息次序问题
TCP协议通信双方的信息数据就像流动在管道中,是有明确的先后次序的。
发送方应用 先发送的信息肯 先被接收方应用先接收的 。而UDP协议发送的是一个个的独立的报文,接收方应用接收到的次序不一定和发送的次序一致。
(4)TCP优缺点:
优点:
1.TCP提供以认可的方式显式地创建和终止连接。
2.TCP保证可靠的、顺序的(数据包以发送的顺序接收)以及不会重复的数据传输。
3.TCP处理流控制。
4.允许数据优先
5.如果数据没有传送到,则TCP套接口返回一个出错状态条件。
6.TCP通过保持连续并将数据块分成更小的分片来处理大数据块。—无需程序员知道
缺点: TCP在转移数据时必须创建(并保持)一个连接。这个连接给通信进程增加了开销,让它比UDP速度要慢。
(5)UDP优缺点:
1.UDP不要求保持一个连接
2.UDP没有因接收方认可收到数据包(或者当数据包没有正确抵达而自动重传)而带来的开销。
3.设计UDP的目的是用于短应用和控制消息
4.在一个数据包连接一个数据包的基础上,UDP要求的网络带宽比TDP更小。
三、C/S架构中的服务端与客户端方案选择
1、服务器需要绑定IP和端口
2、Tcp需要服务器端先开机
边栏推荐
猜你喜欢
随机推荐
STM32项目 -- 选题分享(部分)
Increase 900w+ playback in 1 month! Summarize 2 new trends of top flow qiafan in station B
纽约大学 CITIES 研究中心招聘理学硕士和博士后
unity中跟随鼠标浮动的面板,并可以自适应文字内容的大小
C#/VB.NET 删除Word文檔中的水印
postgresql之整體查詢大致過程
MySQL
Summer Challenge database Xueba notes (Part 2)~
CDB PDB 用户权限管理
6-6 vulnerability exploitation SSH security defense
ODBC database connection of MFC windows programming [147] (with source code)
What are the applications and benefits of MES management system
C语言练习题_1
C#/VB. Net to delete watermarks in word documents
[unity] upgraded version · Excel data analysis, automatically create corresponding C classes, automatically create scriptableobject generation classes, and automatically serialize asset files
The third season of ape table school is about to launch, opening a new vision for developers under the wave of going to sea
dotConnect for DB2数据提供者
记一次JAP查询导致OOM的问题分析
[paper reading | deep reading] dngr:deep neural networks for learning graph representations
用全连接+softmax对图片的feature进行分类