本文将介绍
①Socket是什么
②Socket与TCP/IP的关系
③Socket编程中具体接口的用法 Bind() Connect() Accept() etc..
④Socket编程示例(VS2015)下载示例
1. Socket(套接字)是什么
Socket(套接字)是指通讯设备的连接端点,不用于网口、USB端口这样的端点是实质的,套接字是虚拟的,包含了通讯所需的信息的端口。套接字有很多种,本文主要介绍Internet套接字。Internet套接字包含网络通讯必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远程主机的IP地址,远程主机进程的协议端口。
Internet套接字有以下几种:
SOCK_STREAM:流式套接字,提供面向连接的稳定数据流传输,即TCP协议。
SOCK_DGRAM:数据报套接字,使用不连续不可靠的数据包连接,即UDP协议。
SOCK_SEQPACKET:有序分组套接字,提供连续可靠的数据包连接。
SOCK_RAW:原始套接字,允许对底层协议直接访问,如IP/ICMP协议等。
SOCK_RDM:提供可靠的数据包连接。
SOCK_PACKET:与网络驱动程序直接通信。
2. Socket与TCP/IP关系
关于TCP/IP
相信很多人都听过Socket(套接字)和TCP/IP,两者总是一起出现,好似是同一个东西,但我们都知道它们是不一样的,那究竟两者有什么关系Socket包含了连接使用的协议,这个协议指的就是TCP/IP协议族。TCP/IP协议族不只是TCP和IP,它可以详细分为四层,每层上有不同的协议,对应ISO-OSI七层网络模型。
OSI七层网络模型 |
TCP/IP四层概念模型 |
对应网络协议 |
应用层(Application) |
应用层 |
HTTP、TFTP, FTP, NFS, WAIS、SMTP |
表示层(Presentation) |
Telnet, Rlogin, SNMP, Gopher |
|
会话层(Session) |
SMTP, DNS |
|
传输层(Transport) |
传输层 |
TCP, UDP |
网络层(Network) |
网络层 |
IP, ICMP, ARP, RARP, AKP, UUCP |
数据链路层(Data Link) |
数据链路层
|
FDDI, Ethernet, Arpanet, PDN, SLIP, PPP |
物理层(Physical) |
IEEE 802.1A, IEEE 802.2到IEEE 802.11 |
TCP/IP内容非常庞大,此处不展开讲解,后面文章会详细讲解TCP/IP协议族。此处下载《TCP/IP协议详解 - 第五版》 点击打开链接
TCP/IP协议族之间的抽象关系可用下图表示