LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭
Socket(套接字)
jiaxin2015 2022-03-10
  1. 1、定义

    所谓套接字(socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字,上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口。

Socket是由IP地址和端口结合的,提供向应用程序传送数据包的机制。

2、简介

    套接字是通信的基石,是支持tcp/ip协议的路通信的基本操作单元。

    可以将套接字看做不同主机间的进程进行双间通信的端点,它构成了单个主机内及整个网络间的编程界面。

    套接字通常和同一个域中的套接字交换数据(要穿越域,需要某种解释程序),各种进程使用这个相同的域互相之间用internet协议簇来进行通信。

    它是网络环境中 进程间通信 的API(应用程序编程接口),也是可以被命名和寻址的通信端点,使用中的套接字都有其类型和一个与之相连的进程。

    通信时其中一个网络应用程序将要传输的一端信息写入他所在的主机的socket中,该socket通过与 网络接口卡(NIC)相连的传输介质将这段信息传送到另外一台主机的socket中,使对方能够接受到信息。

3、表示方法:

    套接字socket=(ip地址:端口号),套接字的表示是点分十进制的ip地址加上端口号,中间用逗号或冒号分开。

4、主要类型:

    1.流套接字:

        用于提供面向连接、可靠的数据传输服务。使用了传输控制协议,即tcp协议。

    2.数据报套接字

        提供了一种无连接的服务。数据报套接字使用UDP协议进行数据传输。

    3.原始套套接字

        原始套接字可以读写内核没有处理的ip数据包,而流套接字只能读取tcp协议的数据,数据报套接字只能读取UDP协议的数据。因此,访问其他协议发送的数据必须使用原始套接字。

5、工作流程

要通过互联网进行通信,至少需要一对套接字,其中一个运行于客户端,我们称之为Client Socket,另一个运行在服务器端,我们称之为Sever Socket。

根据连接启动的方式以及本地套接字要连接的目标,套接字直接的连接可以分成3个步骤:

  1. 服务器监听

    是指服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

  2. 客户端请求

     是指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。因此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器套接字的地址和端口号,然后就向服务器端接字提出连接请求。

  3. 连接确认

    指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,就会影响响应客户端套接字的请求,建立一个新的线程,并把服务器daunt套接字的描述发给客户端。一旦客户端确认了次描述,连接就建立好了。而服务器端继续监听。

6、主要特点

    面向连接服务 

        必须建立连接、维护连接、和释放连接3个阶段。

        传输过程中,各分组不需要携带目的主机地址。

        可靠性好,但由于协议复杂,通信效率不高。   

    面向无连接服务

        不需要连接各个阶段

        每个分组都需要携带目的主机地址,在系统中单独传送。

        由于没有顺序控制,所以接收方的分组可能出现乱序、重复和丢失现象

        通信效率高,单可靠性不能确保。

推荐文章
评论(0)
分享到
转载我的主页