Unix Socket - 什么是socket(套接字)?

作者&投稿:郝卷 (若有异议请与网页底部的电邮联系)
~         套接字允许在相同或不同机器上的两个不同进程之间进行通信。更准确地说,它是一种使用标准Unix文件描述符与其他计算机通信的方法。在Unix中,每个I/O操作都是通过写入或读取文件描述符来完成的。文件描述符只是一个与打开的文件相关联的整数,它可以是一个网络连接、一个文本文件、一个终端或其他东西。

        对于程序员来说,套接字的外观和行为很像底层的文件描述符。这是因为read()和write()等命令使用套接字的方式与使用文件和管道的方式相同。

        socket最初是在2.1BSD中引入的,随后在4.2BSD中被细化为当前的形式。目前大多数UNIX系统版本都提供了套接字特性。

        在CS应用程序框架中使用Unix套接字。服务是一个根据客户端的请求执行某些功能的进程。大多数应用程序级协议,如FTP、SMTP和POP3,都利用套接字在客户机和服务器之间建立连接,然后进行数据交换。

        有四种类型的套接字可供用户使用。前两种是最常用的,后两种很少使用。

        假定进程只在相同类型的套接字之间通信,但没有限制阻止不同类型的套接字之间通信。

         流套接字 ——保证在网络环境中交付。如果您通过流套接字发送三个项目“A, B, C”,它们将以相同的顺序到达-“A, B, C”。这些套接字使用TCP(传输控制协议)进行数据传输。如果无法投递,发送者将收到一个错误指示符。数据记录没有任何边界。

         数据包套接字 ——不能保证在网络环境中交付。它们是无连接的,因为你不需要像在流套接字中那样有一个打开的连接——你建立一个带有目标信息的包并将它发送出去。它们使用UDP(用户数据包协议)。

         原始套接字 ——这些为用户提供对底层通信协议的访问,这些协议支持套接字抽象。这些套接字通常是面向数据包的,尽管它们的确切特征取决于协议提供的接口。原始套接字不是为一般用户设计的;它们主要是为那些有兴趣开发新通信协议或访问现有协议中一些更神秘的设施的人提供的。

         顺序包套接字 ——它们类似于流套接字,不同的是记录边界被保留。该接口仅作为网络系统(NS)套接字抽象的一部分提供,并且在大多数严肃的NS应用程序中非常重要。顺序包套接字允许用户对一个包或一组包操纵序列(SPP)或网络数据包协议数据报协议(IDP)的报头,通过编写一个标准头,连同任何要发送的数据,或者通过指定一个默认的报头使用所有即将输出的数据,并允许用户接收传入的数据包的报头。


章丘市13511115832: socket是什么 -
晨狄迈恩: SOCKET用于在两个基于TCP/IP协议的应用程序之间相互通信.最早出现在UNIX系统中,是UNIX系统主要的信息传递方式.在WINDOWS系统中,SOCKET称为WINSOCK. 两个基本概念:客户方和服务方.当两个应用之间需要采用SOCKET...

章丘市13511115832: socket是什么意思? -
晨狄迈恩: socket(也叫套接字)最初是在Unix系统上开发的网络通信的接口.后来微软等公司将它移植到了windows下,当然原来unix系统下的还是好用的.对于socket可以这样理解:它就是一个函数库,里面包括大量的函数和相应的数据结构,已经实现好了.它支持网络通信.程序开发人员可以通过阅读相关的函数文档,了解函数的使用方法,进行网络的编程.两种形式的socket:流式套接字,对应与TCP协议.数据报套接字,对应与UDP协议.

章丘市13511115832: 什么是Socket? -
晨狄迈恩: 什么是socket? 你经常听到人们谈论着“socket”,或许你还不知道它的确切含义.现在让我告诉你:它是使用标准Unix文件描述符(filedescriptor)和其它程序通讯的方式.什么?你也许听到一些Unix高手(hacker)这样说过:“呀,Unix中...

章丘市13511115832: 什么是socket接口?> -
晨狄迈恩: Socket就是接口的意思. 通常是指插座型的CPU接口. 以前在pentium2的时代还有一种slot插槽型的CPU接口.那样的接口就是像AGP接口差不多的一种接口了.现在已淘汰.

章丘市13511115832: linux 下的 socket 是什么函数 是什么头文件 -
晨狄迈恩: 为网络通信而设计的一套接口,源自加州大学Berkeley分校对UNIX的贡献,socket为系统调用.其中用到的头文件可能很多,建议参考UNIX网络编程

章丘市13511115832: 什么UNIX是套接字? -
晨狄迈恩: 简单说就是socket.我们先来说一说管道.管道由于只能实现具有亲缘进程的进程间通信,使用受到了很大的限制,命名管道解决了这一问题.但是,无论是管道还是命名管道,都只能实现单向通信(在只创建一个管道的情况下).而使用套...

章丘市13511115832: UNIX域socket和管道的区别?
晨狄迈恩: 应该说,这三个没有办法在一起讨论的,UNIX是计算机上的操作系统之一(windowsxp、windows2000也是操作系统);socket在计算机中有很多的含义(网络的数据包、CPU接口的一种、函数的一种);管道在计算机中通常指集成电路(cpu)的一种技术.

章丘市13511115832: socket是tcp还是udp -
晨狄迈恩: SOCKET是Java实现数据通信的API. 这个词语起源于BSD相关的UNIX,程序开发中用于process之间通信的API名称. TCP/UDP是OSI模型的第四层中定义的两种通信方式. 也就是说,SOCKET是API,而TCP/UPD是通信协议,两种根本不同的东西. 语言表达的例子: 用SOCKET实现TCP(或者UDP)通信. (相反,TCP或者UDP通信也可以不使用SOCKET实现)

章丘市13511115832: socket网络通信 -
晨狄迈恩: 检测以下2个内容:1)如果你的计算机上启用了防火墙,确保防火墙允许规定的端口穿过防火墙2)如果从外围到你的计算机经过路由器(网管),请确保路由(网关)允许入境连接(从外网连入内网的计算机称为入境连接)且相应的端口正确映射.例如:【内网】192.168.1.100:8000 【路由器(内网侧)】192.168.1.1:8000 【路由器(外网侧)】202.108.7.17:5881 在外网的计算机上将目标地址设置为 202.108.7.17,目标端口设置为5881

章丘市13511115832: linux unix domain socket 绑定文件有什么用 -
晨狄迈恩: socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIXDomain Socket.虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网