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 1
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 3
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
liuxingdeyu 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 屏蔽了这些抽象。使得对于上层的呈现使用同一的语义。 |