
Linux
little fairy
这个作者很懒,什么都没留下…
展开
-
【Linux】http和https协议
http协议和https协议都是应用层协议。http:超文本传输协议https:安全的超文本传输协议。在http协议基础上加入了SSL协议保证安全传输。HTTP协议和HTTPS协议主要应用于Web浏览器和网站服务器之间传递数据,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适...原创 2020-03-02 10:59:16 · 870 阅读 · 1 评论 -
【Linux】四次挥手
客户端和服务器通过close()四次挥手断开连接。关闭连接的过程为四次挥手,由于TCP是全双工的通讯。所以每个方向都必须单独进行关闭。当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向上的连接。收到一个FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能继续发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。第一次挥手:断开连接时,客户端向服务...原创 2020-03-02 00:02:16 · 427 阅读 · 0 评论 -
【Linux】三次握手
客户端connect()向服务器发起连接,客户端和服务器通过三次握手建立连接,被服务器listen()开机后监听到后将套接字放到listen()已完成三次握手队列中。第一次握手:建立连接时,客户端向服务器发送SYN报文(seq = j),并进入SYN_SENT状态,等待服务器确认。第二次握手:服务器收到SYN报文,必须确认客户的SYN(即发送ACK报文,ack = j+1),同时自己也发送...原创 2020-03-01 22:32:40 · 619 阅读 · 0 评论 -
【Linux】静态库和动态库
库:预先编译(.o)好的方法的集合Linux下,库分为静态库和共享库。库的生成静态库:库名:Libxxx.a,lib是库的前缀,xxx是库名,.a为静态库的后缀。第一步:将需要生成静态库的.c文件转换为编译后的.o文件命令:gcc -S mian.o mian.c第二步:将编译完成的.o文件放到一个集合中,生成静态库命令:ar cr(v,可以没有) libx...原创 2020-03-01 20:02:42 · 614 阅读 · 0 评论 -
【Linux】进程和线程
程序:存储在磁盘上的二进制可执行文件。进程:一个正在运行的程序,是系统进行资源分配的基本单位。线程:进程内部的一条执行路径,是系统进行调度的基本单位。在操作系统中将线程的实现分为三类:用户级线程、内核级线程、混合方式在linux下线程的实现:linux实现线程的机制非常独特。从内核的角度来说,它并没有线程这个概念。linux把所有的线程都当作进程来实现。内核并没有准备特别的调度算法...原创 2020-03-01 19:57:25 · 199 阅读 · 0 评论 -
【Linux】tcp套接字编程
Tcp编程。(套接字socket)部分代码:服务器端ser.c客户端cli.c运行结果:注意必须先运行服务器端。此时服务器端在accept()处阻塞。此时客户端在fgets()处阻塞,服务器端在recv()处阻塞。此时,客户端结束进程,服务器端则在循环语句作用下,再次在accept()处阻...原创 2020-02-29 14:23:22 · 343 阅读 · 0 评论 -
【Linux】gdb调试总结
在windows操作系统下,我们的运行程序有两个版本。debug开发调试版本得到的可执行文件.exe文件相对较大,其中包含调试信息。且不做任何优化,未开发人员提供强大的应用调试能力Release发行版本文件相对较小,不包含调试信息,并进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。在linux操作系统下,我们通过gcc来完成代码的编译链接,命令:...原创 2019-09-10 20:20:02 · 262 阅读 · 0 评论 -
【Linux】编译链接原理
通常的开发环境都是集成开发环境(IDE):编译链接一步完成(构建) gcc main.c被隐藏的过程:预处理(预编译)主要处理以#开头的预编译指令将所有的“#define”删除,并展开所有的宏定义 处理所有条件预编译指令,如“#if”、“#ifdef”、“#elif”、“#else”、“#endif” 处理“#include”预编译指令,将被包含的文件插入到该预编译指令的...原创 2019-09-10 20:36:31 · 245 阅读 · 0 评论