
Linux
文章平均质量分 91
Linux学习之路
大时代1105
这个作者很懒,什么都没留下…
展开
-
Reactor
Reactor类似于一种Connection的容器,当底层事件就绪,进行事件派发,让不同的Connection的去处理事件Reacotr是基于事件驱动的网络服务器设计的主流模式。原创 2025-02-12 22:03:47 · 899 阅读 · 0 评论 -
多路转接-
我们往标准输入里输入的数据是有序的,只不过一旦标准输入有数据,OS就会拷贝一份给标准输出,这也称为"回显",同时,进程也往标准输出发送数据,所以标准输出刷新到显示器上时,数据混杂在一起。对于现在的CPU,拷贝的速度非常快,关键在于"等",如果数据,就要一直等,所以,高效的IO就是单位时间内降低等的比重。要想提高IO的效率,就要降低单位时间内等的比重,于是,就有专门的系统调用来帮我们"等",等底层数据就绪了,再通知上层,这样。上的新事件就绪,通知上层,可以进行拷贝了,这里的新事件指的是底层有数据/空间了。原创 2025-01-23 14:43:19 · 777 阅读 · 0 评论 -
NAT && 代理服务器
其次,在云服务器上部署一种服务,该服务将所有发送到云服务器指定端口的报文全部转交给B,由B处理报文并将应答返回给云服务器,再由云服务器将应答返回,这样就完成了两个私网之间的通信,我们把这种技术叫做内网穿透。以Windows作为client,连接云服务器上的服务,发送消息,将源主机的IP地址打印出来,会发现打印出来的IP地址与Windows主机的IP地址不同。有时,我们也需要远程办公,比如B是你家中的主机,A是你在出差地的主机,这样就能在远方访问到家中的主机,完成工作。原创 2025-01-10 15:49:50 · 1071 阅读 · 0 评论 -
数据链路层
如果发送的报文长度过长,占用局域网的时间也就越长,其他主机也更有可能在这时发送报文,发生碰撞的概率也就越高,这也是为什么数据链路层要限制IP数据报的最大长度,有MTU的原因,从而需要IP进行分片,TCP进行滑动窗口内数据多次分发。局域网内的主机经过多轮通信,交换机知道了所有主机的位置后,此时A要给D发送报文,交换机收到后,判断D在i0侧,于是不会将报文通过i1接口转发出去,C给E发送报文,也不会被转发给i0侧,于是A->D,C->E就在同一时刻完成了通信。同一局域网中的主机能直接通信吗?原创 2024-12-30 19:29:35 · 1110 阅读 · 0 评论 -
ip-协议
这时,网络层就对传输层说了,如果你给我交付的数据过大,我必须得进行分片,这样会导致丢包概率变大,从而你就要超时重传,对双方都是不利的;IP报文的总长度可能16位的,最大可能2^16字节,此时用13位偏移量来表示后面分片的偏移量,是存不下的,因此,13位偏移量真实存的值是偏移量 >> 3,这也是为什么偏移量必须是8的倍数。负责人一定知道每个院的负责人是谁,也知道每个院的院号,根据按位与的结果,判断学生一定是计院的,于是就交给计院的负责人,计院的负责人在它们的计院群通知,于是,学生证也就物归原主了。原创 2024-12-26 20:53:54 · 1077 阅读 · 0 评论 -
udp && tcp协议
拿上图举例,如果最左边报文丢失,接收方在对其他报文进行应答时,根据确认序号的定义,只能填0,因为1000的报文没收到,当发送方收到3个以上的相同应答,触发快重传机制,立即补发1000的报文,接收方可以直接ACK4001,表示4000之间的报文已经收到。通信模式中,常见的是第二种,多个报文一并发送时,由于报文是经过网络传输的,它们走的线路不同,到达对方主机的时间也就不同,也就意味着发送的报文可能是有序的,但接受时可能是无序的,此时,OS会根据报文的序号来排序,确保向上层交付的数据是有序的。原创 2024-12-24 20:21:47 · 1192 阅读 · 0 评论 -
http协议
将明文通过密钥转换成密文的过程就称为加密将数据进行哈希算法,形成一串几乎具有唯一标识字符串,将该字符串就成为数据摘要或者数据指纹如果原来的数据被修改,哪怕是一点点,经过同样的哈希算法所形成的字符串一定不一样,可以借此判断原数据是否被篡改数据摘要的应用:云盘的秒传功能用户数据的存储。原创 2024-12-23 09:27:04 · 1026 阅读 · 0 评论 -
应用层自定义协议
实际上,一次发送的数据不一定是一条,有可能是不到一条或多条,同理,从接受缓冲区读上来的数据也可能不是一条,我们就需要对读上来的数据进行处理,确保它是一条报文。库来进行,如果要我们自己实现,原则上需要处理各种数据,但这里我们简单化,只是为了帮助我们理解序列化与反序列的过程,在工作中,我们也不会手动序列化和反序列。当数据放到接受缓冲区中,用户就不再需要管这些数据了,至于数据如何发送,一次发送多少,发送错误怎么办,这些问题都交给传输层决定,这也是为什么。当获取新的连接,创建线程,让线程。原创 2024-12-07 16:10:49 · 795 阅读 · 0 评论 -
Socket编程-tcp
在tcp套接字编程这里,我们将完成两份代码,一份是基于tcp实现普通的对话,另一份加上业务,client输入要执行的命令,server将执行结果返回给client。原创 2024-12-06 11:38:11 · 1046 阅读 · 0 评论 -
Socket编程-udp
最先使用udp进行socket编程,最直接的原因就是因为udp简单,方便我们快速熟悉socket各种系统调用我们一共会完成三份代码,第一份我们会实现两台主机之间的简单聊天系统;第二份在第一份的前提下,我们加上一个翻译的业务,当client向server发送一个英文单词,server会给client返回该单词的中文意思;第三份在第一份的前提下,实现简单的群聊系统。原创 2024-12-03 12:20:14 · 1039 阅读 · 0 评论 -
Linux 网络基础
我们也可以尝试从操作系统的角度理解局域网通信:所有主机的数据是发向以太网的,这里的以太网是不是就相当于操作系统中的临界资源,任何时刻,只能有一台主机向网络中发送数据,不就相当于任何时刻只能有一个线程访问临界资源,因此需要对临界资源加锁,对应网络中我们需要进行碰撞检测和碰撞避免。这好比上课时,老师说:“A,你起来回答这个问题”,此时,班里的所有同学都收到这条信息,每个同学将信息的目的地址与自身对比,发现不是自己,也就不做处理,而A做对比之后,发现是自己,于是做出回应。原创 2024-12-04 11:14:25 · 763 阅读 · 0 评论 -
Linux进程控制篇
进程 = 内核的相关管理数据结构(tack_struct + mm_struct + 页表) + 代码和数据由于进程具有独立性,父子进程的内核数据结构各自独有一份;代码是可读的,父子共享;数据根据写时拷贝,分配给子进程一个进程,在内存中,先有它的内核数据结构,再有它的数据和代码。原创 2024-04-16 16:12:51 · 1020 阅读 · 0 评论 -
Linux 进程信号篇
此时,该进程的时间片到了,要进行进程切换,我们知道进程切换最重要的就是寄存器需要保存和恢复进程的上下文数据,它也照常这样做,将10和0保存好,下次调度时再恢复,这时大家就应该明白了,下次调度时,运算的还是10/0,溢出标记位置1,OS向进程发送信号,如此往复,就出现了死循环打印。以我们现在的知识,理解上面的问题十分容易,程序崩溃是因为我们进行了非法的访问或操作,OS向进程发送了信号,该信号的默认动作是终止进程,因此我们的程序直接退出了,最典型的有Floating-point exception(原创 2024-06-30 15:35:59 · 1218 阅读 · 0 评论 -
Linux 基础IO篇
函数以w而Linux中输出重定向的行为跟fopen以w的方式打开文件类似,追加重定向>>跟a的方式类似,由此我们知道和>>一定是进行了文件操作,它们之间有啥关系?这是我们接下来要讨论的问题。原创 2024-05-06 23:26:51 · 1358 阅读 · 0 评论 -
Linux工具篇
makefile会从上往下执行代码,如果某段代码没有对应的依赖文件,会暂时记录该代码,往下寻找对应的依赖文件,最后再依次返回,有点像递归的操作;想要在内存和文件之间传输数据,一次传输的数据量越多,传输的次数越少,传输的效率也就越高,而如果传输的数据过多,又不方便我们阅读,因此以行作为刷新缓冲区的标志是一种即提高效率,又方便阅读的做法。答案是否定的,在Linux中也是如此,想要下载的软件包在机器的远程服务器上,yum通过本地的yum源找到远程服务器,再在服务器中找到对应的软件包,下载到本地机器,再安装下来。原创 2024-03-03 23:31:45 · 1128 阅读 · 1 评论 -
Linux权限篇
生活中,有些事情你不能做,别人能做,这叫别人有做某事的权限;Linux中,权限的概念也是类似的,特指通过一定的条件,拦住一部分人,给另一部分人权限去访问资源。原创 2023-12-11 23:42:02 · 946 阅读 · 4 评论 -
Linux中shell的运行原理
有时,用户输入的命令有非常多的错误,且一直在重复,可能会导致外壳程序本身崩溃,为了防止这种情况,外壳程序是怎么做的?在Linux中,每次输入命令时,前面都会出现一串字母,我们称之为命令行提示符。前面我们提到过,在Linux中,一切皆文件,所谓的命令就是一个可执行程序。实际上,命令行提示符是一种外壳程序。外壳程序介于用户和操作系统之间。原创 2023-12-02 16:20:32 · 702 阅读 · 0 评论 -
Linux基础指令
【语法】ls + 目录/普通文件。原创 2023-11-29 23:31:28 · 2172 阅读 · 7 评论