Socket与TCP的关联与区别

Posted TCP/IP网络编程联盟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Socket与TCP的关联与区别相关的知识,希望对你有一定的参考价值。

在学习TCP/IP编程过程中,我们最常接触到的一个词莫过于Socket,那么Socket又与TCP/IP到底是一个什么关系呢?别名?异或是其它什么……我相信很多初学者虽然每天都在用SOCKET写着自己的程序,但到现在可能也没有彻底搞清楚这个概念,那么今天,我们就一块就这个问题扫扫盲吧!

1、概念的起源

Socket是指一个上面有很多“洞”的东西,比如说,计算机主机板上CPU的插座,我们称其为Socket 478或Socket 939等。

后来,这一概念被移植到了OS的网络系统中,而Socket上面这些洞在传输层中则称为Port, Socket上各共有65536个洞,我们把它称为Port 0、Port 1、Port 2…… Port 65535。

2、类型简介

在OS的网络系统中,所谓socket通常也称作"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,在编程过程中,我们常用的Socket有三种,一是流式Socket(SOCK_STREAM),它是一种面向连接的Socket,针对于面向连接的TCP服务应用;二是数据报式Socket(SOCK_DGRAM),它是一种无连接的Socket,对应于无连接的UDP服务应用,三是原始Socket(SOCK_RAW),它是一种更底层的Socket,可以用来实现类似ICMP等底层的协议。

更通俗的说,TCP/IP是因特网得以实现的标准和规范,也叫协议,为了让更多的程序员能够利用TCP/IP协议方便、快捷的编写出更多稳定、实用的网络应用,这一协议被封装成了Socket,以API的形式提供给广大的Programmers,我们常用的Socket更多的是对TCP/IP模型中的传输层和网络层的封装,我们利用它,不但可以开发出基于TCP或UDP的网络应用,也可以利用它模拟实现上层协议应用,如HTTP、FTP、TELNET……当然,对于那些对TCP/IP有深入研究的人员来说,也可以利用原始Socket来模拟实现ICMP等底层协议。

如果用面向对象的概念来比喻TCP/IP与Socket之间的关联的话,那么TCP/IP相当一个“抽象类”或“接口类”,而Socket就是其派生出来的一个“实现类”,而各类Client和Server应用使用的Socket就是这一实现类的具体“对象”。


以上是关于Socket与TCP的关联与区别的主要内容,如果未能解决你的问题,请参考以下文章

TCP与UDP在socket编程中的区别

http 与 TCP 与 socket 定义,区别

TCP调试助手与TCPSocket区别

HttpTCP/IP协议与Socket之间的区别

socket与http的区别

TCP与UDP在socket编程中的区别