当前位置:网站首页>套接字(Socket)
套接字(Socket)
2022-08-08 22:30:00 【Carry丶】
Socket
概述
应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要 通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分不同应用程序进程间的网络通信和连接。
生成套接字,主要有3个参数:通信的目的IP地址、使用的传输 层协议(TCP或UDP)和使用的端口号。Socket原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输 层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
套接字分类
- 流式套接字。
它提供了一种可靠的、面向连接的双向数据传输服务,实现了数据无差错、无重复的发送。流式套接字内设流量控制,被传输的数据看作是无记录边界的字节流。在TCP/IP协议簇中,使用TCP协议来实现字节流的传输,当用户想要发送大批量的数据或者对数据传输有较高的要求时,可以使用流式套接字。 - 数据报套接字。
它提供了一种无连接、不可靠的双向数据传输服务。数据包以独立的形式被发送,并且保留了记录边界,不提供可靠性保证。数据在传输过程中可能会丢失或重复,并且不能保证在接收端按发送顺序接收数据。在TCP/IP协议簇中,使用UDP协议来实现数据报套接字。在出现差错的可能性较小或允许部分传输出错的应用场合,可以使用数据报套接字进行数据传输,这样通信的效率较高。 - 原始套接字。
该套接字允许对较低层协议(如IP或ICMP)进行直接访问,常用于网络协议分析,检验新的网络协议实现,也可用于测试新配置或安装的网络设备。
socket通信流程
- 服务器根据地址类型(ipv4,ipv6)、socket类型、协议创建socket。
- 服务器为socket绑定ip地址和端口号。
- 服务器socket监听端口号请求,随时准备接收客户端发来的连接,这时候服务器的socket并没有被打开。
- 客户端创建socket。
- 客户端打开socket,根据服务器ip地址和端口号试图连接服务器socket。
- 服务器socket接收到客户端socket请求,被动打开,开始接收客户端请求,直到客户端返回连接信息。这时候socket进入阻塞状态,所谓阻塞即accept()方法一直到客户端返回连接信息后才返回,开始接收下一个客户端连接请求。
- 客户端连接成功,向服务器发送连接状态信息。
- 服务器accept方法返回,连接成功。
- 客户端向socket写入信息。
- 服务器读取信息。
- 客户端关闭。
- 服务器端关闭。
边栏推荐
猜你喜欢
随机推荐
Is the commission for online account opening reliable? Is it safe to open an account with an online account manager?
Unity 双生ScrollView滑动冲突问题
在chrome中呈现RTSP
九大内置对象四大域
pyspark资源配置
求无向简单图的割点与割线的问题(邻接矩阵)
scala排序,排序,排序,sortBy sortWith
PHP7.2开发物流自动拣货机流程
Liquor Daily Question ---- Find the nth Fibonacci number
mysql 忘记root密码后 ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
【硬件通讯协议】SIP总线协议以及模拟(软件)SPI
新安装Laravel Framework 6.18.35 php artisan migrate 报错
2020-03-09
2020-03-09
Mysql数据库身份证统计sql数据库加密等操作
2020-03-09
蚂蚁森林 离线爬虫自动收能量,养小鸡,等各种操作
6.8.3 sigqueue函数
你的下一台电脑何必是电脑,探索不一样的远程操作
免费ARP