99.socket编程

navyum / 2024-11-17 / 原文

简介

基本信息:

  • 在内核中,Socket是一个文件,对应一个文件描述符。文件描述符是一个整数,是描述符数组的下标值

  • 每一个进程都有一个数据结构 task_struct,里面指向一个文件描述符数组,表示这个进程打开的所有文件的文件描述符

  • socket 对应的 inode 指向了 Socket 在内核中的 socket 结构

  • socket 结构有两个队列,即发送队列sk_write_queue和接收队列sk_recieve_queue

  • 队列里面保存的是若干缓存 sk_buff,即套接字缓冲区

  • 套接字缓冲区sk_buf里面存储的是包的信息

  • Socket相关结构: 图片

通过socket 数据包发送:

Img

基于TCP 的socket:

图片

基于UDP 的socket:

图片