Linux
程序猿王老铁
心有猛虎,细嗅蔷薇
展开
-
网络基础 —select函数
1.函数原型int select(int n,fd_set * readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeout);2.函数说明select()用来等待文件描述词状态的改变。参数n代表最大的文件描述词加1,参数readfds、writefds和exceptfds 称为描述词组,是用来回传该描述...原创 2018-03-29 23:41:07 · 318 阅读 · 0 评论 -
网络基础—网络体系结构浅析
链路层将信息封装->发送->解封 ——–1500———- ARParp -a 缓存ARP帮忙找路,如果发不出去,回应需要ICMP协议ping命令网络层(IP层) IP协议头格式 IP层主机间通信路径的选择(路由)route -n 查看路由表信息 ifconfig -a eth0 查看自己的IP地址比较原机器和目标机器的网络号;相同就继...原创 2018-03-25 17:20:00 · 198 阅读 · 0 评论 -
网络基础—解决粘包问题
TCP是一种基于字节流的传输服务,因此,TCP所传输的数据是没有边界的。这不同于UDP提供基于消息的传输服务,其传输的数据是有边界的。TCP的发送方无法保证对等方每次接收到的是一个完整的数据包。 1、TCP粘包问题产生的原因SQ_SNDBUF 套接字本身有缓冲区大小的限制 (发送缓冲区、接受缓冲区)TCP传送的端 MSS大小限制链路层也有MTU大小限制,如果数据包大于>MTU要在...原创 2018-03-26 19:24:09 · 302 阅读 · 0 评论 -
网络基础—socket编程(2)-----基于UDP的客户端和服务器端的实现
基于UDP的socket 服务端和客户端实现——服务端#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <unistd.h>#include &a原创 2018-03-29 01:11:27 · 457 阅读 · 0 评论 -
网络基础—TCP协议简介
TCP协议TCP协议全称 “传输控制协议” ,顾名思义,要对数据的传输有一个详细的控制。 TCP协议段格式 1.16位端口号(port number) 源端口号和目的端口号 2.32位序号(sequence number) 第一个、序号值被初始化为某个随机值ISN(initial sequence number) TCP报文是字节流第1025~2048字节,序号值是ISN...原创 2018-07-13 11:32:38 · 339 阅读 · 0 评论 -
网络基础—三次握手与四次挥手
三次握手基本过程: 原理:第一次握手:客户端将SYN设置为1,表示要建立一个新的连接,并随机产生一个序列值Seq=M,并将该数据包发给服务器客户端进入FIN_SEND状态;第二次握手:服务器收到数据包后由标志位SYN=1知道客户端要建立一个连接,服务器将确认ACK和SYN都置为1,ack=M+1并随机产生一个Seq=N,并将该数据包发给客户端,服务器进入SYN_RCVD状态;第...原创 2018-07-13 12:16:44 · 412 阅读 · 0 评论 -
网络基础—TCP的超时重传、滑动窗口、拥塞控制、快重传和快恢复
TCP超时重传 原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。 影响超时重传机制协议效率的一个关键参数是重传超时时间(RTO,Retransmission TimeOut)。RTO的值被设置过大过小都会对协议造成不利影响。 (1)RTO设长了,重发就慢,没有效率,性能差。 ...原创 2018-07-13 14:50:05 · 738 阅读 · 0 评论 -
网络基础—TCP与UDP之间的区别
TCP与UDP区别 1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付 TCP通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控...原创 2018-07-13 15:16:28 · 254 阅读 · 0 评论 -
操作系统—进程PCB浅析
先了解PCB 进程就是一个运行当中的程序. 程序本来是存储在磁盘的,当我们需要执行它的时候,先把他读取到内存当中,再然后放入到寄存器中,最后让cpu执行程序,这个时候程序就变成了一个进程. 但是进程的生命周期其实不是很长,因为程序运行结束之后,进程的生命周期就终止了. 那么每一个进程肯定都是一个独立的个体,那么每个进程与进程直接肯定都拥有自己独有的一份管理自己的单独的任务...原创 2018-07-15 17:19:48 · 3391 阅读 · 0 评论 -
操作系统—物理内存与虚拟内存
概念解析物理内存,在应用中,自然是顾名思义,物理上,真实的插在板子上的内存是多大就是多大了。而在CPU中的概念,物理内存就是CPU的地址线可以直接进行寻址的内存空间大小。比如8086只有20根地址线,那么它的寻址空间就是1MB,我们就说8086能支持1MB的物理内存,及时我们安装了128M的内存条在板子上,我们也只能说8086拥有1MB的物理内存空间。同理我们现在大部分使用的是32位的机子,32位...原创 2018-07-15 17:12:17 · 12712 阅读 · 3 评论 -
网络基础—网络基本认识及相关接口
FTP协议传送文件: 1.文件名 2.大小 3.内容网络的分层结构: 1.TCP/IP因其低成本、不同平台间通信的可靠性,已成为局 域网和internet的标准协议。 1.TCP/IP分为四层,从上网下依次是: 应用层、传输层、网络层、网络接口层。 2.应用层: 使用应用层协议,将封装好的数据提交给传输层、或者从传输层接收数据并处理。 3.传输层: 实现应用...原创 2018-03-25 17:07:16 · 477 阅读 · 0 评论 -
正则表达式
shell编程之正则表达式部分正则表达式简介 正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找以及替换操作。正则表达式与通配符这里归纳一下:正则表达式:主要用来匹配文件内容,如greo包含匹配通配符:主要用来匹配文件名,如find完全匹配基础正则表达式字符截取命令cut [选项] 文件...原创 2018-08-01 17:24:21 · 741 阅读 · 0 评论 -
shell编程之条件判断与流程控制
shell编程之条件判断语句与流程控制简单点来说就是if,for,case,where之类的判断语句,然后结合一些shell命令来达到简化一些操作。下面的内容是重点,是条件判断的重点!!!刚开始不理解也没关系,下面有实例演示。按照文件类型判断判断格式 [ 需要进行判断的语句 ]按照文件权限进行判断两个文件之间进行比较两个整数之间比较字符串的判断...原创 2018-08-01 17:20:17 · 986 阅读 · 0 评论 -
Linux下makefile模板
提供一个简单的 Makefile 模板,根据需要作相应修改,可以适用于很多小项目。CC=gccSRCS=$(wildcard *.c */*.c)OBJS=$(patsubst %.c, %.o, $(SRCS))FLAG=-gNAME=$(wildcard *.c)TARGET=$(patsubst %.c, %, $(NAME))$(TARGET):$(OBJS) ...原创 2018-03-25 12:21:52 · 518 阅读 · 0 评论 -
网络基础—socket编程(1)
socket网络编程的含义 linux网络编程是通过socket(套接字)接口实现,socket是一种文件描述符(可类比文件操作),socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种”打开—读/写—关闭”模式的实现,服务器和客户端各自维护一个”文件”,在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。常见 socket 分类 ...原创 2018-03-29 00:00:29 · 272 阅读 · 0 评论 -
操作系统—进程概念
进程与程序 程序:完成特定任务的一系列指令集合。 进程:程序的一次动态执行过程。(用户角度) 进程是操作系统分配资源的基本单位,也是最小单位。每个进程有自己的独立地址空间和执行状态。 操作系统内核一定要有一个PCB来管理进程。(OS角度) 程序:代码段+数据段 进程:代码段+数据段+堆栈+PCB 进程和程序的区别: 进程是动态的。程序是静态的。 进...原创 2018-04-24 00:20:17 · 463 阅读 · 0 评论 -
Linux学习-----相关命令
1. 进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限 linux中的基本权限分为 r(可读) w(可写) x(可执行),我们要测试对于目录执行一些操作时,都需要哪些权限,首先我们创建一个默认目录,如上图所示,开头的drwxrwxr-x,d表示的是目录文件(类型),第一组rwx表示的是拥有者(u)的权限,...原创 2018-04-24 00:32:16 · 137 阅读 · 0 评论 -
Linux下实现进度条和彩色进度条
一、普通进度条#include #include int main() { char buf[101] = {}; int i =0; char *ptr = "|/-\\"; for(i = 0; i < 100 ; i++) { buf[i] = '#'; printf原创 2018-05-07 17:57:06 · 354 阅读 · 0 评论 -
操作系统—进程等待
进程等待的基础概念 进程等待就是为了同步父进程和子进程,如把运算放到子进程,赋值放到父进程,可能需要让父进程等待子进程运算结束.一个进程在 终止时会关闭所有的文件描述符,释放在用户空间分配的内存,但他的PCB还保留着,内核在其中保存了一些信息:如果是正常终止则 保存着退出状态,如果是异常退出则保存着导致该进程终止的信号是哪个. 这个进程的父进程可以调用wait或wait...原创 2018-07-15 09:17:57 · 2148 阅读 · 0 评论 -
访问空指针程序崩溃的底层剖析
在C/C++程序中,我们访问空指针,产生“不可预料”的错误,导致程序崩溃,那为什么程序会崩溃呢? 访问指针的时候虚拟地址就会向物理地址映射,此时页表会去查看这块地址,而这块地址被存放在只读区,当页表发现地址是无效的,就会反映给操作系统,操作系统就会发送11号信号终止此进程,所以进程异常终止程序崩溃在 Linux 系统中:访问空指针会产生 Segmentation fault 的错误。...原创 2018-08-04 18:53:59 · 3455 阅读 · 0 评论 -
shell变量
shell编程简介shell编程目的主要是为了简化管理人员的管理操作,算是为偷懒找了一个好的办法。变量定义 变量是计算机内存的单元,其中存放的值可以改变。 变量让你能够把程序中准备使用的每一段数据都赋值给一个简短、易于记忆的名字,因此他们十分有用。 变量的命名规则变量名必须以字母或下划线打头,名字中间只能由字母、数字和下划线组成。变量名的长度不得超过25...原创 2018-08-01 17:02:45 · 192 阅读 · 0 评论 -
shell运算符
declare [+/-][选项] 变量名-表示给变量设定类型属性+表示取消掉设定的类型属性选项:a 数组类型i 整数类型x 设为环境变量r 将该变量设定为只读属性,设定后无法被unset取消掉,无法修改其中的内容p 显示指定变量的被声明类型整数类型例子x=1y=2declare -i result=$x+$yecho $result#结果是3,不是之...原创 2018-08-01 17:08:36 · 145 阅读 · 0 评论 -
操作系统—进程的退出
进程退出linux下正常的退出方式:1.在main函数中使用了return返回. (return之后把控制权交给调用函数)2.调用exit()或者_exit; (exit()之后把控制权交给系统)异常退出:1.调用abort函数2.Ctrl+c,进程收到某个信号,而该信号是程序中止.不管是哪一种退出方式,最后都会执行内核中的同一代码,这段代码用来关闭进程所用到的已经打开的文件描述符所占用的内存和资...原创 2018-07-15 18:34:33 · 969 阅读 · 0 评论