
1 fyyz 2020-01-31 22:21:11 +08:00 socket 是 tcp 连接,http 是建立在 tcp 连接上的 |
2 BingoXuan 2020-01-31 22:31:26 +08:00 根据 osi 分层,socket 属于传输层,http 属于应用层。 就如 socket 是连接你我的管道,但管道中传送东西流程和规范的最佳实践之一就是 http |
3 iceheart 2020-01-31 23:32:52 +08:00 via Android 大概类似快递跟汽车的关系吧 |
4 railgun 2020-01-31 23:46:49 +08:00 附加题,socket 和 tcp 有什么区别和联系? |
5 WordTian 2020-01-31 23:56:18 +08:00 via Android socket 只有选择 INET 系列协议族,且选择流模式,才可能和 http 协议发生联系。就不是一个层次的东西,区别太大,很难并列到一起说的 |
6 jinliming2 2020-02-01 00:35:20 +08:00 via iPhone socket 是一种特殊的文件,这种文件又分为 TCP、UDP、SCTP 等几种类型。 在 C 语言中使用 socket 函数来创建一个 socket,在创建 socket 的时候,参数中需要指明 socket 的类型是 TCP、UDP 还是 SCTP 等。 |
7 jinliming2 2020-02-01 00:38:22 +08:00 via iPhone HTTP 则是 建立在应用层的一种协议,它下面可以是由 TCP 来支撑也可以由 UDP 来支撑,或者在 UnixSock 中也可以使用 HTTP 协议。 也就是说,HTTP 本质上与 TCP、UDP 这些 socket 没有太大的关联。 |
8 xuanbg 2020-02-01 09:11:06 +08:00 http 是应用层传输协议,socket 是计算机利用传输层协议(tcp/udp)建立的链接。先建立 socket,然后才能通 http。如果 http 是集装箱,那 socket 就是铁路。 |
9 andj4cn 2020-02-01 09:37:21 +08:00 socket 只是传输层的统一 API 接口规范。HTTP 是应用层传输协议,应用层的实现基于传输层,在实际代码实现中,HTTP 协议的代码实现需要调用传输层的 API,因此代码中 HTTP 协议实现使用的是 socket。 |
10 qakito 2020-02-01 09:41:27 +08:00 HTTP 是基于 TCP 的应用层协议,由 RFC 定义; socket 是现代操作系统提供的网络通信 API,由 POSIX 定义;所有的网络通信需要通过 API 来完成,包括 HTTP。 另一套网络通信 API 是 sysv STREAMS。 |
11 abug OP @xuanbg 之前被面试的时候,我也是这么说的,我是 http 基于 socket,面试官说(加重语气) http 基于 socket?好像就这个问题那次就 gg 了 |
12 nightwitch 2020-02-01 17:25:53 +08:00 |
13 Xiweini 2020-02-02 14:22:12 +08:00 socket 是 Linux 内核的一个内核功能, Windows NT 里面是叫 Winsock, 用户态中任何和网络有关的功能基本都要有个 system call, call 这个 socket APi |
14 liuxingeyu 2020-02-02 14:54:35 +08:00 socket 简单说就是 ip+port,ip 用来找到主机,port 用来找到程序,这样你的包就能找到主机和程序,再往上加规则就是 tcp 或者 udp 这层的协议,但是这俩响度还是比较抽象。http 就是利用现成的 tcp 或者 udp 再封装一层,本来是用来传超文本的,现在越来越复杂来。。。 |
15 laoheshanjigong 2020-02-02 16:14:07 +08:00 http 是超文本传输协议,是一种应用层协议。 socket 是网络编程中的一种抽象。 所以它们并不是同一类东西。 http: 超文本传输协议,一种应用层协议。 socket: 一种编程抽象。 按照 linux 的 socket 的抽象定义: http://man7.org/linux/man-pages/man2/socket.2.html socket 支持了 本地通讯,ipv4 ipv6, 等等不同网络层协议。 和 tcp upd 等等不同的传输层协议。 socket 屏蔽了这些抽象。使得对于上层的呈现使用同一的语义。 |
16 BlackSnow 363 天前 |