什么是socket

什么是网络套接字(Socket)?


  Socket是网络上两个程序双向通讯连接的端点


  对于一个Socket而言,它至少需要3个参数来指定:

  1)通信的目的地址;

  2)使用的传输层协议(如TCP、UDP);

  3)使用的端口号。

Socket类型

  套接字类型是指创建套接字的应用程序要使用的通信服务类型。linux系统支持多种套接字类型,最常用的有以下三种:

  1)SOCK_STREAM:流式套接字,提供面向连接、可靠的数据传输服务,数据按字节流、按顺序收发,保证在传输过程中无丢失、无冗余。TCP协议支持该套接字。

  2)SOCK_DGRAM:数据报套接字,提供面向无连接的服务,数据收发无序,不能保证数据的准确到达。UDP协议支持该套接字。

  3)SOCK_RAW:原始套接字。允许对低于传输层的协议或物理网络直接访问,例如可以接收和发送ICMP报文。常用于检测新的协议。


 Socket网络层次


  这部分主要参考自《深入浅出Linux工具与编程》(余国平著)。

  下图画出了套接字位于网络中的层次,它位于传输层以上、应用层以下。Socket编程正是通过一系列系统调用(Socket API)来完成应用层协议(如ftp、http)。

  

  图:套接字层次图

  套接字是对网络中应用层进程之间的通信进行了抽象,提供了应用层进程利用网络协议栈交换数据的机制。

Socket API

  这里的Socket API指的是Berkeley Sockets API

猜你喜欢

转载自blog.csdn.net/qq_34642668/article/details/78552419
今日推荐