HTTP
发送格式:

响应格式:

2024年3月31日...大约 16 分钟
在配置完git公钥之后,首次使用git从仓库拉取代码时,都会有如下提示:
问题:
在内核中,Socket是一个文件,对应一个文件描述符。文件描述符是一个整数,是描述符数组的下标值
每一个进程都有一个数据结构 task_struct
,里面指向一个文件描述符数组
,表示这个进程打开的所有文件的文件描述符
socket 对应的 inode 指向了 Socket 在内核中的 socket 结构
socket 结构
有两个队列,即发送队列sk_write_queue和接收队列sk_recieve_queue
队列里面保存的是若干缓存 sk_buff
,即套接字缓冲区
套接字缓冲区sk_buf
里面存储的是包的信息
Socket相关结构:
内核缓冲区
又叫做Linux系统的Page Cahe
。
为了加快磁盘的IO,Linux系统会把磁盘上的数据以 Page为单位缓存在操作系统的内存里,这里的Page是 Linux 系统定义的一个逻辑概念,一个Page一般为4K
整个过程有四次数据拷贝,读进来两次,写回去又两次:
同步进行
的。如果内核实现的拷贝效率很差,read调用就会在这个同步过程中消耗比较长的时间。BIO
:1上阻塞2上也阻塞的是同步阻塞IONIO
:1上非阻塞2阻塞的是同步非阻塞IO,Reactor就是这种模型AIO
:1上非阻塞2上非阻塞是异步非阻塞IO,Proactor模型就是这种模型MAC层
定义了本地局域网设备
的传输行为IP层
定义了整个网络端到端
的传输行为传输层
定义应用程序到应用程序
的传输,基于端口区分MAC层叫帧
Frame,IP层叫包
Packet,包被分片后叫Fragment,传输层叫段
SegmentIP to IP
设备 to 设备
下一跳的地址
工作原理:无脑广播,不管你需不需要,收到数据包就广播