- 博客(16)
- 收藏
- 关注
原创 Linux启动第4部分讲解
作者:LLX 代码路径: linux-4.6\linux-4.6\arch\x86\kernel\head_32.S 1、startup_32 1.1、赋值堆栈 这个主要的作用是赋值对应的堆栈,给esp重新的指针,以及如果再bootflag的标志keep_segments里面看是不是进入32要重新初始化段寄存器, 1.2、clear bss段,以及复制boot_param 这段代码主要功能是最开始把bss段的内容设置为0,这里面bss_start到bss_stop表示bss段这一部分的地址 这个地址是
2022-04-18 17:36:43 977
原创 Linux启动第3部分讲解
作者:LLX 文件:linux-4.6\linux-4.6\arch\x86\boot\compressed\ head_32.S 1、startup_32 在136设置si与di的方向,然后判断boot的segment的flag表示是否要把ds的描述符放入到ds,es,fs,gs,以及ss里面了 这个esi储存的是boot_params,然后这个bp_scratch等于用于堆栈了,然后call 1f表示先把ip寄存器放入到堆栈里面,然后执行pop,这个就是吧对应执行地址放入到ebp了,然后ebp减去1
2022-04-18 17:20:18 838
原创 TCP详解之tcp第一部分
作者:LJX 在ip之后的要么是udp,要么是tcp,之前讲了udp,现在来讲讲tcp的内容 tcpip的层次图 数据包进行ip解析了之后如果发现ip报文头里面的协议内容是TCP,那么就按照tcp的协议去解析,举个例子:收到一个100字节的数据,最开始解析mac,然后发现mac的头部字段里面说明后面的内容按照ip格式排序,那么就按照ip格式解析,解析了ip头部发现后面的内容按照tcp的内容来排序,那么再按照tcp的格式来排序 这个是整体的数据格式,可以看到tcp在ip头部之后,先解析ip再解析tcp的内容
2022-03-22 22:14:47 658
原创 linux内核启动系列第2篇(Linux内核启动第2部分)
作者:LLX 文件路径: linux源码\linux-4.6\linux-4.6\arch\x86\boot\Main.c 1、主函数main函数 现在看这个main函数, 2、第一个函数copy_boot_params函数 这个函数主要功能是吧hdr里面的参数赋值到boot_params.hdr里面如果是老的boot就设置boot传送参数的地址,如果是新boot就不用设置 这个主要的功能是43行,就是吧hdr内存里面的数据复制到boot_param里面 3、console_init函数 这个函数的最
2022-03-16 19:02:08 2084
原创 linux内核启动系列第一篇(Linux内核启动第一部分)
Linux内核启动第一部分 作者:LLX linux内核版本4.6 个人兴趣爱号,分析内核源码实现 大家有问题可以提出来,对应的代码以及文章到时候会在gitee上面开放给大家 1、代码过程分析 从最开始的bzImage构成来看,第一部分先执行setup.bin这个文件,这个文件由setup.elf文件构成,那么看看对应的setup.elf文件由哪些构成 linux内核编译链接脚本 在产生这个文件的时候用的连接脚本是setup.ld,连接对应的很多.o文件 现在来看看对应的setup.ld文件的具体内容:
2022-03-13 17:50:39 1518
原创 TCPIP详解之udp
TCPIP详解之udp 在我们之前学习了ip,arp协议之后,现在来看看udp协议的内容 这个是用wireshark抓到的对应的数据包,wireshark功能再这里不进行讲解,有兴趣请百度wireshark软件 吧对应其中一个数据包用wireshak进行解析可以看到先是二层mac,然后是三层ip,再是udp,最后是一个数据data 数据报文格式 举个例子:小明收到一条数据,先按照mac格式吧mac解析了,然后再按照ip格式吧ip解析了,然后再去按照udp格式解析udp,之后得到对应的数据内容 我们现在
2022-03-13 17:34:38 3019
原创 tcpip详解卷一arp 地址解析协议
大家回顾一下以太网数据包的格式 图4-1以太网包 那么有个问题,比如想要发送报文内容为你好,到ip为192.168.1.2的电脑,那么怎样知道对应的mac为多少?这个时候就是arp协议来从ip地址获取对应的mac 图4-2arp报文格式 这个是arp请求格式,这里说明一下,arp协议也属于以太网数据包,现在来一个个分析每个格式 1、以太网目的地址:因为不知道对端的以太网目的地址,所以这里填写全ff 2、源地址,填写发送端的以太网mac地址 3、帧类型:大家记得如果为IP报文应该填写0800,这里为arp
2020-05-31 10:29:00 338
原创 程序员自我修养第三章解析(1)
图3-1ELF之间关系 Linux的ELF文件包括.o文件,可执行文件,以及动态库,静态库,.o文件进一步加工可以变成.so动态库,可执行文件以及.o文件打包可以变成.a静态库 现在来分析对应.o里面的具体内容 有个模板函数 图3-2模板函数 这个函数是简单实现了打印对应整数功能,对这个函数进行编译得到对应的.o gcc -m32 -c test.c 这个时候的.o叫做可重定向文件,不是可执行文件,现在先来分析一下这个可重定向文件的具体架构,晚点在进行分析其他类型,其他类型也属于ELF,结构上一样,只是.
2020-05-24 16:58:37 486 1
原创 Tcpip详解卷一第3章(2)
在第一章的时候与大家讲解过IP地址分为以下几类,现在来看看具体 图3-1IP地址分类 网络号与主机号的概念: 图3-2公司架构图 来看有一家公司,有5个不同的部门(5类IP),比如现在研发又有3个子部门(网络号),在子部门里面有对应的员工(主机)。现在给每个员工配置一台电脑,给研发部门的同事分配A类网络,那么对应的网络号就有27=128(这里大家可以看到网络号有7位,那么最多就是1111111,也就是27),以部门不同的子网络来划分不同的网络号,那么研发下面就能有128个子部门(现在只有3个,可以新增手
2020-05-13 21:51:01 349
原创 tcpip详解卷一第3章(1)
本文讲解tcpip卷一第3章第一部分IP头部,现在回顾一下前一篇 图3-1手机快递图 大家可以看到快递包装对比的是以太网,手机包装对比的就是IP了,来看一下IP层的位置以及内容, 大家可以看到黄色方框表示数据包传送的格式,最外层是mac的目的地址,以及源地址,然后是type数据类型,然后是数据,我们把数据在细分一下,可以看到IP层由IP头部以及IP数据构成,整个数据从链路层来看是数据,在IP层细分又是不同格式,打个比方:湖南省从国家来看就是一个省,不过省里面也区分头部(长沙),以及其他的内容(衡阳,以及其
2020-05-11 22:50:22 242
原创 《程序员的自我修养》第2章解析
在讲解.C代码变成可执行文件的过程之前先来简单介绍汇编。 比如有个汇编语句: mov ax,bx **计算机执行这条指令的含义是把bx寄存器里面的数据放入ax寄存器里面,(ax与bx你可以先认为是CPU存放数据的地方,mov是CPU执行的一个动作),汇编是最接近机器的语言,**为什么这么说, 在芯片公司会有一份手册,对应的汇编指令与对应二进制列表 ...
2020-05-09 23:31:32 551
原创 《tcpip详解》卷一第2章
大家可以看到这张图最下面的是链路层,现在先从链路层开始讲起 图2-1网络分层 现在举个例子:大家平时的时候都有买手机,你买的新手机送到你手上的时候,不是一个手机把,是一个快递,你再把这个快递打开,是手机盒把,然后打开手机盒就是对应的手机了。 * 图2-2手机快递 如果把手机当作数据,那么最后发送的数据是经过包装之后发送的,最外层的一层包装是数据链路层的包装,比如京东有京东的包装风格,韵达有韵达的包装风格,(举另外例:也可以认为链路层是一个职位:再链路层这个职位上面有以太网这个人,或者叫做ieee802这个
2020-05-08 22:25:20 293
原创 《程序员的自我修养》解析第一章
最开始毕业的时候,看这本书完全不懂它的意思,主要原因还是因为读书的时候没有接触过对应项目,现在给大家一章一章的分析对应的内容。 如果不是程序员那么对程序的概念大概是windows上面的后缀exe文件,比如pps.exe,这些,在手机上面有对应的app文件。程序是运行在电脑上面,那么程序要适应电脑的架构这样才能运行起来,就好像人一样,人有了四肢,大脑这些,还要有灵魂才可以,软件就像灵魂,硬件就像四肢...
2020-05-07 22:11:37 1058
原创 《TCPIP详解》卷一系列解读
TCPIP详解卷一系列解读 以前在读书的时候学的是电子通信工程,对tcpip以及linux完全不了解, 后面发现不只是本专业不了解,很多计算机网络专业的学生也没有了解,估计大学耍水耍的太牛了,想写一些文章让大家在计算机网络以及linux方面有个了解,本人认为学习不是为了考试,而是解决一些问题。 本公众号系列文章主要分2个部分,一个tcpip协议栈方向,从原理讲到代码(用的书籍是tcpip详解卷一第...
2020-05-07 21:57:47 1877
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人