Ty-Chen's Home

Collecting, sharing and creating knowledge


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

Linux操作系统学习笔记(二十二)网络通信之发包

发表于 2020-08-06   |   更新于 2020-10-09 | 分类于 Linux操作系统内核学习 |
字数统计: 6k | 阅读时长 ≈ 29

一. 简介

  本文将分析网络协议栈发包的整个流程,根据顺序我们将依次介绍套接字文件系统、传输层、网络层、数据链路层、硬件设备层的相关发包处理流程,内容较多较复杂,主要掌握整个流程即可。

阅读全文 »

Linux操作系统学习笔记(二十一)网络通信之三次握手

发表于 2020-08-01   |   更新于 2020-08-18 | 分类于 Linux操作系统内核学习 |
字数统计: 3.8k | 阅读时长 ≈ 18

一. 前言

  三次握手的基本知识在前文中已说明,本文从源码入手来详细分析其实现原理。

阅读全文 »

Linux操作系统学习笔记(二十)网络通信之TCP协议

发表于 2020-07-24   |   更新于 2020-08-18 | 分类于 Linux操作系统内核学习 |
字数统计: 11.1k | 阅读时长 ≈ 38

一. 前言

  自TCP诞生以来就改变了网络通信的格局,而TCP协议随着网络基础设施的发展也在一路演进,形成了如今庞大复杂的TCP协议簇。如何深入理解TCP的设计理念以及几十年以来TCP协议的演进,有利于更好地了解网络编程。很多人不懂TCP,很多人了解并会用TCP但不知道其设计理念,但是这些才是网络编程的精粹所在。本文旨在从设计思路出发,更多的分析为什么要这么做而不是TCP是怎么做的,但是碍于自身水平所限,可能视野较为狭隘,疏漏错误之处请不吝指正。本文阅读的前提要求至少学习过《计算机网络》,看过《TCP/IP详解》及相关的RFC文档更佳。

阅读全文 »

Linux操作系统学习笔记(十九)网络通信之套接字

发表于 2020-07-21   |   更新于 2020-08-01 | 分类于 Linux操作系统内核学习 |
字数统计: 3.9k | 阅读时长 ≈ 17

一. 前言

  在前面我们逐一分析了进程间通信的各种方法:信号,管道,共享内存和信号量,本文开始将分析更为复杂也是更为常用的另一套进程间通信:网络通信。网络通信和其他进程间通信最大的区别在于不局限于单机,因此成为了互联网时代的主流选择,无论是分布式、云计算、微服务、容器及自动化运营都离不开网络通信,其重要性可想而知。

  经过30多年的发展,网络协议栈已经变得极为复杂,远远不是一两篇文章能够说清楚的东西,所以这里着重剖析我们更为关注的东西:网络编程涉及到的相关协议栈。从本文开始,将分别介绍套接字及其创建、网络连接的建立、网络包的发送、网络包的接收、Netfilter剖析、select, poll 及 epoll剖析。除此之外,介于之前有新同学请教TCP的一些基础问题,打算写一篇扩展篇从设计理念的角度出发好好分析TCP协议的方法面面。

阅读全文 »

Linux操作系统学习笔记(十八)进程间通信之共享内存和信号量

发表于 2020-07-17   |   更新于 2020-07-21 | 分类于 Linux操作系统内核学习 |
字数统计: 6.2k | 阅读时长 ≈ 30

一. 前言

  本文为进程间通信的最后一篇,介绍共享内存和信号量。之所以将二者一起叙述,是因为二者有着密不可分的关系。共享内存会利用虚拟内存和物理内存的映射关系,让不同进程开辟一块虚拟空间映射到相同的物理内存上,从而实现了两个进程对相同区域的读写,即进程间通信。而信号量则实现了互斥锁,可以为共享内存提供数据一致性的保证,因此二者常结合使用。

阅读全文 »

Linux操作系统学习笔记(十七)进程间通信之管道

发表于 2020-07-12   |   更新于 2020-07-18 | 分类于 Linux操作系统内核学习 |
字数统计: 3.1k | 阅读时长 ≈ 13

一. 前言

  上文中我们介绍了进程间通信的方法之一:信号,本文将继续介绍另一种进程间通信的方法,即管道。管道是Linux中使用shell经常用到的一个技术,本文将深入剖析管道的实现和运行逻辑。

阅读全文 »

Linux操作系统学习笔记(十六)进程间通信之信号

发表于 2020-07-09   |   更新于 2020-08-01 | 分类于 Linux操作系统内核学习 |
字数统计: 6k | 阅读时长 ≈ 26

一. 前言

  众所周知,System V IPC进程间通信机制体系中有着多种多样的进程间通信方式,如管道和有名管道,消息队列,信号,共享内存和信号量,套接字。从本文开始我们就逐个剖析进程间通信的机制和底层原理,就从信号开始讲起吧。

阅读全文 »

Linux操作系统学习笔记(十五)中断

发表于 2020-07-05   |   更新于 2020-12-16 | 分类于 Linux操作系统内核学习 |
字数统计: 3.8k | 阅读时长 ≈ 16

一. 前言

  在前面的文章里,我们多次见到了中断的作用,如任务调度,系统调用从用户态陷入内核,文件系统的读写操作等。本文就Linux的中断机制进行较为全面的剖析。

阅读全文 »

Linux操作系统学习笔记(十四)块设备

发表于 2020-06-27   |   更新于 2020-07-19 | 分类于 Linux操作系统内核学习 |
字数统计: 7.4k | 阅读时长 ≈ 34

一. 前言

  上文我们分析了字符设备,本文接着分析块设备。我们首先分析块设备的基本结构体,然后分析块设备生成、加载的整个过程,最后分析块设备的直接I/O访问和缓存I/O访问。

阅读全文 »

Linux操作系统学习笔记(十三)字符设备

发表于 2020-06-24   |   更新于 2020-07-18 | 分类于 Linux操作系统内核学习 |
字数统计: 4.2k | 阅读时长 ≈ 17

一. 前言

  上文中我们分析了虚拟文件系统的结构以及常见的文件操作从用户态到虚拟文件系统再到底层实际文件系统的过程。而实际上我们并没有说明实际的文件系统如ext4是如何和磁盘进行交互的,这就是本文和下篇文章的重点:I/O之块设备和字符设备。输入输出设备我们大致可以分为两类:块设备(Block Device)和字符设备(Character Device)。

  • 块设备将信息存储在固定大小的块中,每个块都有自己的地址。如硬盘就是常见的块设备。

  • 字符设备发送或接收的是字节流,而不用考虑任何块结构,没有办法寻址。如鼠标就是常见的字符设备。

  本文首先介绍虚拟文件系统下层直至硬件输入输出设备的结构关系,然后重点分析字符设备相关的整体逻辑情况。

阅读全文 »
1…3456
Ty Chen

Ty Chen

56 日志
10 分类
88 标签
GitHub E-Mail
Friends
  • Stanleylsx
© 2020 — 2025 Ty Chen | Site words total count: 208.1k 粤ICP备20071543号
你是来访的第 位同学 访问次数: 次