什么是套接字
来源:互联网 发布:草图大师 mac 破解 编辑:程序博客网 时间:2024/04/29 21:42
“套接字”或者“插座”(Socket)也是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。针对一个特定的连接,每台机器上都有一个“套接字”,可以想象它们之间有一条虚拟的“线缆”。线缆的每一端都插入一个“套接字”或者“插座”里。当然,机器之间的物理性硬件以及电缆连接都是完全未知的。抽象的基本宗旨是让我们尽可能不必知道那些细节。
区分不同应用程序进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket原意是 “插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
Socket可以看成在两个程序进行通讯连接中的一个端点,是连接应用程序和网络驱动程序的桥梁,Socket在应用程序中创建,通过绑定与网络驱动建立关系。此后,应用程序送给Socket的数据,由Socket交给网络驱动程序向网络上发送出去。计算机从网络上收到与该Socket绑定IP地址和端口号相关的数据后,由网络驱动程序交给Socket,应用程序便可从该Socket中提取接收到得数据,网络应用程序就是这样通过Socket进行数据的发送与接收的。
常用的TCP/IP协议的3种套接字类型如下所示。
流套接字(SOCK_STREAM):
流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议。
数据包套接字(SOCK_DGRAM):数据包套接字提供了一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据包套接字使用UDP(User Datagram Protocol)协议进行数据的传输。由于数据包套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。
原始套接字(SOCK_RAW):原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据包套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据包套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送数据必须使用原始套接字。
- 什么是套接字(Socket)?
- 什么是套接字
- 什么是套接字Socket
- 什么是套接字
- 什么是套接字?
- 什么是套接字(Socket)?[转]
- 什么是套接字Socket详解
- (转)什么是套接字(Socket)?
- (转)什么是套接字(Socket)?
- (转)什么是套接字(Socket)?
- (转)什么是套接字(Socket)?
- 什么是套接字(Socket)
- 计算机网络:什么是套接字(Socket)?
- 什么是套接字(Socket)?套接字(Socket)是什么意思?(转载)
- 什么是套接字(Socket)?套接字(Socket)是什么意思?(转载)
- 什么是套接字(Socket)?套接字(Socket)是什么意思?(转载)
- 什么是安全套接字层技术
- 什么是安全套接字层技术
- HTML5 离线功能详解 - 构建 Offline Web Application
- VB的常用内部控件简介
- 职场攻略:加班族避免常加班不妨试试被潜
- java图片局部透明
- 用keytool生成证书过程
- 什么是套接字
- #R#barplot
- 数据库设计中的14个技巧( 转)写的真好,怕文章找不见了,留存
- 11种致命的“电脑病”症状及缓解方法
- javascript生成UUID的两种方式
- Linux进程间通信(三): 消息队列
- linux下du和df命令的区别 ---检查文件资源是否被释放
- 软件随想录(local.joelonsoftware.com/wiki)-2000年04月06日 你绝对不应该做的事 之一 - Things You Should Never Do, Part One
- 网页中支持浏览器比较完美的一个播放器例子