socket 提供的 api 属于库函数还是系统调用?

2020-11-24 23:58:49 +08:00
 chaleaoch
如果是库函数, 那么都调用了哪些(典型的)系统调用实现对 tcp/ip 的封装.

socket 可不可以理解成是 TCP/IP 的一种实现?

还有其他实现吗?
2151 次点击
所在节点    Linux
4 条回复
chaleaoch
2020-11-25 00:03:05 +08:00
原来属于系统调用. 揭帖.
qbqbqbqb
2020-11-27 16:57:25 +08:00
其实应该说 TCP/IP 是 socket 的一种实现。另外还有其它类型的 socket,比如 Linux 里有 Unix Domain Socket,一个协议就可以同时提供本地进程之间的数据流( SOCK_STREAM )、数据报( SOCK_DGRAM )和有序可靠数据报( SOCK_SEQPACKET )服务。

相比之下 TCP/IP 反而是局限性比较强的实现了( TCP/IP 协议族里只有 TCP 协议提供数据流服务,只有 UDP 协议提供数据报服务,两者有不小差别,不能混用,而且不提供有序可靠数据报的服务),奈何它用得广。
tomychen
2020-11-30 16:32:06 +08:00
SOCKET(2) BSD System Calls Manual SOCKET(2)

NAME
socket -- create an endpoint for communication

SYNOPSIS
#include <sys/socket.h>

int
socket(int domain, int type, int protocol);

DESCRIPTION



socket()->__sys_socket()-->sock_create()-->...new_inode()
tadebao
2020-12-01 11:41:40 +08:00
这头像很 ph

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/728902

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX