UNIX高级编程【深入浅出】 网络编程

 

目录

SOCKET

网络开发接口

套接字类型

常见套接字类型详解


  1. UNIX为了降低网络编程的难度,秉承着linux风格:一切皆文件,将网络编程抽象了一个文件叫socket
  2. SOCKET

    1. 抽象层,介于应用层和传输层之间的
    2. 有了套接字,网编开发就转化为了io操作
    3. 更多的socket描述man 7 socket
  3. 网络开发接口

    1. socket(2)创建套接字文件
    2. connect(2)与对端的套接字连接
    3. bind(2)将套接字与本地地址绑定
    4. listen(2)使套接字处于监听状态
    5. accept(2)接受对方的连接请求
    6. socketpair(2)返回两个已经连接好的匿名套接字(类似管道)
    7. send(2), sendto(2), sendmsg(2), write(2) 发送数据包
    8. recv(2), recvfrom(2), recvmsg(2), read(2) 接受数据包
    9. getsockopt(2), setsockopt(2)获取、设置套接字选项
    10. close(2)关闭套接字
  4. 套接字地址Socket address structures
    1. 每一个域都有不一样的地址类型,ipv4的地址man 7 ip
  5. 套接字类型

    1. UNIX域套接字
    2. 流式套接字(Stream Socket):SOCK_STREAM
    3. 数据报式套接字(Datagram Socket):SOCK_DGRAM
  6. 常见套接字类型详解

    1. 流套接字(Stream Socket):也称为面向连接的套接字。流套接字基于 TCP 协议,提供可靠的、面向连接的数据传输。它确保数据按顺序到达目标,并进行错误检测和重传。流套接字适用于需要稳定、可靠传输的应用,如文件传输、电子邮件等。在套接字函数中使用 SOCK_STREAM 参数可以创建流套接字。

    2. 数据报套接字(Datagram Socket):也称为无连接的套接字。数据报套接字基于 UDP 协议,提供了一种简单、高效的数据传输方式。与流套接字不同,数据报套接字不维护连接状态,每个数据包独立发送,没有重传机制和数据顺序保证。数据报套接字适用于实时性要求较高的应用,如视频传输、游戏等。在套接字函数中使用 SOCK_DGRAM 参数可以创建数据报套接字。

    3. 原始套接字(Raw Socket):原始套接字提供对网络协议的直接访问,可以自定义协议头和数据包内容。原始套接字通常用于网络测量、嗅探和伪造数据包等需要底层网络控制的场景。使用原始套接字需要特殊权限和较高的网络知识,因为它绕过了操作系统的网络协议栈。在套接字函数中使用 SOCK_RAW 参数可以创建原始套接字。

    4. Seqpacket 套接字(Sequenced Packet Socket):Seqpacket 套接字提供了一种有序、可靠的面向连接的数据传输方式。它在 TCP 的基础上添加了消息边界的概念,保证了消息的完整性和顺序。Seqpacket 套接字适用于需要按消息划分的应用,如多人聊天、实时通信等。在套接字函数中使用 SOCK_SEQPACKET 参数可以创建 Seqpacket 套接字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值